1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
OpenCensus Shim
================
This example shows how to use the :doc:`opentelemetry-opencensus-shim
package <../../shim/opencensus_shim/opencensus_shim>`
to interact with libraries instrumented with
`opencensus-python <https://github.com/census-instrumentation/opencensus-python>`_.
The source files required to run this example are available :scm_web:`here <docs/examples/opencensus-shim/>`.
Installation
------------
Jaeger
******
Start Jaeger
.. code-block:: sh
docker run --rm \
-p 4317:4317 \
-p 4318:4318 \
-p 16686:16686 \
jaegertracing/all-in-one:latest \
--log-level=debug
Python Dependencies
*******************
Install the Python dependencies in :scm_raw_web:`requirements.txt <docs/examples/opencensus-shim/requirements.txt >`
.. code-block:: sh
pip install -r requirements.txt
Alternatively, you can install the Python dependencies separately:
.. code-block:: sh
pip install \
opentelemetry-api \
opentelemetry-sdk \
opentelemetry-exporter-otlp \
opentelemetry-opencensus-shim \
opentelemetry-instrumentation-sqlite3 \
opencensus \
opencensus-ext-flask \
Flask
Run the Application
-------------------
Start the application in a terminal.
.. code-block:: sh
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:
.. code-block:: sh
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
:meth:`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.
Useful links
------------
- OpenTelemetry_
- :doc:`../../shim/opencensus_shim/opencensus_shim`
.. _OpenTelemetry: https://github.com/open-telemetry/opentelemetry-python/
|