From 6a6c3811aba3d126b4138af1bc7f7c95006c5b9e Mon Sep 17 00:00:00 2001 From: Sanket Date: Sun, 11 May 2025 01:27:39 +0530 Subject: [PATCH 1/3] correct usage of Resource class and attributes in examples --- docs/examples/basic_tracer/resources.py | 4 ++-- docs/examples/fork-process-model/README.rst | 8 ++++---- .../fork-process-model/flask-gunicorn/gunicorn.conf.py | 4 ++-- docs/examples/fork-process-model/flask-uwsgi/app.py | 4 ++-- docs/examples/logs/example.py | 10 +++++++--- 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/docs/examples/basic_tracer/resources.py b/docs/examples/basic_tracer/resources.py index 87853a8f66b..34e2f7faa4c 100644 --- a/docs/examples/basic_tracer/resources.py +++ b/docs/examples/basic_tracer/resources.py @@ -13,7 +13,7 @@ # limitations under the License. from opentelemetry import trace -from opentelemetry.sdk.resources import Resource +from opentelemetry.sdk.resources import SERVICE_NAME, Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import ( BatchSpanProcessor, @@ -21,7 +21,7 @@ ) # Use Resource.create() instead of constructor directly -resource = Resource.create({"service.name": "basic_service"}) +resource = Resource.create({SERVICE_NAME: "basic_service"}) trace.set_tracer_provider(TracerProvider(resource=resource)) diff --git a/docs/examples/fork-process-model/README.rst b/docs/examples/fork-process-model/README.rst index 2f33bcf500a..7cada8d1e6c 100644 --- a/docs/examples/fork-process-model/README.rst +++ b/docs/examples/fork-process-model/README.rst @@ -17,7 +17,7 @@ Gunicorn post_fork hook from opentelemetry import trace from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter - from opentelemetry.sdk.resources import Resource + from opentelemetry.sdk.resources import SERVICE_NAME, Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor @@ -26,7 +26,7 @@ Gunicorn post_fork hook server.log.info("Worker spawned (pid: %s)", worker.pid) resource = Resource.create(attributes={ - "service.name": "api-service" + SERVICE_NAME: "api-service" }) trace.set_tracer_provider(TracerProvider(resource=resource)) @@ -45,7 +45,7 @@ uWSGI postfork decorator from opentelemetry import trace from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter - from opentelemetry.sdk.resources import Resource + from opentelemetry.sdk.resources import SERVICE_NAME, Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor @@ -53,7 +53,7 @@ uWSGI postfork decorator @postfork def init_tracing(): resource = Resource.create(attributes={ - "service.name": "api-service" + SERVICE_NAME: "api-service" }) trace.set_tracer_provider(TracerProvider(resource=resource)) diff --git a/docs/examples/fork-process-model/flask-gunicorn/gunicorn.conf.py b/docs/examples/fork-process-model/flask-gunicorn/gunicorn.conf.py index 34b4591596c..608fcb5eb23 100644 --- a/docs/examples/fork-process-model/flask-gunicorn/gunicorn.conf.py +++ b/docs/examples/fork-process-model/flask-gunicorn/gunicorn.conf.py @@ -21,7 +21,7 @@ ) from opentelemetry.sdk.metrics import MeterProvider from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader -from opentelemetry.sdk.resources import Resource +from opentelemetry.sdk.resources import SERVICE_NAME, Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor @@ -48,7 +48,7 @@ def post_fork(server, worker): resource = Resource.create( attributes={ - "service.name": "api-service", + SERVICE_NAME: "api-service", # If workers are not distinguished within attributes, traces and # metrics exported from each worker will be indistinguishable. While # not necessarily an issue for traces, it is confusing for almost diff --git a/docs/examples/fork-process-model/flask-uwsgi/app.py b/docs/examples/fork-process-model/flask-uwsgi/app.py index 1191bcc30e0..5256dbe5253 100644 --- a/docs/examples/fork-process-model/flask-uwsgi/app.py +++ b/docs/examples/fork-process-model/flask-uwsgi/app.py @@ -21,7 +21,7 @@ OTLPSpanExporter, ) from opentelemetry.instrumentation.flask import FlaskInstrumentor -from opentelemetry.sdk.resources import Resource +from opentelemetry.sdk.resources import SERVICE_NAME, Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor @@ -34,7 +34,7 @@ @postfork def init_tracing(): - resource = Resource.create(attributes={"service.name": "api-service"}) + resource = Resource.create(attributes={SERVICE_NAME: "api-service"}) trace.set_tracer_provider(TracerProvider(resource=resource)) # This uses insecure connection for the purpose of example. Please see the diff --git a/docs/examples/logs/example.py b/docs/examples/logs/example.py index c782d457533..e0febdfb31f 100644 --- a/docs/examples/logs/example.py +++ b/docs/examples/logs/example.py @@ -7,7 +7,11 @@ ) from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler from opentelemetry.sdk._logs.export import BatchLogRecordProcessor -from opentelemetry.sdk.resources import Resource +from opentelemetry.sdk.resources import ( + SERVICE_INSTANCE_ID, + SERVICE_NAME, + Resource, +) from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import ( BatchSpanProcessor, @@ -22,8 +26,8 @@ logger_provider = LoggerProvider( resource=Resource.create( { - "service.name": "shoppingcart", - "service.instance.id": "instance-12", + SERVICE_NAME: "shoppingcart", + SERVICE_INSTANCE_ID: "instance-12", } ), ) From 285a725d041269d0740debcdacb1f65632eb5f74 Mon Sep 17 00:00:00 2001 From: Sanket Date: Thu, 15 May 2025 00:11:15 +0530 Subject: [PATCH 2/3] fixed all the examples with incorrect Resource creationalso resolved the requested changes --- docs/examples/basic_tracer/resources.py | 5 +++-- docs/examples/fork-process-model/README.rst | 5 +++-- .../flask-gunicorn/gunicorn.conf.py | 5 +++-- docs/examples/fork-process-model/flask-uwsgi/app.py | 7 +++++-- docs/examples/logs/example.py | 11 ++++------- docs/examples/opencensus-shim/app.py | 5 +++-- 6 files changed, 21 insertions(+), 17 deletions(-) diff --git a/docs/examples/basic_tracer/resources.py b/docs/examples/basic_tracer/resources.py index 34e2f7faa4c..ad26430d75d 100644 --- a/docs/examples/basic_tracer/resources.py +++ b/docs/examples/basic_tracer/resources.py @@ -13,15 +13,16 @@ # limitations under the License. from opentelemetry import trace -from opentelemetry.sdk.resources import SERVICE_NAME, Resource +from opentelemetry.sdk.resources import Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import ( BatchSpanProcessor, ConsoleSpanExporter, ) +from opentelemetry.semconv.resource import ResourceAttributes # Use Resource.create() instead of constructor directly -resource = Resource.create({SERVICE_NAME: "basic_service"}) +resource = Resource.create({ResourceAttributes.SERVICE_NAME: "basic_service"}) trace.set_tracer_provider(TracerProvider(resource=resource)) diff --git a/docs/examples/fork-process-model/README.rst b/docs/examples/fork-process-model/README.rst index 7cada8d1e6c..d10a3279e3f 100644 --- a/docs/examples/fork-process-model/README.rst +++ b/docs/examples/fork-process-model/README.rst @@ -45,7 +45,8 @@ uWSGI postfork decorator from opentelemetry import trace from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter - from opentelemetry.sdk.resources import SERVICE_NAME, Resource + from opentelemetry.sdk.resources import Resource + from opentelemetry.semconv.resource import ResourceAttributes from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor @@ -53,7 +54,7 @@ uWSGI postfork decorator @postfork def init_tracing(): resource = Resource.create(attributes={ - SERVICE_NAME: "api-service" + ResourceAttributes.SERVICE_NAME: "api-service" }) trace.set_tracer_provider(TracerProvider(resource=resource)) diff --git a/docs/examples/fork-process-model/flask-gunicorn/gunicorn.conf.py b/docs/examples/fork-process-model/flask-gunicorn/gunicorn.conf.py index 608fcb5eb23..11ad901957a 100644 --- a/docs/examples/fork-process-model/flask-gunicorn/gunicorn.conf.py +++ b/docs/examples/fork-process-model/flask-gunicorn/gunicorn.conf.py @@ -21,9 +21,10 @@ ) from opentelemetry.sdk.metrics import MeterProvider from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader -from opentelemetry.sdk.resources import SERVICE_NAME, Resource +from opentelemetry.sdk.resources import Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor +from opentelemetry.semconv.resource import ResourceAttributes bind = "127.0.0.1:8000" @@ -48,7 +49,7 @@ def post_fork(server, worker): resource = Resource.create( attributes={ - SERVICE_NAME: "api-service", + ResourceAttributes.SERVICE_NAME: "api-service", # If workers are not distinguished within attributes, traces and # metrics exported from each worker will be indistinguishable. While # not necessarily an issue for traces, it is confusing for almost diff --git a/docs/examples/fork-process-model/flask-uwsgi/app.py b/docs/examples/fork-process-model/flask-uwsgi/app.py index 5256dbe5253..4b0674ec742 100644 --- a/docs/examples/fork-process-model/flask-uwsgi/app.py +++ b/docs/examples/fork-process-model/flask-uwsgi/app.py @@ -21,9 +21,10 @@ OTLPSpanExporter, ) from opentelemetry.instrumentation.flask import FlaskInstrumentor -from opentelemetry.sdk.resources import SERVICE_NAME, Resource +from opentelemetry.sdk.resources import Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor +from opentelemetry.semconv.resource import ResourceAttributes application = flask.Flask(__name__) @@ -34,7 +35,9 @@ @postfork def init_tracing(): - resource = Resource.create(attributes={SERVICE_NAME: "api-service"}) + resource = Resource.create( + attributes={ResourceAttributes.SERVICE_NAME: "api-service"} + ) trace.set_tracer_provider(TracerProvider(resource=resource)) # This uses insecure connection for the purpose of example. Please see the diff --git a/docs/examples/logs/example.py b/docs/examples/logs/example.py index e0febdfb31f..955eaea9e26 100644 --- a/docs/examples/logs/example.py +++ b/docs/examples/logs/example.py @@ -7,16 +7,13 @@ ) from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler from opentelemetry.sdk._logs.export import BatchLogRecordProcessor -from opentelemetry.sdk.resources import ( - SERVICE_INSTANCE_ID, - SERVICE_NAME, - Resource, -) +from opentelemetry.sdk.resources import Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import ( BatchSpanProcessor, ConsoleSpanExporter, ) +from opentelemetry.semconv.resource import ResourceAttributes trace.set_tracer_provider(TracerProvider()) trace.get_tracer_provider().add_span_processor( @@ -26,8 +23,8 @@ logger_provider = LoggerProvider( resource=Resource.create( { - SERVICE_NAME: "shoppingcart", - SERVICE_INSTANCE_ID: "instance-12", + ResourceAttributes.SERVICE_NAME: "shoppingcart", + ResourceAttributes.SERVICE_INSTANCE_ID: "instance-12", } ), ) diff --git a/docs/examples/opencensus-shim/app.py b/docs/examples/opencensus-shim/app.py index 9103ba53337..95f97d5acb5 100644 --- a/docs/examples/opencensus-shim/app.py +++ b/docs/examples/opencensus-shim/app.py @@ -25,15 +25,16 @@ from opentelemetry.sdk.resources import Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor +from opentelemetry.semconv.resource import ResourceAttributes from opentelemetry.shim.opencensus import install_shim DB = "example.db" # Set up OpenTelemetry tracer_provider = TracerProvider( - resource=Resource( + resource=Resource.create( { - "service.name": "opencensus-shim-example-flask", + ResourceAttributes.SERVICE_NAME: "opencensus-shim-example-flask", } ) ) From c52903af6d1ec11bef216e5b34dd6df2a93761cc Mon Sep 17 00:00:00 2001 From: Sanket Date: Thu, 15 May 2025 01:10:43 +0530 Subject: [PATCH 3/3] minor fixes in some examples --- docs/examples/fork-process-model/README.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/examples/fork-process-model/README.rst b/docs/examples/fork-process-model/README.rst index d10a3279e3f..d94d8539ec5 100644 --- a/docs/examples/fork-process-model/README.rst +++ b/docs/examples/fork-process-model/README.rst @@ -17,16 +17,17 @@ Gunicorn post_fork hook from opentelemetry import trace from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter - from opentelemetry.sdk.resources import SERVICE_NAME, Resource + from opentelemetry.sdk.resources import Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor + from opentelemetry.semconv.resource import ResourceAttributes def post_fork(server, worker): server.log.info("Worker spawned (pid: %s)", worker.pid) resource = Resource.create(attributes={ - SERVICE_NAME: "api-service" + ResourceAttributes.SERVICE_NAME: "api-service" }) trace.set_tracer_provider(TracerProvider(resource=resource))