Getting Started • API Documentation • Getting In Touch (GitHub Discussions)
The Python auto-instrumentation libraries for OpenTelemetry (per OTEP 0001)
This repository includes installable packages for each instrumented library. Libraries that produce telemetry data should only depend on opentelemetry-api
,
and defer the choice of the SDK to the application developer. Applications may
depend on opentelemetry-sdk
or another package that implements the API.
Please note that these libraries are currently in beta, and shouldn't generally be used in production environments.
Unless explicitly stated otherwise, any instrumentation here for a particular library is not developed or maintained by the authors of such library.
The
instrumentation/
directory includes OpenTelemetry instrumentation packages, which can be installed
separately as:
pip install opentelemetry-instrumentation-{integration}
To install the development versions of these packages instead, clone or fork this repo and do an editable install:
pip install -e ./instrumentation/opentelemetry-instrumentation-{integration}
Maintainers release new versions of the packages in opentelemetry-python-contrib
on a monthly cadence. See releases for all previous releases.
Contributions that enhance OTel for Python are welcome to be hosted upstream for the benefit of group collaboration. Maintainers will look for things like good documentation, good unit tests, and in general their own confidence when deciding to release a package with the stability guarantees that are implied with a 1.0
release.
To resolve this, members of the community are encouraged to commit to becoming a CODEOWNER for packages in -contrib
that they feel experienced enough to maintain. CODEOWNERS can then follow the checklist below to release -contrib
packages as 1.0 stable:
To release a package as 1.0
stable, the package:
- SHOULD have a CODEOWNER. To become one, submit an issue and explain why you meet the responsibilities found in CODEOWNERS.
- MUST have unit tests that cover all supported versions of the instrumented library.
- e.g. Instrumentation packages might use different techniques to instrument different major versions of python packages
- MUST have clear documentation for non-obvious usages of the package
- e.g. If an instrumentation package uses flags, a token as context, or parameters that are not typical of the
BaseInstrumentor
class, these are documented
- e.g. If an instrumentation package uses flags, a token as context, or parameters that are not typical of the
- After the release of
1.0
, a CODEOWNER may no longer feel like they have the bandwidth to meet the responsibilities of maintaining the package. That's not a problem at all, life happens! However, if that is the case, we ask that the CODEOWNER please raise an issue indicating that they would like to be removed as a CODEOWNER so that they don't get pinged on future PRs. Ultimately, we hope to use that issue to find a new CODEOWNER.
See CONTRIBUTING.md
We meet weekly on Thursday, and the time of the meeting alternates between 9AM PT and 4PM PT. The meeting is subject to change depending on contributors' availability. Check the OpenTelemetry community calendar for specific dates and for the Zoom link.
Meeting notes are available as a public Google doc. For edit access, get in touch on GitHub Discussions.
See the OpenTelemetry Instrumentation for Python.
Signal | Status | Project |
---|---|---|
Traces | Stable | N/A |
Metrics | Stable | N/A |
Logs | Experimental | N/A |
Project versioning information and stability guarantees can be found here.
You can find the getting started guide for OpenTelemetry Python here.
If you are looking for examples on how to use the OpenTelemetry API to instrument your code manually, or how to set up the OpenTelemetry Python SDK, see https://opentelemetry.io/docs/instrumentation/python/manual/.
This project ensures compatibility with the current supported versions of the Python. As new Python versions are released, support for them is added and as old Python versions reach their end of life, support for them is removed.
We add support for new Python versions no later than 3 months after they become stable.
We remove support for old Python versions 6 months after they reach their end of life.
The online documentation is available at https://opentelemetry-python.readthedocs.io/. To access the latest version of the documentation, see https://opentelemetry-python.readthedocs.io/en/latest/.
This repository includes multiple installable packages. The opentelemetry-api
package includes abstract classes and no-op implementations that comprise the OpenTelemetry API following the
OpenTelemetry specification.
The opentelemetry-sdk
package is the reference implementation of the API.
Libraries that produce telemetry data should only depend on opentelemetry-api
,
and defer the choice of the SDK to the application developer. Applications may
depend on opentelemetry-sdk
or another package that implements the API.
The API and SDK packages are available on the Python Package Index (PyPI). You can install them via pip
with the following commands:
pip install opentelemetry-api
pip install opentelemetry-sdk
The
exporter/
directory includes OpenTelemetry exporter packages. You can install the packages separately with the following command:
pip install opentelemetry-exporter-{exporter}
The
propagator/
directory includes OpenTelemetry propagator packages. You can install the packages separately with the following command:
pip install opentelemetry-propagator-{propagator}
To install the development versions of these packages instead, clone or fork this repository and perform an editable install:
pip install -e ./opentelemetry-api
pip install -e ./opentelemetry-sdk
pip install -e ./instrumentation/opentelemetry-instrumentation-{instrumentation}
For additional exporter and instrumentation packages, see the
opentelemetry-python-contrib
repository.
For information about contributing to OpenTelemetry Python, see CONTRIBUTING.md.
We meet weekly on Thursdays at 9AM PST. The meeting is subject to change depending on contributors' availability. Check the OpenTelemetry community calendar for specific dates and Zoom meeting links.
Meeting notes are available as a public Google doc.
upstream/main
Approvers (@open-telemetry/python-approvers):
- Aaron Abbott, Google
- Jeremy Voss, Microsoft
- Sanket Mehta, Cisco <<<<<<< HEAD
Emeritus Approvers:
- Héctor Hernández, Microsoft
- Yusuke Tsutsumi, Google
- Nathaniel Ruiz Nowell, AWS
- Ashutosh Goel, Cisco
Find more about the approver role in community repository.
- Shalev Roda, Cisco
Emeritus Approvers
- Ashutosh Goel, Cisco
- Carlos Alberto Cortez, Lightstep
- Christian Neumüller, Dynatrace
- Héctor Hernández, Microsoft
- Mauricio Vásquez, Kinvolk
- Nathaniel Ruiz Nowell, AWS
- Tahir H. Butt, DataDog
For more information about the approver role, see the community repository.
upstream/main
Maintainers (@open-telemetry/python-maintainers):
- Diego Hurtado, Lightstep
- Leighton Chen, Microsoft <<<<<<< HEAD
- Shalev Roda, Cisco =======
upstream/main
Emeritus Maintainers:
- Alex Boten, Lightstep <<<<<<< HEAD
- Owais Lone, Splunk
- Srikanth Chekuri, signoz.io
Find more about the maintainer role in community repository.
- Go to your Contrib repo directory.
cd ~/git/opentelemetry-python-contrib
. - Create a virtual env in your Contrib repo directory.
python3 -m venv my_test_venv
. - Activate your virtual env.
source my_test_venv/bin/activate
. - Make sure you have
tox
installed.pip install tox==3.27.1
. - Run tests for a package. (e.g.
tox -e test-instrumentation-flask
.)
=======
- Chris Kleinknecht, Google
- Owais Lone, Splunk
- Reiley Yang, Microsoft
- Srikanth Chekuri, signoz.io
- Yusuke Tsutsumi, Google
For more information about the maintainer role, see the community repository.
>>>>>>> upstream/main