From 2d448dcdb8ea05d57ba2798cc5524b61048004e3 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Mon, 28 Oct 2024 18:58:40 +0100 Subject: [PATCH 01/15] feat: add otel native pipelines --- kubernetes/elastic-helm/daemonset.yaml | 28 +- kubernetes/elastic-helm/deployment.yaml | 350 ++++++++++++++++++++++-- 2 files changed, 340 insertions(+), 38 deletions(-) diff --git a/kubernetes/elastic-helm/daemonset.yaml b/kubernetes/elastic-helm/daemonset.yaml index 148c4d2fba..817cc0be01 100644 --- a/kubernetes/elastic-helm/daemonset.yaml +++ b/kubernetes/elastic-helm/daemonset.yaml @@ -61,7 +61,7 @@ config: exporters: debug: verbosity: basic - elasticsearch: + elasticsearch/ecs: endpoints: - ${env:ELASTIC_ENDPOINT} api_key: ${env:ELASTIC_API_KEY} @@ -71,11 +71,22 @@ config: enabled: true mapping: mode: ecs + elasticsearch/otel: + endpoints: + - ${env:ELASTIC_ENDPOINT} + api_key: ${env:ELASTIC_API_KEY} + logs_dynamic_index: + enabled: true + metrics_dynamic_index: + enabled: true + mapping: + mode: otel processors: batch: {} elasticinframetrics: add_system_metrics: true add_k8s_metrics: true + drop_original: true resourcedetection/eks: detectors: [env, eks] timeout: 15s @@ -93,11 +104,6 @@ config: - key: service.name from_attribute: app.label.component action: insert - attributes/k8s_logs_dataset: - actions: - - key: data_stream.dataset - value: "kubernetes.container_logs" - action: upsert attributes/dataset: actions: - key: event.dataset @@ -311,12 +317,16 @@ config: pipelines: logs: receivers: [filelog] - processors: [batch, k8sattributes, resourcedetection/system, resourcedetection/eks, resourcedetection/gcp, resource/demo, resource/k8s, resource/cloud, attributes/k8s_logs_dataset] - exporters: [debug, elasticsearch] + processors: [batch, k8sattributes, resourcedetection/system, resourcedetection/eks, resourcedetection/gcp, resource/demo, resource/k8s, resource/cloud] + exporters: [debug, elasticsearch/otel] metrics: receivers: [hostmetrics, kubeletstats] processors: [batch, k8sattributes, elasticinframetrics, resourcedetection/system, resource/demo, resourcedetection/eks, resourcedetection/gcp, resource/k8s, resource/cloud, attributes/dataset, resource/process] - exporters: [debug, elasticsearch] + exporters: [debug, elasticsearch/ecs] + metrics/otel: + receivers: [kubeletstats] + processors: [batch, k8sattributes, resourcedetection/system, resource/demo, resourcedetection/eks, resourcedetection/gcp, resource/k8s, resource/cloud] + exporters: [debug, elasticsearch/otel] traces: null telemetry: metrics: diff --git a/kubernetes/elastic-helm/deployment.yaml b/kubernetes/elastic-helm/deployment.yaml index 9c32b5e3aa..d047925c70 100644 --- a/kubernetes/elastic-helm/deployment.yaml +++ b/kubernetes/elastic-helm/deployment.yaml @@ -37,6 +37,13 @@ opentelemetry-collector: repository: docker.elastic.co/beats/elastic-agent tag: 8.16.0-SNAPSHOT mode: "deployment" + resources: + limits: + cpu: 100m + memory: 500Mi + requests: + cpu: 100m + memory: 500Mi presets: kubernetesAttributes: enabled: true @@ -48,16 +55,16 @@ opentelemetry-collector: extraEnvs: - name: ELASTIC_AGENT_OTEL value: "true" - - name: ELASTIC_APM_ENDPOINT + - name: ELASTIC_ENDPOINT valueFrom: secretKeyRef: - name: elastic-secret - key: elastic_apm_endpoint - - name: ELASTIC_APM_SECRET_TOKEN + name: elastic-secret-ds + key: elastic_endpoint + - name: ELASTIC_API_KEY valueFrom: secretKeyRef: - name: elastic-secret - key: elastic_apm_secret_token + name: elastic-secret-ds + key: elastic_api_key alternateConfig: extensions: @@ -65,13 +72,254 @@ opentelemetry-collector: endpoint: ${env:MY_POD_IP}:13133 connectors: spanmetrics: {} + # [Signal To Metrics Connector](https://github.com/elastic/opentelemetry-collector-components/tree/main/connector/signaltometricsconnector) + signaltometrics: # Produces metrics from all signal types (traces, logs, or metrics). + logs: + - name: service_summary + include_resource_attributes: + - key: service.name + - key: deployment.environment # service.environment + - key: telemetry.sdk.language # service.language.name + - key: agent.name # set via elastictraceprocessor + attributes: + - key: metricset.name + default_value: service_summary + sum: + value: "1" + datapoints: + - name: service_summary + include_resource_attributes: + - key: service.name + - key: deployment.environment # service.environment + - key: telemetry.sdk.language # service.language.name + - key: agent.name # set via elastictraceprocessor + attributes: + - key: metricset.name + default_value: service_summary + sum: + value: "1" + spans: + - name: service_summary + include_resource_attributes: + - key: service.name + - key: deployment.environment # service.environment + - key: telemetry.sdk.language # service.language.name + - key: agent.name # set via elastictraceprocessor + attributes: + - key: metricset.name + default_value: service_summary + sum: + value: Int(AdjustedCount()) + - name: transaction.duration.histogram + description: APM service transaction aggregated metrics as histogram + include_resource_attributes: + - key: service.name + - key: deployment.environment # service.environment + - key: telemetry.sdk.language # service.language.name + - key: agent.name # set via elastictraceprocessor + attributes: + - key: transaction.root + - key: transaction.type + - key: metricset.name + default_value: service_transaction + - key: elasticsearch.mapping.hints + default_value: [_doc_count] + unit: us + exponential_histogram: + value: Microseconds(end_time - start_time) + - name: transaction.duration.summary + description: APM service transaction aggregated metrics as summary + include_resource_attributes: + - key: service.name + - key: deployment.environment # service.environment + - key: telemetry.sdk.language # service.language.name + - key: agent.name # set via elastictraceprocessor + attributes: + - key: transaction.root + - key: transaction.type + - key: metricset.name + default_value: service_transaction + - key: elasticsearch.mapping.hints + default_value: [aggregate_metric_double] + unit: us + histogram: + buckets: [1] + value: Microseconds(end_time - start_time) + - name: transaction.duration.histogram + description: APM transaction aggregated metrics as histogram + ephemeral_resource_attribute: true + include_resource_attributes: + - key: service.name + - key: deployment.environment # service.environment + - key: telemetry.sdk.language # service.language.name + - key: agent.name # set via elastictraceprocessor + - key: container.id + - key: k8s.pod.name + - key: service.version + - key: service.instance.id # service.node.name + - key: process.runtime.name # service.runtime.name + - key: process.runtime.version # service.runtime.version + - key: telemetry.sdk.version # service.language.version?? + - key: host.name + - key: os.type # host.os.platform + - key: faas.instance + - key: faas.name + - key: faas.version + - key: cloud.provider + - key: cloud.region + - key: cloud.availability_zone + - key: cloud.platform # cloud.servicename + - key: cloud.account.id + attributes: + - key: transaction.root + - key: transaction.name + - key: transaction.type + - key: transaction.result + - key: event.outcome + - key: metricset.name + default_value: transaction + - key: elasticsearch.mapping.hints + default_value: [_doc_count] + unit: us + exponential_histogram: + value: Microseconds(end_time - start_time) + - name: transaction.duration.summary + description: APM transaction aggregated metrics as summary + ephemeral_resource_attribute: true + include_resource_attributes: + - key: service.name + - key: deployment.environment # service.environment + - key: telemetry.sdk.language # service.language.name + - key: agent.name # set via elastictraceprocessor + - key: container.id + - key: k8s.pod.name + - key: service.version + - key: service.instance.id # service.node.name + - key: process.runtime.name # service.runtime.name + - key: process.runtime.version # service.runtime.version + - key: telemetry.sdk.version # service.language.version?? + - key: host.name + - key: os.type # host.os.platform + - key: faas.instance + - key: faas.name + - key: faas.version + - key: cloud.provider + - key: cloud.region + - key: cloud.availability_zone + - key: cloud.platform # cloud.servicename + - key: cloud.account.id + attributes: + - key: transaction.root + - key: transaction.name + - key: transaction.type + - key: transaction.result + - key: event.outcome + - key: metricset.name + default_value: transaction + - key: elasticsearch.mapping.hints + default_value: [aggregate_metric_double] + unit: us + histogram: + buckets: [1] + value: Microseconds(end_time - start_time) + - name: span.destination.service.response_time.sum.us + description: APM span destination metrics + ephemeral_resource_attribute: true + include_resource_attributes: + - key: service.name + - key: deployment.environment # service.environment + - key: telemetry.sdk.language # service.language.name + - key: agent.name # set via elastictraceprocessor + attributes: + - key: span.name + - key: event.outcome + - key: service.target.type + - key: service.target.name + - key: span.destination.service.resource + - key: metricset.name + default_value: service_destination + unit: us + sum: + value: Double(Microseconds(end_time - start_time)) + - name: span.destination.service.response_time.count + description: APM span destination metrics + ephemeral_resource_attribute: true + include_resource_attributes: + - key: service.name + - key: deployment.environment # service.environment + - key: telemetry.sdk.language # service.language.name + - key: agent.name # set via elastictraceprocessor + attributes: + - key: span.name + - key: event.outcome + - key: service.target.type + - key: service.target.name + - key: span.destination.service.resource + - key: metricset.name + default_value: service_destination + sum: + value: Int(AdjustedCount()) + # event.success_count is populated using 2 metric definition with different conditions + # and value for the histogram bucket based on event outcome. Both metric definition + # are created using same name and attribute and will result in a single histogram. + # We use mapping hint of aggregate_metric_double, so, only the sum and the count + # values are required and the actual histogram bucket is ignored. + - name: event.success_count + description: Success count as a metric for service transaction + include_resource_attributes: + - key: service.name + - key: deployment.environment # service.environment + - key: telemetry.sdk.language # service.language.name + - key: agent.name # set via elastictraceprocessor + attributes: + - key: transaction.root + - key: transaction.type + - key: metricset.name + default_value: service_transaction + - key: elasticsearch.mapping.hints + default_value: [aggregate_metric_double] + conditions: + - attributes["event.outcome"] != nil and attributes["event.outcome"] == "success" + unit: us + histogram: + buckets: [1] + count: Int(AdjustedCount()) + value: Int(AdjustedCount()) + - name: event.success_count + description: Success count as a metric for service transaction + include_resource_attributes: + - key: service.name + - key: deployment.environment # service.environment + - key: telemetry.sdk.language # service.language.name + - key: agent.name # set via elastictraceprocessor + attributes: + - key: transaction.root + - key: transaction.type + - key: metricset.name + default_value: service_transaction + - key: elasticsearch.mapping.hints + default_value: [aggregate_metric_double] + conditions: + - attributes["event.outcome"] != nil and attributes["event.outcome"] != "success" + unit: us + histogram: + buckets: [0] + count: Int(AdjustedCount()) + value: Double(0) exporters: debug: {} - otlp/elastic: - endpoint: ${env:ELASTIC_APM_ENDPOINT} - compression: none - headers: - Authorization: ${env:ELASTIC_APM_SECRET_TOKEN} + elasticsearch/otel: + endpoints: + - ${env:ELASTIC_ENDPOINT} + api_key: ${env:ELASTIC_API_KEY} + logs_dynamic_index: + enabled: true + metrics_dynamic_index: + enabled: true + traces_dynamic_index: + enabled: true + mapping: + mode: otel processors: batch: {} resource: @@ -79,6 +327,36 @@ opentelemetry-collector: - key: deployment.environment value: "opentelemetry-demo" action: upsert + # Transform processor to remove services high cardinality on span names + transform/services: + error_mode: ignore + trace_statements: + - context: span + conditions: + - IsMatch(name, "^[A-Z]+\\s+.+") + statements: + - merge_maps(attributes, ExtractPatterns(name, "^(?P\\S+)"), "upsert") + - set(name, attributes["method"]) + # [Elastic Trace Processor](https://github.com/elastic/opentelemetry-collector-components/tree/main/processor/elastictraceprocessor) + elastictrace: {} # The processor enriches traces with elastic specific requirements. + # [LSM Interval Processor](https://github.com/elastic/opentelemetry-collector-components/tree/main/processor/lsmintervalprocessor) + lsminterval: + intervals: + - duration: 1m + statements: + - set(resource.attributes["metricset.interval"], "1m") + - set(attributes["data_stream.dataset"], Concat([attributes["metricset.name"], "1m"], ".")) + - set(attributes["processor.event"], "metric") + - duration: 10m + statements: + - set(resource.attributes["metricset.interval"], "10m") + - set(attributes["data_stream.dataset"], Concat([attributes["metricset.name"], "10m"], ".")) + - set(attributes["processor.event"], "metric") + - duration: 60m + statements: + - set(resource.attributes["metricset.interval"], "60m") + - set(attributes["data_stream.dataset"], Concat([attributes["metricset.name"], "60m"], ".")) + - set(attributes["processor.event"], "metric") receivers: httpcheck/frontendproxy: targets: @@ -99,34 +377,48 @@ opentelemetry-collector: pipelines: logs: exporters: - - debug - - otlp/elastic + - debug + - elasticsearch/otel + - signaltometrics processors: - - batch - - resource + - batch + - resource receivers: - - otlp + - otlp metrics: exporters: - - otlp/elastic - - debug + - elasticsearch/otel + - signaltometrics + - debug processors: - - batch - - resource + - batch + - resource receivers: - - httpcheck/frontendproxy - - otlp - - spanmetrics + - httpcheck/frontendproxy + - otlp + - spanmetrics traces: exporters: - - otlp/elastic - - debug - - spanmetrics + - elasticsearch/otel + - debug + - spanmetrics + - signaltometrics processors: - - batch - - resource + - transform/services + - batch + - elastictrace + - resource + receivers: + - otlp + metrics/aggregated-otel-metrics: receivers: - - otlp + - signaltometrics + processors: + - batch + - lsminterval + exporters: + - debug + - elasticsearch/otel telemetry: metrics: address: ${env:MY_POD_IP}:8888 From a8d7851c6566e938963d3fa238a16bd227c527d0 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Tue, 29 Oct 2024 12:56:51 +0100 Subject: [PATCH 02/15] add volume for lsminterval processor --- kubernetes/elastic-helm/deployment.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/kubernetes/elastic-helm/deployment.yaml b/kubernetes/elastic-helm/deployment.yaml index d047925c70..033a2ae68b 100644 --- a/kubernetes/elastic-helm/deployment.yaml +++ b/kubernetes/elastic-helm/deployment.yaml @@ -52,6 +52,13 @@ opentelemetry-collector: clusterMetrics: enabled: true + extraVolumes: + - name: apmdb + + extraVolumeMounts: + - name: apmdb + mountPath: /apmdb + extraEnvs: - name: ELASTIC_AGENT_OTEL value: "true" @@ -341,6 +348,7 @@ opentelemetry-collector: elastictrace: {} # The processor enriches traces with elastic specific requirements. # [LSM Interval Processor](https://github.com/elastic/opentelemetry-collector-components/tree/main/processor/lsmintervalprocessor) lsminterval: + directory: "/apmdb" intervals: - duration: 1m statements: From 46264c897d8caace33ea97bf4268fbd0096c1c44 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Thu, 31 Oct 2024 14:25:11 +0100 Subject: [PATCH 03/15] fix: increase resource limits --- kubernetes/elastic-helm/deployment.yaml | 30 +++++++++++-------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/kubernetes/elastic-helm/deployment.yaml b/kubernetes/elastic-helm/deployment.yaml index 033a2ae68b..9175f931d3 100644 --- a/kubernetes/elastic-helm/deployment.yaml +++ b/kubernetes/elastic-helm/deployment.yaml @@ -37,13 +37,14 @@ opentelemetry-collector: repository: docker.elastic.co/beats/elastic-agent tag: 8.16.0-SNAPSHOT mode: "deployment" + useGOMEMLIMIT: false resources: limits: - cpu: 100m - memory: 500Mi + cpu: 1500m + memory: 1500Mi requests: - cpu: 100m - memory: 500Mi + cpu: 250m + memory: 1500Mi presets: kubernetesAttributes: enabled: true @@ -52,13 +53,6 @@ opentelemetry-collector: clusterMetrics: enabled: true - extraVolumes: - - name: apmdb - - extraVolumeMounts: - - name: apmdb - mountPath: /apmdb - extraEnvs: - name: ELASTIC_AGENT_OTEL value: "true" @@ -72,6 +66,12 @@ opentelemetry-collector: secretKeyRef: name: elastic-secret-ds key: elastic_api_key + - name: GOMAXPROCS + valueFrom: + resourceFieldRef: + resource: limits.cpu + - name: GOMEMLIMIT + value: "1025MiB" alternateConfig: extensions: @@ -134,6 +134,7 @@ opentelemetry-collector: unit: us exponential_histogram: value: Microseconds(end_time - start_time) + max_size: 2 - name: transaction.duration.summary description: APM service transaction aggregated metrics as summary include_resource_attributes: @@ -190,6 +191,7 @@ opentelemetry-collector: unit: us exponential_histogram: value: Microseconds(end_time - start_time) + max_size: 2 - name: transaction.duration.summary description: APM transaction aggregated metrics as summary ephemeral_resource_attribute: true @@ -348,7 +350,6 @@ opentelemetry-collector: elastictrace: {} # The processor enriches traces with elastic specific requirements. # [LSM Interval Processor](https://github.com/elastic/opentelemetry-collector-components/tree/main/processor/lsmintervalprocessor) lsminterval: - directory: "/apmdb" intervals: - duration: 1m statements: @@ -360,11 +361,6 @@ opentelemetry-collector: - set(resource.attributes["metricset.interval"], "10m") - set(attributes["data_stream.dataset"], Concat([attributes["metricset.name"], "10m"], ".")) - set(attributes["processor.event"], "metric") - - duration: 60m - statements: - - set(resource.attributes["metricset.interval"], "60m") - - set(attributes["data_stream.dataset"], Concat([attributes["metricset.name"], "60m"], ".")) - - set(attributes["processor.event"], "metric") receivers: httpcheck/frontendproxy: targets: From e26f4b338522852485aa8a97aa0502ffa8e858f9 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Mon, 4 Nov 2024 11:39:01 +0100 Subject: [PATCH 04/15] docs: add architecture k8s diagram --- .github/README.md | 4 +++- .../elastic-helm/elastic-architecture.png | Bin 0 -> 623779 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 kubernetes/elastic-helm/elastic-architecture.png diff --git a/.github/README.md b/.github/README.md index b683369a40..c4630aa755 100644 --- a/.github/README.md +++ b/.github/README.md @@ -27,6 +27,8 @@ Additionally, the OpenTelemetry Contrib collector has also been changed to the [ - Set up [kubectl](https://kubernetes.io/docs/reference/kubectl/). - Set up [Helm](https://helm.sh/). +![Deployment architecture](../kubernetes/elastic-helm/elastic-architecture.png "K8s architecture") + ### Start the Demo 1. Setup Elastic Observability on Elastic Cloud. 1. Create a secret in Kubernetes with the following command. @@ -47,7 +49,7 @@ Additionally, the OpenTelemetry Contrib collector has also been changed to the [ ``` # clone this repository git clone https://github.com/elastic/opentelemetry-demo - + # switch to the kubernetes/elastic-helm directory cd opentelemetry-demo/kubernetes/elastic-helm diff --git a/kubernetes/elastic-helm/elastic-architecture.png b/kubernetes/elastic-helm/elastic-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..8e7d022749000ebfd45ef5b1f60fe4ec2a2b5c1c GIT binary patch literal 623779 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