Skip to content

Commit 4f1aa28

Browse files
authored
Use SDK providers in example code (open-telemetry#488)
1 parent 68e909b commit 4f1aa28

File tree

14 files changed

+47
-28
lines changed

14 files changed

+47
-28
lines changed

docs/examples/metrics/observer_example.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,15 @@
1919
import psutil
2020

2121
from opentelemetry import metrics
22-
from opentelemetry.sdk.metrics import LabelSet
22+
from opentelemetry.sdk.metrics import LabelSet, MeterProvider
2323
from opentelemetry.sdk.metrics.export import ConsoleMetricsExporter
2424
from opentelemetry.sdk.metrics.export.batcher import UngroupedBatcher
2525
from opentelemetry.sdk.metrics.export.controller import PushController
2626

2727
# Configure a stateful batcher
2828
batcher = UngroupedBatcher(stateful=True)
2929

30+
metrics.set_meter_provider(MeterProvider())
3031
meter = metrics.get_meter(__name__)
3132

3233
# Exporter to export metrics to the console

docs/examples/metrics/prometheus.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,14 @@
2121

2222
from opentelemetry import metrics
2323
from opentelemetry.ext.prometheus import PrometheusMetricsExporter
24-
from opentelemetry.sdk.metrics import Counter
24+
from opentelemetry.sdk.metrics import Counter, MeterProvider
2525
from opentelemetry.sdk.metrics.export.controller import PushController
2626

2727
# Start Prometheus client
2828
start_http_server(port=8000, addr="localhost")
2929

3030
# Meter is responsible for creating and recording metrics
31+
metrics.set_meter_provider(MeterProvider())
3132
meter = metrics.get_meter(__name__)
3233
# exporter to export metrics to Prometheus
3334
prefix = "MyAppPrefix"

docs/examples/metrics/record.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@
1919
import time
2020

2121
from opentelemetry import metrics
22-
from opentelemetry.sdk.metrics import Counter
22+
from opentelemetry.sdk.metrics import Counter, MeterProvider
2323
from opentelemetry.sdk.metrics.export import ConsoleMetricsExporter
2424
from opentelemetry.sdk.metrics.export.controller import PushController
2525

26+
# Use the meter type provided by the SDK package
27+
metrics.set_meter_provider(MeterProvider())
2628
# Meter is responsible for creating and recording metrics
2729
meter = metrics.get_meter(__name__)
2830
# exporter to export metrics to the console

docs/examples/metrics/simple_example.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import time
2424

2525
from opentelemetry import metrics
26-
from opentelemetry.sdk.metrics import Counter, Measure
26+
from opentelemetry.sdk.metrics import Counter, Measure, MeterProvider
2727
from opentelemetry.sdk.metrics.export import ConsoleMetricsExporter
2828
from opentelemetry.sdk.metrics.export.controller import PushController
2929

@@ -43,13 +43,13 @@ def usage(argv):
4343
usage(sys.argv)
4444
sys.exit(1)
4545

46-
# Meter is responsible for creating and recording metrics
4746

48-
# Meter's namespace corresponds to the string passed as the first argument Pass
49-
# in True/False to indicate whether the batcher is stateful. True indicates the
50-
# batcher computes checkpoints from over the process lifetime. False indicates
51-
# the batcher computes checkpoints which describe the updates of a single
52-
# collection period (deltas)
47+
# The Meter is responsible for creating and recording metrics. Each meter has a
48+
# unique name, which we set as the module's name here. The second argument
49+
# determines whether how metrics are collected: if true, metrics accumulate
50+
# over the process lifetime. If false, metrics are reset at the beginning of
51+
# each collection interval.
52+
metrics.set_meter_provider(MeterProvider())
5353
meter = metrics.get_meter(__name__, batcher_mode == "stateful")
5454

5555
# Exporter to export metrics to the console

docs/examples/opentelemetry-example-app/src/opentelemetry_example_app/flask_example.py

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import opentelemetry.ext.http_requests
2424
from opentelemetry import trace
2525
from opentelemetry.ext.flask import instrument_app
26+
from opentelemetry.sdk.trace import TracerProvider
2627

2728

2829
def configure_opentelemetry(flask_app: flask.Flask):
@@ -33,21 +34,16 @@ def configure_opentelemetry(flask_app: flask.Flask):
3334
* sets tracer to the SDK's Tracer
3435
* enables requests integration on the Tracer
3536
* uses a WSGI middleware to enable configuration
36-
37-
TODO:
38-
39-
* processors?
40-
* exporters?
4137
"""
42-
# Start by configuring all objects required to ensure
43-
# a complete end to end workflow.
38+
# Start by configuring all objects required to ensure a complete end to end
39+
# workflow.
40+
trace.set_tracer_provider(TracerProvider())
4441

45-
# Next, we need to configure how the values that are used by
46-
# traces and metrics are propagated (such as what specific headers
47-
# carry this value).
48-
# Integrations are the glue that binds the OpenTelemetry API
49-
# and the frameworks and libraries that are used together, automatically
50-
# creating Spans and propagating context as appropriate.
42+
# Next, we need to configure how the values that are used by traces and
43+
# metrics are propagated (such as what specific headers carry this value).
44+
# Integrations are the glue that binds the OpenTelemetry API and the
45+
# frameworks and libraries that are used together, automatically creating
46+
# Spans and propagating context as appropriate.
5147
opentelemetry.ext.http_requests.enable(trace.get_tracer_provider())
5248
instrument_app(flask_app)
5349

@@ -57,8 +53,7 @@ def configure_opentelemetry(flask_app: flask.Flask):
5753

5854
@app.route("/")
5955
def hello():
60-
# emit a trace that measures how long the
61-
# sleep takes
56+
# Emit a trace that measures how long the sleep takes
6257
version = pkg_resources.get_distribution(
6358
"opentelemetry-example-app"
6459
).version

docs/examples/opentracing/main.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@
33
from opentelemetry import trace
44
from opentelemetry.ext import opentracing_shim
55
from opentelemetry.ext.jaeger import JaegerSpanExporter
6+
from opentelemetry.sdk.trace import TracerProvider
67
from opentelemetry.sdk.trace.export import SimpleExportSpanProcessor
78
from rediscache import RedisCache
89

10+
# Configure the tracer using the default implementation
11+
trace.set_tracer_provider(TracerProvider())
912
tracer_provider = trace.get_tracer_provider()
1013

1114
# Configure the tracer to export traces to Jaeger

examples/metrics/collector.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@
2121
from opentelemetry.ext.otcollector.metrics_exporter import (
2222
CollectorMetricsExporter,
2323
)
24-
from opentelemetry.sdk.metrics import Counter
24+
from opentelemetry.sdk.metrics import Counter, MeterProvider
2525
from opentelemetry.sdk.metrics.export.controller import PushController
2626

2727
# Meter is responsible for creating and recording metrics
28+
metrics.set_meter_provider(MeterProvider())
2829
meter = metrics.get_meter(__name__)
2930
# exporter to export metrics to OT Collector
3031
exporter = CollectorMetricsExporter(

ext/opentelemetry-ext-dbapi/README.rst

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ Usage
1212
1313
import mysql.connector
1414
import pyodbc
15-
from opentelemetry.trace import tracer_provider
15+
1616
from opentelemetry.ext.dbapi import trace_integration
17+
from opentelemetry.sdk.trace import TracerProvider
18+
from opentelemetry.trace import tracer_provider
1719
20+
trace.set_tracer_provider(TracerProvider())
1821
tracer = trace.get_tracer(__name__)
1922
# Ex: mysql.connector
2023
trace_integration(tracer_provider(), mysql.connector, "connect", "mysql", "sql")

ext/opentelemetry-ext-jaeger/README.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,10 @@ gRPC is still not supported by this implementation.
3232
3333
from opentelemetry import trace
3434
from opentelemetry.ext import jaeger
35+
from opentelemetry.sdk.trace import TracerProvider
3536
from opentelemetry.sdk.trace.export import BatchExportSpanProcessor
3637
38+
trace.set_tracer_provider(TracerProvider())
3739
tracer = trace.get_tracer(__name__)
3840
3941
# create a JaegerSpanExporter

ext/opentelemetry-ext-jaeger/examples/jaeger_exporter_example.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
from opentelemetry import trace
44
from opentelemetry.ext import jaeger
5+
from opentelemetry.sdk.trace import TracerProvider
56
from opentelemetry.sdk.trace.export import BatchExportSpanProcessor
67

8+
trace.set_tracer_provider(TracerProvider())
79
tracer = trace.get_tracer(__name__)
810

911
# create a JaegerSpanExporter

ext/opentelemetry-ext-opentracing-shim/src/opentelemetry/ext/opentracing_shim/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,12 @@
2929
import time
3030
3131
from opentelemetry import trace
32+
from opentelemetry.sdk.trace import TracerProvider
3233
from opentelemetry.ext.opentracing_shim import create_tracer
3334
35+
# Tell OpenTelemetry which Tracer implementation to use.
36+
trace.set_tracer_provider(TracerProvider())
37+
3438
# Create an OpenTelemetry Tracer.
3539
otel_tracer = trace.get_tracer(__name__)
3640

ext/opentelemetry-ext-prometheus/README.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,15 @@ The **OpenTelemetry Prometheus Exporter** allows to export `OpenTelemetry`_ metr
2929
3030
from opentelemetry import metrics
3131
from opentelemetry.ext.prometheus import PrometheusMetricsExporter
32-
from opentelemetry.sdk.metrics import Counter
32+
from opentelemetry.sdk.metrics import Counter, MeterProvider
3333
from opentelemetry.sdk.metrics.export.controller import PushController
3434
from prometheus_client import start_http_server
3535
3636
# Start Prometheus client
3737
start_http_server(port=8000, addr="localhost")
3838
3939
# Meter is responsible for creating and recording metrics
40+
metrics.set_meter_provider(MeterProvider())
4041
meter = metrics.meter()
4142
# exporter to export metrics to Prometheus
4243
prefix = "MyAppPrefix"

ext/opentelemetry-ext-psycopg2/README.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ Usage
1313
1414
import psycopg2
1515
from opentelemetry import trace
16+
from opentelemetry.sdk.trace import TracerProvider
1617
from opentelemetry.trace.ext.psycopg2 import trace_integration
1718
19+
trace.set_tracer_provider(TracerProvider())
1820
tracer = trace.get_tracer(__name__)
1921
trace_integration(tracer)
2022
cnx = psycopg2.connect(database='Database')

ext/opentelemetry-ext-zipkin/README.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,10 @@ This exporter always send traces to the configured Zipkin collector using HTTP.
3030
3131
from opentelemetry import trace
3232
from opentelemetry.ext import zipkin
33+
from opentelemetry.sdk.trace import TracerProvider
3334
from opentelemetry.sdk.trace.export import BatchExportSpanProcessor
3435
36+
trace.set_tracer_provider(TracerProvider())
3537
tracer = trace.get_tracer(__name__)
3638
3739
# create a ZipkinSpanExporter

0 commit comments

Comments
 (0)