diff --git a/src/elasticotel/distro/__init__.py b/src/elasticotel/distro/__init__.py index 396496ee..b26073b1 100644 --- a/src/elasticotel/distro/__init__.py +++ b/src/elasticotel/distro/__init__.py @@ -119,6 +119,13 @@ def _configure(self, **kwargs): os.environ.setdefault(OTEL_TRACES_SAMPLER, "parentbased_traceidratio") os.environ.setdefault(OTEL_TRACES_SAMPLER_ARG, "1.0") - base_resource_detectors = ["process_runtime", "os", "otel", "telemetry_distro", "service_instance"] + base_resource_detectors = [ + "process_runtime", + "os", + "otel", + "telemetry_distro", + "service_instance", + "containerid", + ] detectors = base_resource_detectors + get_cloud_resource_detectors() os.environ.setdefault(OTEL_EXPERIMENTAL_RESOURCE_DETECTORS, ",".join(detectors)) diff --git a/tests/distro/test_distro.py b/tests/distro/test_distro.py index d35671ee..bc3a2b02 100644 --- a/tests/distro/test_distro.py +++ b/tests/distro/test_distro.py @@ -49,7 +49,7 @@ def test_default_configuration(self): self.assertEqual("otlp", os.environ.get(OTEL_LOGS_EXPORTER)) self.assertEqual("grpc", os.environ.get(OTEL_EXPORTER_OTLP_PROTOCOL)) self.assertEqual( - "process_runtime,os,otel,telemetry_distro,service_instance,_gcp,aws_ec2,aws_ecs,aws_elastic_beanstalk,azure_app_service,azure_vm", + "process_runtime,os,otel,telemetry_distro,service_instance,containerid,_gcp,aws_ec2,aws_ecs,aws_elastic_beanstalk,azure_app_service,azure_vm", os.environ.get(OTEL_EXPERIMENTAL_RESOURCE_DETECTORS), ) self.assertEqual("always_off", os.environ.get(OTEL_METRICS_EXEMPLAR_FILTER)) diff --git a/tests/integration/test_integration.py b/tests/integration/test_integration.py index 48c8bfbb..a32e5ea0 100644 --- a/tests/integration/test_integration.py +++ b/tests/integration/test_integration.py @@ -18,6 +18,10 @@ import pytest +from opentelemetry.resource.detector.containerid import ( + ContainerResourceDetector, +) + from .utils import ElasticIntegrationTestCase, OTEL_INSTRUMENTATION_VERSION, ROOT_DIR @@ -49,6 +53,10 @@ def test_traces_default_resource_attributes(self): self.assertTrue(resource["os.type"]) self.assertTrue(resource["os.version"]) + container_id = ContainerResourceDetector().detect().attributes.get("container.id") + if container_id: + self.assertEqual(resource["container.id"], container_id) + def test_traces_sets_resource_attributes_from_env(self): env = {"OTEL_RESOURCE_ATTRIBUTES": "service.name=my-service"} stdout, stderr, returncode = self.run_script(