Skip to content

Commit 1bb3dcb

Browse files
authored
feat(otel): Add resource to TracerProvider (#4550)
Closes #3149
1 parent cd422af commit 1bb3dcb

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

sentry_sdk/opentelemetry/consts.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@
2121
OTEL_SENTRY_CONTEXT = "otel"
2222
SPAN_ORIGIN = "auto.otel"
2323

24+
# resource semconv attributes
25+
# Not all of these are stable yet, so defining them here rather than importing.
26+
# https://github.com/open-telemetry/semantic-conventions/blob/main/docs/resource/README.md#service
27+
RESOURCE_SERVICE_NAME = "service.name"
28+
RESOURCE_SERVICE_NAMESPACE = "service.namespace"
29+
RESOURCE_SERVICE_VERSION = "service.version"
30+
2431

2532
class SentrySpanAttribute:
2633
DESCRIPTION = "sentry.description"

sentry_sdk/opentelemetry/tracing.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
from __future__ import annotations
22
from opentelemetry import trace
33
from opentelemetry.propagate import set_global_textmap
4+
from opentelemetry.sdk.resources import Resource
45
from opentelemetry.sdk.trace import TracerProvider, Span, ReadableSpan
56

7+
from sentry_sdk.consts import VERSION
68
from sentry_sdk.opentelemetry import (
79
SentryPropagator,
810
SentrySampler,
911
SentrySpanProcessor,
1012
)
13+
from sentry_sdk.opentelemetry.consts import (
14+
RESOURCE_SERVICE_NAME,
15+
RESOURCE_SERVICE_NAMESPACE,
16+
RESOURCE_SERVICE_VERSION,
17+
)
1118
from sentry_sdk.utils import logger
1219

1320

@@ -38,7 +45,16 @@ def setup_sentry_tracing() -> None:
3845

3946
else:
4047
logger.debug("[Tracing] No TracerProvider set, creating a new one")
41-
tracer_provider = TracerProvider(sampler=SentrySampler())
48+
tracer_provider = TracerProvider(
49+
sampler=SentrySampler(),
50+
resource=Resource.create(
51+
{
52+
RESOURCE_SERVICE_NAME: "sentry-python",
53+
RESOURCE_SERVICE_VERSION: VERSION,
54+
RESOURCE_SERVICE_NAMESPACE: "sentry",
55+
}
56+
),
57+
)
4258
trace.set_tracer_provider(tracer_provider)
4359

4460
try:

tests/opentelemetry/test_potel.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from opentelemetry import trace
33

44
import sentry_sdk
5-
from sentry_sdk.consts import SPANSTATUS
5+
from sentry_sdk.consts import SPANSTATUS, VERSION
66
from tests.conftest import ApproxDict
77

88

@@ -361,3 +361,13 @@ def test_potel_span_status(status_in, status_out):
361361
span.set_status(status_in)
362362

363363
assert span.status == status_out
364+
365+
366+
def test_otel_resource(sentry_init):
367+
sentry_init()
368+
369+
tracer_provider = trace.get_tracer_provider()
370+
resource_attrs = tracer_provider.resource.attributes
371+
assert resource_attrs["service.name"] == "sentry-python"
372+
assert resource_attrs["service.namespace"] == "sentry"
373+
assert resource_attrs["service.version"] == VERSION

0 commit comments

Comments
 (0)