OpenCensus Shim
This example shows how to use the opentelemetry-opencensus-shim package to interact with libraries instrumented with opencensus-python.
The source files required to run this example are available here.
Installation
Jaeger
Start Jaeger
docker run --rm \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 16686:16686 \
jaegertracing/all-in-one:1.13 \
--log-level=debug
Python Dependencies
Install the Python dependencies in requirements.txt
pip install -r requirements.txt
Alternatively, you can install the Python dependencies separately:
pip install \
opentelemetry-api \
opentelemetry-sdk \
opentelemetry-exporter-jaeger \
opentelemetry-opencensus-shim \
opentelemetry-instrumentation-sqlite3 \
opencensus \
opencensus-ext-flask \
Flask
Run the Application
Start the application in a terminal.
flask --app app run -h 0.0.0.0
Point your browser to the address printed out (probably http://127.0.0.1:5000). Alternatively, just use curl to trigger a request:
curl http://127.0.0.1:5000
Jaeger UI
Open the Jaeger UI in your browser at http://localhost:16686 and view traces for the “opencensus-shim-example-flask” service. Click on a span named “span” in the scatter plot. You will see a span tree with the following structure:
span
query movies from db
SELECT
build response html
The root span comes from OpenCensus Flask instrumentation. The children query movies from
db
and build response html
come from the manual instrumentation using OpenTelemetry’s
opentelemetry.trace.Tracer.start_as_current_span()
. Finally, the SELECT
span is
created by OpenTelemetry’s SQLite3 instrumentation. Everything is exported to Jaeger using the
OpenTelemetry exporter.