diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d01d7b28567..17e48009f48 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,7 +50,9 @@ jobs: with: go-version-file: go.mod cache: true - - run: go test -v ./... + - env: + CGO_ENABLED: "0" + run: go test -v ./... system-test: runs-on: ubuntu-latest diff --git a/docker-compose.yml b/docker-compose.yml index bdc892d151e..283f82580ec 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,7 +10,7 @@ x-logging: &default-logging max-size: "1g" services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0-6aa5b988-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0-abc4d077-SNAPSHOT ports: - 9200:9200 healthcheck: @@ -41,7 +41,7 @@ services: logging: *default-logging kibana: - image: docker.elastic.co/kibana/kibana:8.11.0-6aa5b988-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.11.0-abc4d077-SNAPSHOT ports: - 5601:5601 healthcheck: @@ -60,7 +60,7 @@ services: logging: *default-logging metricbeat: - image: docker.elastic.co/beats/metricbeat:8.11.0-6aa5b988-SNAPSHOT + image: docker.elastic.co/beats/metricbeat:8.11.0-abc4d077-SNAPSHOT environment: ELASTICSEARCH_HOSTS: '["http://elasticsearch:9200"]' ELASTICSEARCH_USERNAME: "${KIBANA_ES_USER:-admin}" diff --git a/docs/otel-limitations.asciidoc b/docs/otel-limitations.asciidoc index 82f29237e26..dd2e0ee9280 100644 --- a/docs/otel-limitations.asciidoc +++ b/docs/otel-limitations.asciidoc @@ -37,3 +37,20 @@ The https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/ was deprecated in 7.13 and replaced by the native support of the OpenTelemetry Line Protocol in Elastic {observability} (OTLP). To learn more, see https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/elasticexporter#migration[migration]. + +[float] +[[open-telemetry-tbs]] +==== OpenTelemetry's tail-based sampling + +Tail-based sampling allows to make sampling decisions after all spans of a trace have been completed. +This allows for more powerful and informed sampling rules. + +When using OpenTelemetry with Elastic APM, there are two different implementations available for tail-based sampling: + +* Tail-based sampling using the https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/tailsamplingprocessor[tailsamplingprocessor] in the OpenTelemetry Collector +* Native <> + +Using the https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/tailsamplingprocessor[tailsamplingprocessor] in the OpenTelemetry Collector comes with an important limitation. Elastic's APM backend calculates span and transaction metrics based on the incoming span events. +These metrics are accurate for 100% sampling scenarios. In scenarios with probabilistic sampling, Elastic's APM backend is being informed about the sampling rate of spans and can extrapolate throughput metrics based on the incoming, partial data. However, with tail-based sampling there's no clear probability for sampling decisions as the rules can be more complex and the OpenTelemetry Collector does not provide sampling probability information to the Elastic backend that could be used for extrapolation of data. Therefore, there's no way for Elastic APM to properly extrapolate throughput and count metrics that are derived from span events that have been tail-based sampled in the OpenTelemetry Collector. In these scenarios, derived throughput and count metrics are likely to be inaccurate. + +Therefore, we recommend using Elastic's native tail-based smapling when integrating with OpenTelemetry. diff --git a/testing/infra/k8s/base/stack/apm-server.yaml b/testing/infra/k8s/base/stack/apm-server.yaml index 6fae287f5cd..c3f01d12802 100644 --- a/testing/infra/k8s/base/stack/apm-server.yaml +++ b/testing/infra/k8s/base/stack/apm-server.yaml @@ -3,7 +3,7 @@ kind: ApmServer metadata: name: apm-server spec: - version: 8.11.0-6aa5b988-SNAPSHOT + version: 8.11.0-abc4d077-SNAPSHOT count: 1 http: tls: diff --git a/testing/infra/k8s/base/stack/elasticsearch.yaml b/testing/infra/k8s/base/stack/elasticsearch.yaml index 335d330ed42..c436e05b312 100644 --- a/testing/infra/k8s/base/stack/elasticsearch.yaml +++ b/testing/infra/k8s/base/stack/elasticsearch.yaml @@ -3,7 +3,7 @@ kind: Elasticsearch metadata: name: elasticsearch spec: - version: 8.11.0-6aa5b988-SNAPSHOT + version: 8.11.0-abc4d077-SNAPSHOT auth: fileRealm: - secretName: elasticsearch-admin diff --git a/testing/infra/k8s/base/stack/kibana.yaml b/testing/infra/k8s/base/stack/kibana.yaml index 5376efc8a7b..f1d0bbb8824 100644 --- a/testing/infra/k8s/base/stack/kibana.yaml +++ b/testing/infra/k8s/base/stack/kibana.yaml @@ -3,7 +3,7 @@ kind: Kibana metadata: name: kibana spec: - version: 8.11.0-6aa5b988-SNAPSHOT + version: 8.11.0-abc4d077-SNAPSHOT count: 1 elasticsearchRef: name: elasticsearch