* Add tests for errors in Celery tasks I noticed there were no tests for the error scenario in the Celery package. This commit adds a basic test, based on the previous test and how I see other packages test the error status on the span. Part of #987 * Record exception in Celery instrumentation In addition to setting the status on the span, also record the exception on the span. This adds an event to the span with more details about the error, following the format other instrumentations also use. * Update CHANGELOG with Celery record exception * Fix lint code formatting issues * Move Celery error tests to the functional tests The celery tests failed on Python 3.11. This is most likely due to this issue in billiard, a celery dependency, about it not working on Python 3.11 because of the error reported in the CI: https://github.com/celery/billiard/issues/377 It's been fixed in billiard 4.1.0, but celery is locked on billiard version lower than 4, so it cannot use this version with the fix. This issue does not arise on the Docker tests, because they use Python 3.9.16. I've moved the error test span event assertions to the error test that is available in the functional tests, and removed the unit test. That way, the build will run successfully. * Remove duplicate entry in changelog This was added in a recent merge commit on this PR branch. * Remove unused test code With the move of the tests for tasks with errors to the functional tests, remove the unit test's error task and unused imports. --------- Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com> |
||
|---|---|---|
| .github | ||
| _template | ||
| docs | ||
| exporter | ||
| instrumentation | ||
| opentelemetry-contrib-instrumentations | ||
| opentelemetry-distro | ||
| opentelemetry-instrumentation | ||
| propagator | ||
| scripts | ||
| sdk-extension/opentelemetry-sdk-extension-aws | ||
| tests/opentelemetry-docker-tests/tests | ||
| util/opentelemetry-util-http | ||
| .codespellrc | ||
| .coveragerc | ||
| .flake8 | ||
| .gitignore | ||
| .isort.cfg | ||
| .pylintrc | ||
| .readthedocs.yml | ||
| CHANGELOG.md | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| LICENSE.Apache | ||
| LICENSE.BSD3 | ||
| README.md | ||
| RELEASING.md | ||
| dev-requirements.txt | ||
| docs-requirements.txt | ||
| eachdist.ini | ||
| gen-requirements.txt | ||
| pyproject.toml | ||
| pytest.ini | ||
| tox.ini | ||
README.md
<p align="center"> <strong> <a href="https://opentelemetry.io/docs/instrumentation/python/getting-started/">Getting Started<a/> • <a href="https://opentelemetry-python-contrib.readthedocs.io/">API Documentation<a/> • <a href="https://github.com/open-telemetry/opentelemetry-python/discussions">Getting In Touch (GitHub Discussions)<a/> </strong> </p> <p align="center"> <a href="https://github.com/open-telemetry/opentelemetry-python-contrib/releases"> <img alt="GitHub release (latest by date including pre-releases)" src="https://img.shields.io/github/v/release/open-telemetry/opentelemetry-python-contrib?include_prereleases&style=for-the-badge"> </a> <a href="https://codecov.io/gh/open-telemetry/opentelemetry-python-contrib/branch/main/"> <img alt="Codecov Status" src="https://img.shields.io/codecov/c/github/open-telemetry/opentelemetry-python-contrib?style=for-the-badge"> </a> <a href="https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/LICENSE"> <img alt="license" src="https://img.shields.io/badge/license-Apache_2.0-green.svg?style=for-the-badge"> </a> <br/> <a href="https://github.com/open-telemetry/opentelemetry-python-contrib/actions?query=workflow%3ATest+branch%3Amaster"> <img alt="Build Status" src="https://github.com/open-telemetry/opentelemetry-python-contrib/workflows/Test/badge.svg"> </a> <img alt="Beta" src="https://img.shields.io/badge/status-beta-informational?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIRlWElmTU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAACQAAAAAQAAAJAAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAABigAwAEAAAAAQAAABgAAAAA8A2UOAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAAVlpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KTMInWQAABK5JREFUSA2dVm1sFEUYfmd2b/f2Pkqghn5eEQWKrRgjpkYgpoRCLC0oxV5apAiGUDEpJvwxEQ2raWPU+Kf8INU/RtEedwTCR9tYPloxGNJYTTQUwYqJ1aNpaLH3sXu3t7vjvFevpSqt7eSyM+/czvM8877PzB3APBoLgoDLsNePF56LBwqa07EKlDGg84CcWsI4CEbhNnDpAd951lXE2NkiNknCCTLv4HtzZuvPm1C/IKv4oDNXqNDHragety2XVzjECZsJARuBMyRzJrh1O0gQwLXuxofxsPSj4hG8fMLQo7bl9JJD8XZfC1E5yWFOMtd07dvX5kDwg6+2++Chq8txHGtfPoAp0gOFmhYoNFkHjn2TNUmrwRdna7W1QSkU8hvbGk4uThLrapaiLA2E6QY4u/lS9ItHfvJkxYsTMVtnAJLipYIWtVrcdX+8+b8IVnPl/R81prbuPZ1jpYw+0aEUGSkdFsgyBIaFTXCm6nyaxMtJ4n+TeDhJzGqZtQZcuYDgqDwDbqb0JF9oRpIG1Oea3bC1Y6N3x/WV8Zh83emhCs++hlaghDw+8w5UlYKq2lU7Pl8IkvS9KDqXmKmEwdMppVPKwGSEilmyAwJhRwWcq7wYC6z4wZ1rrEoMWxecdOjZWXeAQClBcYDN3NwVwD9pGwqUSyQgclcmxpNJqCuwLmDh3WtvPqXdlt+6Oz70HPGDNSNBee/EOen+rGbEFqDENBPDbtdCp0ukPANmzO0QQJYUpyS5IJJI3Hqt4maS+EB3199ozm8EDU/6fVNU2dQpdx3ZnKzeFXyaUTiasEV/gZMzJMjr3Z+WvAdQ+hs/zw9savimxUntDSaBdZ2f+Idbm1rlNY8esFffBit9HtK5/MejsrJVxikOXlb1Ukir2X+Rbdkd1KG2Ixfn2Ql4JRmELnYK9mEM8G36fAA3xEQ89fxXihC8q+sAKi9jhHxNqagY2hiaYgRCm0f0QP7H4Fp11LSXiuBY2aYFlh0DeDIVVFUJQn5rCnpiNI2gvLxHnASn9DIVHJJlm5rXvQAGEo4zvKq2w5G1NxENN7jrft1oxMdekETjxdH2Z3x+VTVYsPb+O0C/9/auN6v2hNZw5b2UOmSbG5/rkC3LBA+1PdxFxORjxpQ81GcxKc+ybVjEBvUJvaGJ7p7n5A5KSwe4AzkasA+crmzFtowoIVTiLjANm8GDsrWW35ScI3JY8Urv83tnkF8JR0yLvEt2hO/0qNyy3Jb3YKeHeHeLeOuVLRpNF+pkf85OW7/zJxWdXsbsKBUk2TC0BCPwMq5Q/CPvaJFkNS/1l1qUPe+uH3oD59erYGI/Y4sce6KaXYElAIOLt+0O3t2+/xJDF1XvOlWGC1W1B8VMszbGfOvT5qaRRAIFK3BCO164nZ0uYLH2YjNN8thXS2v2BK9gTfD7jHVxzHr4roOlEvYYz9QIz+Vl/sLDXInsctFsXjqIRnO2ZO387lxmIboLDZCJ59KLFliNIgh9ipt6tLg9SihpRPDO1ia5byw7de1aCQmF5geOQtK509rzfdwxaKOIq+73AvwCC5/5fcV4vo3+3LpMdtWHh0ywsJC/ZGoCb8/9D8F/ifgLLl8S8QWfU8cAAAAASUVORK5CYII="> </p> <p align="center"> <strong> <a href="CONTRIBUTING.md">Contributing<a/> • <a href="https://opentelemetry-python-contrib.readthedocs.io/en/stable/#examples">Examples<a/> </strong> </p>
Getting Started • API Documentation • Getting In Touch (GitHub Discussions)
OpenTelemetry Python Contrib
The Python auto-instrumentation libraries for OpenTelemetry (per OTEP 0001)
Installation
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.
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}
Releasing
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:
Releasing a package 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
BaseInstrumentorclass, 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.
Contributing
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.
Approvers (@open-telemetry/python-approvers):
- Aaron Abbott, Google
- Sanket Mehta, Cisco
- Shalev Roda, Cisco
Emeritus Approvers:
- Hector Hernandez, Microsoft
- Yusuke Tsutsumi, Google
- Nathaniel Ruiz Nowell, AWS
- Ashutosh Goel, Cisco
Find more about the approver role in community repository.
Maintainers (@open-telemetry/python-maintainers):
- Diego Hurtado, Lightstep
- Leighton Chen, Microsoft
- Srikanth Chekuri, signoz.io
Emeritus Maintainers:
- Alex Boten, Lightstep
- Owais Lone, Splunk
Find more about the maintainer role in community repository.
Running Tests Locally
- 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
toxinstalled.pip install tox==3.27.1. - Run tests for a package. (e.g.
tox -e test-instrumentation-flask.)