Skip to content

Commit 6846e32

Browse files
committed
distro: enable containerid resource detector
1 parent 2e09f44 commit 6846e32

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

src/elasticotel/distro/__init__.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,13 @@ def _configure(self, **kwargs):
119119
os.environ.setdefault(OTEL_TRACES_SAMPLER, "parentbased_traceidratio")
120120
os.environ.setdefault(OTEL_TRACES_SAMPLER_ARG, "1.0")
121121

122-
base_resource_detectors = ["process_runtime", "os", "otel", "telemetry_distro", "service_instance"]
122+
base_resource_detectors = [
123+
"process_runtime",
124+
"os",
125+
"otel",
126+
"telemetry_distro",
127+
"service_instance",
128+
"containerid",
129+
]
123130
detectors = base_resource_detectors + get_cloud_resource_detectors()
124131
os.environ.setdefault(OTEL_EXPERIMENTAL_RESOURCE_DETECTORS, ",".join(detectors))

tests/distro/test_distro.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def test_default_configuration(self):
4949
self.assertEqual("otlp", os.environ.get(OTEL_LOGS_EXPORTER))
5050
self.assertEqual("grpc", os.environ.get(OTEL_EXPORTER_OTLP_PROTOCOL))
5151
self.assertEqual(
52-
"process_runtime,os,otel,telemetry_distro,service_instance,_gcp,aws_ec2,aws_ecs,aws_elastic_beanstalk,azure_app_service,azure_vm",
52+
"process_runtime,os,otel,telemetry_distro,service_instance,containerid,_gcp,aws_ec2,aws_ecs,aws_elastic_beanstalk,azure_app_service,azure_vm",
5353
os.environ.get(OTEL_EXPERIMENTAL_RESOURCE_DETECTORS),
5454
)
5555
self.assertEqual("always_off", os.environ.get(OTEL_METRICS_EXEMPLAR_FILTER))

tests/integration/test_integration.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,14 @@
1515
# limitations under the License.
1616

1717
import os.path
18+
from unittest import mock
1819

1920
import pytest
2021

2122
from .utils import ElasticIntegrationTestCase, OTEL_INSTRUMENTATION_VERSION, ROOT_DIR
2223

24+
CONTAINER_ID = "7be92808767a667f35c8505cbf40d14e931ef6db5b0210329cf193b15ba9d60"
25+
2326

2427
@pytest.mark.integration
2528
class IntegrationTestCase(ElasticIntegrationTestCase):
@@ -35,6 +38,12 @@ def script(self):
3538
cursor = connection.cursor()
3639
cursor.execute("CREATE TABLE movie(title, year, score)")
3740

41+
@mock.patch(
42+
"builtins.open",
43+
new_callable=mock.mock_open,
44+
read_data=f"""0::/system.slice/docker-{CONTAINER_ID}.scope
45+
""",
46+
)
3847
def test_traces_default_resource_attributes(self):
3948
stdout, stderr, returncode = self.run_script(self.script, wrapper_script="opentelemetry-instrument")
4049

@@ -48,6 +57,7 @@ def test_traces_default_resource_attributes(self):
4857
self.assertTrue(resource["process.runtime.version"])
4958
self.assertTrue(resource["os.type"])
5059
self.assertTrue(resource["os.version"])
60+
self.assertEqual(resource["container.id"], CONTAINER_ID)
5161

5262
def test_traces_sets_resource_attributes_from_env(self):
5363
env = {"OTEL_RESOURCE_ATTRIBUTES": "service.name=my-service"}

0 commit comments

Comments
 (0)