Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Requests instrumentation http semantic convention migration #2002

Merged
merged 21 commits into from
Nov 29, 2023

Conversation

lzchen
Copy link
Contributor

@lzchen lzchen commented Oct 13, 2023

Part of: #2453

Does not support redirect/retries. Tracking issue

Opt-in mechanism for certain attributes for new semconvs don't exist yet and will be implemented in the future. (ie. url_scheme)

Tracking issue for updating semconv package to 1.23.X: open-telemetry/opentelemetry-python#3538

Sample below:

import os
import requests
from opentelemetry import trace
from opentelemetry.instrumentation.requests import RequestsInstrumentor
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter

# Specify "http", "http/dup" or ""
os.environ["OTEL_SEMCONV_STABILITY_OPT_IN"] = "http/dup"

# Enable instrumentation in the requests library.
RequestsInstrumentor().instrument()

trace.set_tracer_provider(TracerProvider())
tracer = trace.get_tracer(__name__)
exporter = ConsoleSpanExporter()
span_processor = BatchSpanProcessor(exporter)
trace.get_tracer_provider().add_span_processor(span_processor)

with tracer.start_as_current_span("parent"):
    response = requests.get("https://example.com/", timeout=5)

input()

Old semconv with envvar set to "default" or "":

    "attributes": {
        "http.method": "GET",
        "http.url": "https://example.com/",
        "http.status_code": 200
    },

New semconv with envvar set to "http":

    "attributes": {
        "http.request.method": "GET",
        "url.full": "https://example.com/",
        "server.address": "example.com",
        "network.peer.address": "example.com",
        "http.response.status_code": 200,
        "net.protocol.version": "1.1"
    },

Both semconv with envvar set to "http/dup":

    "attributes": {
        "http.method": "GET",
        "http.request.method": "GET",
        "http.url": "https://example.com/",
        "url.full": "https://example.com/",
        "http.host": "example.com",
        "server.address": "example.com",
        "network.peer.address": "example.com",
        "http.status_code": 200,
        "http.response.status_code": 200,
        "http.flavor": "1.1",
        "net.protocol.version": "1.1"
    },

@lzchen lzchen requested a review from a team October 13, 2023 19:16
@github-actions github-actions bot requested a review from ocelotl October 13, 2023 19:16
@lzchen lzchen marked this pull request as draft October 13, 2023 19:17
@lzchen
Copy link
Contributor Author

lzchen commented Oct 13, 2023

@trask

Marking as draft for prototyping reasons.

@lmolkova
Copy link
Contributor

Thanks a lot @lzchen!

A few follow-up questions:

  • no retry tracking: how hard do you think this would be? Any blockers you envision?
  • can we add prototype for error.type as well?
  • span names were changed

@lzchen lzchen marked this pull request as ready for review November 22, 2023 16:58
@lzchen lzchen changed the title [Prototype] Requests instrumentation http semantic convention migration Requests instrumentation http semantic convention migration Nov 22, 2023
@lzchen
Copy link
Contributor Author

lzchen commented Nov 28, 2023

Thanks a lot @lzchen!

A few follow-up questions:

  • no retry tracking: how hard do you think this would be? Any blockers you envision?
  • can we add prototype for error.type as well?
  • span names were changed

@lmolkova

  1. Are there other cases in which we expect retries to happen automatically with the underlying instrumented library besides redirects? The requests library handles redirects automatically by default.
    • What do we expect to happen here? The count being stamped on one span or multiple spans created for the initial call and then the redirect?
    • For cases like 503 where the library does not handle this automatically, are multiple spans expected to be created by the instrumentation library or by the user?
      If we are just stamping the one span, I don't think it will be that difficult to implement. Just needs clarification on behavior.
  2. Done in recent commits
  3. Are you referring to the change of "HTTP {METHOD NAME} to just {METHOD NAME}" ?

Copy link
Contributor

@lmolkova lmolkova left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@lzchen lzchen merged commit 4bf3577 into open-telemetry:main Nov 29, 2023
44 checks passed
@lzchen lzchen deleted the req branch November 29, 2023 22:22
povilasv added a commit to coralogix/opentelemetry-python-contrib that referenced this pull request Apr 17, 2024
* Add otelTraceSampled to instrumetation-logging (open-telemetry#1773)

* Add otelTraceSampled to instrumetation-logging

* Updated code with black

* Added to CHANGELOG.md

---------

Co-authored-by: Srikanth Chekuri <[email protected]>

* Expand sqlalchemy pool.name to follow the semantic conventions (open-telemetry#1778)

* Skip requests tests for pypy3 (open-telemetry#1806)

* Update version to 1.19.0.dev/0.40b0.dev (open-telemetry#1797)

Co-authored-by: Diego Hurtado <[email protected]>
Co-authored-by: Srikanth Chekuri <[email protected]>

* Resource detector for container properties (open-telemetry#1584)

Co-authored-by: Diego Hurtado <[email protected]>
Co-authored-by: Srikanth Chekuri <[email protected]>
Co-authored-by: Leighton Chen <[email protected]>

* botocore: always use x-ray for http header injection (open-telemetry#1741)

Co-authored-by: Diego Hurtado <[email protected]>

* Refactor CODEOWNERS file (open-telemetry#1804)

* Refactor CODEOWNERS file

Fixes open-telemetry#1803

* Remove CODEOWNERS

* Refactor component owners configuration

* Refactor CODEOWNERS to select any file but the ones in instrumentation

---------

Co-authored-by: Shalev Roda <[email protected]>

* Update maintainers list (open-telemetry#1817)

* skip urllib3 test on pypy3 (open-telemetry#1826)

* Fix celery docker tests (open-telemetry#1841)

* Use HTTP mock server for aiohttp tests (open-telemetry#1849)

Fixes open-telemetry#1842

* Use HTTP mock server for tornado tests (open-telemetry#1855)

* Use HTTP mock server for tornado tests

Fixes open-telemetry#1681

* Fix lint

* Remove use of httpbin (open-telemetry#1854)

* Use `request_ctx` to determine whether or not `_teardown_request` should end flask span (open-telemetry#1692)

Co-authored-by: Shalev Roda <[email protected]>
Co-authored-by: Diego Hurtado <[email protected]>

* remove srikanthccv from maintainers (open-telemetry#1792)

Co-authored-by: Shalev Roda <[email protected]>
Co-authored-by: Diego Hurtado <[email protected]>

* Sanitize redis db_statement by default (open-telemetry#1776)

Co-authored-by: Srikanth Chekuri <[email protected]>
Co-authored-by: Shalev Roda <[email protected]>

* Relax httpx version to allow >= 0.18.0 (open-telemetry#1748)

* Issue open-telemetry#1757 - Update HTTP server/client instrumentation span names (open-telemetry#1759)

Co-authored-by: Shalev Roda <[email protected]>
Co-authored-by: Srikanth Chekuri <[email protected]>

* Fix falcon usage of Span Status (open-telemetry#1840)

* Fix falcon usage of Span Status to only set the description if the status code is ERROR

* Update changelog

* Update CHANGELOG.md

Co-authored-by: Srikanth Chekuri <[email protected]>

* fix lint

* Use fewer variables to satisfy R0914 lint rule

---------

Co-authored-by: Srikanth Chekuri <[email protected]>

* Request Flask attributes passed to Sampler (open-telemetry#1784)

* Request Flask attributes passed to Sampler

* Update changelog

* Lint

* Fix botocore test keyerror

* Revert "Fix botocore test keyerror"

This reverts commit fd03c55.

* botocore test does get_queue_url

* Revert "botocore test does get_queue_url"

This reverts commit 9530cd2.

* Update changelog

---------

Co-authored-by: Srikanth Chekuri <[email protected]>
Co-authored-by: Shalev Roda <[email protected]>

* Fixed urllib3 instrumentation example in instrumentation documentation (open-telemetry#1793)

* corrected instrumentation example in urllib3

* Remove changelog entry

---------

Co-authored-by: Shalev Roda <[email protected]>
Co-authored-by: Diego Hurtado <[email protected]>

* Fix Invalid type NoneType for attribute X error | AWS-Lambda instrumentation (open-telemetry#1785)

* Add None checking to the aws-lambda logic

* Update changelog.

* Change .get() check to 'key' in dict check.

* Fix consistency issues.

* Update changelog.

---------

Co-authored-by: Srikanth Chekuri <[email protected]>
Co-authored-by: Shalev Roda <[email protected]>

* Add metrics instrumentation celery (open-telemetry#1679)

Co-authored-by: Shalev Roda <[email protected]>

* Add support for confluent_kafka until 2.1.1 version (open-telemetry#1815)

* Add support for confulent_kafka until 2.1.1 version

* Include 2.1.1 version

* update CHANGELOG.md

* run: 'tox -e generate'

* resolve comments

* update top version to 2.2.0

---------

Co-authored-by: Ran Nozik <[email protected]>

* fix redis doc (open-telemetry#1808)

doc string rendered at
https://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/redis/redis.html
refers to `opentelemetry-instrumentation` executable which appears to be a typo

Co-authored-by: Shalev Roda <[email protected]>

* Add http.server.response.size metric to ASGI implementation. (open-telemetry#1789)

* Add http.server.response.size metric to ASGI implementation.
Add new unit tests.

* Update changelog.

* Fix linting by disabling too-many-nested-blocks

* Put new logic in a new method

* Refactor the placement of new logic.

* Fixed the unit tests in FastAPI and Starlette

* Update changelog.

* FIx lint errors.

* Refactor getting content-length header

* Refactor getting content-length header

---------

Co-authored-by: Shalev Roda <[email protected]>
Co-authored-by: Diego Hurtado <[email protected]>

* fix: Update falcon instrumentation to follow semantic conventions (open-telemetry#1824)

* fix: Update falcon instrumentation to follow semantic conventions

* docs: Update changelog

* fix linter errors

* Disable falcon.HTTP_200 pylint checck

---------

Co-authored-by: Shalev Roda <[email protected]>
Co-authored-by: Srikanth Chekuri <[email protected]>

* Bump requests from 2.28.1 to 2.31.0 (open-telemetry#1818)

Bumps [requests](https://github.com/psf/requests) from 2.28.1 to 2.31.0.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](psf/requests@v2.28.1...v2.31.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Shalev Roda <[email protected]>

* fix(grpc): Allow gRPC connections via Unix socket (open-telemetry#1833)

* fix(grpc): Allow gRPC connections via Unix socket

This commit addresses issue open-telemetry#1832.

The way `NET_PEER_IP` and `NET_PEER_PORT` are retrieved raises a `ValueError`
when gRPC connections are handled via Unix sockets.

```py
ip, port = (
    context.peer().split(",")[0].split(":", 1)[1].rsplit(":", 1)
)
```

When using an address like `unix:///tmp/grpc.sock` the value of `context.peer()` is `"unix:"`.
Substituting that in the function above...

```py
ip, port = "unix:".split(",")[0].split(":", 1)[1].rsplit(":", 1)
ip, port = ["unix:"][0].split(":", 1)[1].rsplit(":", 1)
ip, port = "unix:".split(":", 1)[1].rsplit(":", 1)
ip, port = ["unix", ""][1].rsplit(":", 1)
ip, port = "".rsplit(":", 1)
ip, port = [""]  # ValueError
```

I "addressed" the issue by guarding the retrieval of `net.peer.*` values under
an `if` statement that checks if we are using a Unix socket.

I extended the `server_interceptor` tests to run against TCP and Unix socket configurations.

---

**Open Questions**

- [ ] The socket tests will fail on Windows. Is there a way to annotate that?
- [ ] Are there other span values we should be setting for the unix socket?

* Update CHANGELOG

* Add placeholder attributes for linter

* fix lint

---------

Co-authored-by: Matt Oberle <[email protected]>
Co-authored-by: Shalev Roda <[email protected]>

* Add http.server.request.size for ASGI metric implementation (open-telemetry#1867)

* Update changelog file.

* Update changelog file.

* Add new request.size metric for ASGI middleware.

* Clean-up.

* Refactor try except section.

---------

Co-authored-by: Shalev Roda <[email protected]>

* Fix elastic-search sanitization for bulk queries (open-telemetry#1870)

* support sanitization for str body response

* add CHANGELOG entry

---------

Co-authored-by: Shalev Roda <[email protected]>

* Add conditional elastic_transport import (open-telemetry#1810)

* Add conditional elastic_transport import

* Update changelog

* Add future es8 tests

* Update CHANGELOG.md

Co-authored-by: Diego Hurtado <[email protected]>

* Add license, rm pylint disable

* Consistent elastic version check

* lint import

* Update CHANGELOG.md

---------

Co-authored-by: Diego Hurtado <[email protected]>
Co-authored-by: Shalev Roda <[email protected]>

* Fix async redis clients tracing (open-telemetry#1830)

* Fix async redis clients tracing

* Update changelog

* Add functional integration tests and fix linting issues

---------

Co-authored-by: Shalev Roda <[email protected]>

* Update maintainers list (open-telemetry#1874)

* Use a weak reference to sqlalchemy Engine to avoid memory leak (open-telemetry#1771)

* Use a weak reference to sqlalchemy Engine to avoid memory leak

Closes open-telemetry#1761

By using a weak reference to the `Engine` object, we can avoid the memory leak as disposed `Engines` get properly deallocated. Whenever `SQLAlchemy` is uninstrumented, we only trigger a removal for those event listeners which are listening for objects that haven't been garbage-collected yet.

* Made a mistake in resolving the weak reference

* Fixed formatting issues

* Updated changelog

* Added unit test to check that engine was garbage collected

* Do not save engine in EngineTracer to avoid memory leak

* Add an empty line to satisfy black formatter

* Fix isort complaints

* Fixed the issue when pool name is not set and =None

* Fix formatting issue

* Rebased after changes in a recent commit

* Updated PR number in changelog

---------

Co-authored-by: Shalev Roda <[email protected]>

* sqlalchemy wrap_create_engine now accepts sqlcommenter options (open-telemetry#1873)

* sqlalchemy wrap_create_engine accepts sqlcommenter options

* Changelog

* Lint

* Fix default val

* Add sqlalchemy tests

* Change a default in _instrument get

* Lint

* More lint

* Update default

Co-authored-by: Shalev Roda <[email protected]>

* Update args doc

* lintttt

---------

Co-authored-by: Shalev Roda <[email protected]>

* Add statement of maintainership (open-telemetry#1859)

Co-authored-by: Shalev Roda <[email protected]>

* urllib3: Add instrumentation support for version 2 (open-telemetry#1879)

* urllib3: Add instrumentation support for version 2

* changelog

* Distro selection (open-telemetry#1823)

* fix(django): avoid empty span name on empty path (open-telemetry#1788)

Co-authored-by: Srikanth Chekuri <[email protected]>
Co-authored-by: Shalev Roda <[email protected]>
Co-authored-by: Diego Hurtado <[email protected]>

* Instrument mysqlclient library (open-telemetry#1744)

Co-authored-by: Diego Hurtado <[email protected]>

* Update version to 1.20.0.dev/0.41b0.dev (open-telemetry#1885)

Co-authored-by: Diego Hurtado <[email protected]>

* Fix pyyaml version (open-telemetry#1892)

* update awslambda to use _X_AMZN_TRACE_ID as a Span Link (open-telemetry#1657)

Co-authored-by: Ron Yishai <[email protected]>
Co-authored-by: Srikanth Chekuri <[email protected]>
Co-authored-by: Shalev Roda <[email protected]>
Co-authored-by: Diego Hurtado <[email protected]>

* Fix UnboundLocalError local variable 'start' referenced before assignment (open-telemetry#1889)

Co-authored-by: Pablo Collins <[email protected]>

* Merge pull request from GHSA-5rv5-6h4r-h22v

* Fix unbound cardinality for label http_method in wsgi based middlewares

* cr: rename file

* cr: change label UNKNOWN to NONSTANDARD

* Update instrumentation/opentelemetry-instrumentation-wsgi/src/opentelemetry/instrumentation/wsgi/__init__.py

---------

Co-authored-by: Diego Hurtado <[email protected]>

* Fix errors introduced in regression (open-telemetry#1913)

* Azure resource detectors (open-telemetry#1901)

* Revert "update awslambda to use _X_AMZN_TRACE_ID as a Span Link" (open-telemetry#1911)

Co-authored-by: Diego Hurtado <[email protected]>

* feat(confluent-kafka): Add instrumentation to consume method (open-telemetry#1786)

Co-authored-by: Diego Hurtado <[email protected]>

* Add Cassandra instrumentation (open-telemetry#1902)

* Unwrap Celery's `ExceptionInfo` (open-telemetry#1863)

* Unwrap `ExceptionInfo` and `ExceptionWithTraceback`

Instead of reporting the `ExceptionInfo` and `ExceptionWithTraceback`
wrappers raised by Celery, report the exceptions that they wrap.

This ensures that the exception in the OpenTelemetry span has a type
and traceback that are meaningful and relevant to the developer.

* Fix typo

The exception is expected, not excepted. Well, I guess it is also
excepted, because it's an exception, but you get what I mean.

* Reformat file with `black`

Reformat the `__init__.py` file in the Celery instrumentation using
`black`, fixing a CI linter error.

* Address review feedback

Use the VERSION attribute exposed by Billiard to decide whether to
import ExceptionWithTraceback.

Add a test for a failing task and check that the exceptions' type
and message are preserved.

* Amend ExceptionWithTraceback import

* doc: fix `commenter_options` type (open-telemetry#1926)

Co-authored-by: Shalev Roda <[email protected]>

* Update version to 1.21.0.dev/0.42b0.dev (open-telemetry#1930)

Co-authored-by: Diego Hurtado <[email protected]>

* Modify eachdist and build script for container packages (open-telemetry#1949)

* Update pyproject.toml (open-telemetry#1950)

* Fix version of Flask dependency werkzeug (open-telemetry#1980)

* Feature/add new process metrics (open-telemetry#1948)

* Using new cloud resource id attribute (open-telemetry#1976)

* Aiohttp-server Instrumentation (open-telemetry#1800)

Co-authored-by: Kenny Trytek <[email protected]>
Co-authored-by: Daniel Manchon <[email protected]>

* Specify the topic arn as the span attribute messaging.destination.name in the botocore sns instrumentation (open-telemetry#1995)

* Add -ra option to pytest runs (open-telemetry#2035)

* Fix failing test cases (open-telemetry#2033)

* Set schema_url on all tracers and meters (open-telemetry#1977)

* Update version to 1.22.0.dev/0.43b0.dev (open-telemetry#2031)

Co-authored-by: Diego Hurtado <[email protected]>

* Exclude background task execution from root server span in ASGI middleware  (open-telemetry#1952)

* Fix contrib build (open-telemetry#2054)

* Fix error in build for README in Cassandra instrumentation (open-telemetry#2045)

* Copy change log updates from release/v1.21.x-0.42bx (open-telemetry#2049)

* Implement Otel semantic convention stability opt-in (open-telemetry#1987)

* Added support for pypy3 system metrics (open-telemetry#2062)

* Added support for pypy3 system metrics

Co-authored-by: Suryanarayana Peri <[email protected]>
Signed-off-by: Rahul Kumar <[email protected]>

* Change in if condition to log warn message for pypy
Co-authored-by: Suryanarayana Peri <[email protected]>

Signed-off-by: Rahul Kumar <[email protected]>

* Added logger to else block if pypy
Co-authored-by: Suryanarayana Peri <[email protected]>

Signed-off-by: Rahul Kumar <[email protected]>

* Reverting the changes
Co-authored-by: Suryanarayana Peri <[email protected]>

Signed-off-by: Rahul Kumar <[email protected]>

* Changes requested by external reviewer
Co-authored-by: Suryanarayana Peri <[email protected]>

Signed-off-by: Rahul Kumar <[email protected]>

---------

Signed-off-by: Rahul Kumar <[email protected]>
Co-authored-by: Suryanarayana Peri <[email protected]>

* Don't collect system.network.connections due to limitation in psutil causing exceptions (open-telemetry#2008)

* Don't collect system.network.connections due to limitation in psutil causing exceptions

* add changelog

---------

Co-authored-by: Srikanth Chekuri <[email protected]>
Co-authored-by: Shalev Roda <[email protected]>

* urllib/urllib3 - set metric descriptions per semantic conventions (open-telemetry#1959)

* Set metric descriptions per semantic conventions

* Set metric descriptions per semantic conventions

* fix spelling

---------

Co-authored-by: Shalev Roda <[email protected]>

* Enable lint on CI and update deps (open-telemetry#2067)

* Fix black an isort

* change bootstrap_gen to use a list instead of dict

* Bunch of updates

* Fix build

* fix lint

* Fix docs

* Fix lint

* More fixes

* Fix lint

* fix stupid mistake

---------

Co-authored-by: Christian Hartung <[email protected]>

* Add a note about system dependencies for instrumentation pkgs (open-telemetry#2068)

Co-authored-by: Shalev Roda <[email protected]>

* [opentelemetry-instrumentation-httpx] fix mixing of sync and non async hooks (open-telemetry#1920)

* fix: sync response hooks being used on httpx.AsyncClient

* docs: add changelog

* docs: improved docs a bit more

* docs: fix variable name

---------

Co-authored-by: Diego Hurtado <[email protected]>
Co-authored-by: Shalev Roda <[email protected]>

* aio-pika instrumentation: Removed check for non-sampled span when inject message header. (open-telemetry#1969)

* aio-pika instrumentation: Removed check for non-sampled span when inject message headers. Reason to change is that sampled flag can be propagate https://www.w3.org/TR/trace-context/#sampled-flag and be useful when trace is not sampled.

* black formting

---------

Co-authored-by: Shalev Roda <[email protected]>

* Fix arity of context.abort for AIO RPCs (open-telemetry#2066)

* Requests instrumentation http semantic convention migration (open-telemetry#2002)

* Fix Falcon dependency (open-telemetry#2090)

Fixes open-telemetry#2089

* Update version to 1.23.0.dev/0.44b0.dev (open-telemetry#2091)

* Update version to 1.23.0.dev/0.44b0.dev

* Update core SHA

* Update generate

---------

Co-authored-by: Diego Hurtado <[email protected]>

* `FlaskInstrumentation` doesn't exist (open-telemetry#2070)

Co-authored-by: Shalev Roda <[email protected]>

* Remove URL credentials (httpx integration) (open-telemetry#2020)

* Remove URL credentials (httpx)

* Add CHANGELOG

* Clean up use of suppress_instrumentation in context and fix httpx bug (open-telemetry#2061)

* Clean up use of suppress_instrumentation in context and fix httpx bug

* Clean up use of suppress_instrumentation in context and fix httpx bug

* changelog

* fix tests

* fix import

* fmt

* update dep

* lint

* remove unused imports

* apply lint

* Fix version for pika

* Fix lint

---------

* Fix dependency for azure resource detector (open-telemetry#2072)

* Update README.rst (open-telemetry#2060)

* Add 10 second timeout to VM Resource Detector (open-telemetry#2119)

* Update version.py for release (open-telemetry#2120)

* Separate jobs per instrumentation (open-telemetry#2121)

* Separate jobs per instrumentation

Fixes open-telemetry#2036

* Separate in 2 workflows

* Added explanation for separation

* Feature/support for flask 3.0.0 (open-telemetry#2013)

* support flask 3.0.0

* support flask 3.0.0

* support flask 3.0.0

* modify tox.ini

* modify Werkzeug version

* modify Werkzeug version

* modify flask test version

* modify flask version

* modify flask version

* modify CHANGELOG.md

* include feedback

* include feedback

* Fix lint and generate

---------

Co-authored-by: Diego Hurtado <[email protected]>

* Fix tox factor matching (open-telemetry#2129)

* Fix tox factor matching

Fixes open-telemetry#2128

* Add missing fixes for several test envs

* Fix django

* Update azure resource detector timeout to 4 seconds (open-telemetry#2136)

* Increment resource detector version (open-telemetry#2137)

* feat: configure header extraction for ASGI middleware via constructor params (open-telemetry#2026)

* feat: configure header extraction for ASGI middleware via constructor params

* fix django middleware

* lint

* remove import

* Fix lint

* Update instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/__init__.py

* Update opentelemetry-instrument README (open-telemetry#2108)

* Update opentelemetry-instrument README

- Clarify trace versus metric documentation
- Add console exporter documentation
- Add quotes to command to support zsh
- Fix grammatical errors

* fix typo

* fix typo

* Remove note on HTTP for trace only

---------

* Remove useless shebangs (open-telemetry#2135)

These files do not have the executable bit set in their filesystem
permissions (so the shebang line, `#!`, is useless), and they are not
script-like (do not have `if __name__ == "__main__"` or interesting
side-effects), so making them executable would not make sense.

* Add support for confluent_kafka until 2.3.0 version; (open-telemetry#2132)

* Updated version of supported confluent kafka to 2.3;

* Updated CHANGELOG.md;

---------

* Drop support for 3.7 (open-telemetry#2152)

* Drop support for 3.7

Fixes open-telemetry#2151

* Remove 37

* Fix link to OpenTelemetry kafka-python Instrumentation (open-telemetry#2147)

Co-authored-by: Shalev Roda <[email protected]>

* Stop multiple calls to AsyncPGInstrumentor.__init__ from clobbering instance attributes (open-telemetry#1791)

* Stop multiple calls to AsyncPGInstrumentor.__init__ from clobbering instance tracer attribute

* Remove class-level initialisation of _tracer

* Fix regex

* Add to changelog

* Fix lint errors

* Update CHANGELOG.md

Co-authored-by: Shalev Roda <[email protected]>

* Set tracer in class definition to avoid lint error

---------

Co-authored-by: Srikanth Chekuri <[email protected]>
Co-authored-by: Shalev Roda <[email protected]>

* Update core SHA (open-telemetry#2163)

Fxes open-telemetry#2162

* Fix celery and urllib tests (open-telemetry#2170)

* Update core SHA

Fixes open-telemetry#2173

* Fix celery and urllib tests

Fixes open-telemetry#2164

* Remove references to 3.7 (open-telemetry#2172)

Fixes open-telemetry#2171

* Upgrade tox (open-telemetry#2118)

* Upgrade tox

* fixup! Upgrade tox

* Add excludes

---------

Co-authored-by: Diego Hurtado <[email protected]>

* Fix azure vm resource detector tests/Suppress instrumentation for urllib call (open-telemetry#2178)

* Feature/asyncio instrumentation (open-telemetry#1943)

* add asyncio instrumentation

* add asyncio instrumentation

* modify test configure

* modify test configure

* modify tox generate result

* modify tox generate result

* add python version check

* modify test code

* add CHANGELOG.md

* add docs

* modify pyproject.toml

* modify pyproject.toml

* Add comments mentioned in an issue open-telemetry#1919

* Add comments mentioned in an issue open-telemetry#1919

* add asyncio component owner

* - Add instrumentation-asyncio metric.
- Configure coroutines/to_thread func to apply trace via environment variables.
- Apply trace to future using a boolean environment variable.

* modify docs

* modify docs

* modify docs

* modify docs

* modify docs

* modify test_code

* modify test_code

* modify test_code

* modify asyncio version

* modify asyncio version

* update dependency

* modified lint results

* modified lint results

* modified lint results

* modified lint results

* modified lint results

* modified lint results

* modified lint results

* include feedback

* include feedback

* include feedback

* modify docs test results

* Update instrumentation/opentelemetry-instrumentation-asyncio/README.rst

Co-authored-by: Aaron Abbott <[email protected]>

* Update instrumentation/opentelemetry-instrumentation-asyncio/README.rst

Co-authored-by: Aaron Abbott <[email protected]>

* Update instrumentation/opentelemetry-instrumentation-asyncio/README.rst

Co-authored-by: Aaron Abbott <[email protected]>

* Update instrumentation/opentelemetry-instrumentation-asyncio/README.rst

Co-authored-by: Aaron Abbott <[email protected]>

* Update instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/utils.py

Co-authored-by: Aaron Abbott <[email protected]>

* Update instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/utils.py

Co-authored-by: Aaron Abbott <[email protected]>

* include feedback

* include feedback

* drop python 3.7 support

* drop python 3.7 support

* Removed from default_instrumentations

* Recover

---------

Co-authored-by: Diego Hurtado <[email protected]>
Co-authored-by: Aaron Abbott <[email protected]>

* Drop obsolete parameterized test dependency (open-telemetry#2134)

In the test dependencies for `opentelemetry-instrumentation-falcon`,
don’t depend on `parametrized` because `pytest.mark.parametrize` is now
included in `pytest`.

* AwsLambdaInstrumentor handles and re-raises handler function exception (open-telemetry#2245)

* Remove werkzeug from Flask instrumentation dependencies (open-telemetry#2257)

Fixes open-telemetry#2256

* Skipping certain folders in release script (open-telemetry#2258)

* Update version to 1.24.0.dev/0.45b0.dev (open-telemetry#2262)

* Copy change log updates from release/v1.23.x-0.44bx (open-telemetry#2265)

* Fix various release scripts aspects (open-telemetry#2267)

* Add instrumentation for Psycopg 3.x (open-telemetry#2123)

* Add instrumentation for Psycopg 3.x

* Add federicobond to component_owners.yml

* Refactor use of changedir in tox.ini (open-telemetry#2332)

Fixes #3745

* Align gRPC server span status codes to OTEL specs (open-telemetry#2019)

* Fix OpenTelemetry Aio-pika instrumentation link (open-telemetry#2259)

* Update README.rst (open-telemetry#2111)

Co-authored-by: Leighton Chen <[email protected]>

* Fix docker test dependencies (open-telemetry#2345)

Fixes open-telemetry#2344

* Celery duplicated instrumentation (open-telemetry#2342)

* * Adding (failing) testcase to cover Issue open-telemetry#2029

* * move Instance variables to class variables. Since the object in question will be a singelton. This will resolve open-telemetry#2029 where multiple calls to the instrumentation will assign Null values.

* * black formatting

* * Changelog stub entry, PR # to follow

* * updating the pullrequest number

* * remove superfluous constructor

* * moving Change log to unreleased section

---------

Co-authored-by: Shalev Roda <[email protected]>

* chore: fix md based on rules and fix bad links (open-telemetry#2240)

* chore: fix md based on rules and fix bad links

* chore: add index to contribuiting and readme files

---------

Co-authored-by: Leighton Chen <[email protected]>
Co-authored-by: Shalev Roda <[email protected]>

* Use set -e to catch errors in all scripts (open-telemetry#2347)

* Fix asyncio related warnings in tests (open-telemetry#2335)

* aiopg: fix runtime warnings when running tests

Fixes:
RuntimeWarning: coroutine 'MockCursor.execute' was never awaited
    cursor.execute(query)

* aio-pika: no need to return an awaitable in mocked method

No need to return an awaitable since the mocked method awaits
itself.
Fixes:
    RuntimeWarning: coroutine 'sleep' was never awaited

---------

Co-authored-by: Leighton Chen <[email protected]>

* feat: add importlib metadata default on flask module (open-telemetry#2302)

* feat: add importlib metadata default

* feat: add importlib metadata default

* feat: add importlib metadata default

* Fix lint

---------

Co-authored-by: Diego Hurtado <[email protected]>

* Remove [test] package from opentelemetry-contrib-instrumentations (open-telemetry#2318)

Fixes open-telemetry#2236

* Remove [test] package from aiopg instrumentation (open-telemetry#2243)

Fixes open-telemetry#2185

* Remove [test] package from aio-pika instrumentation (open-telemetry#2244)

Fixes open-telemetry#2186

* Remove [test] package from asgi instrumentation (open-telemetry#2247)

Fixes open-telemetry#2187

* Remove [test] package from asyncio instrumentation (open-telemetry#2248)

Fixes open-telemetry#2188

* Remove [test] package from flask instrumentation (open-telemetry#2127)

Fixes open-telemetry#2126

* Remove [test] package for django instrumentation (open-telemetry#2311)

Fixes open-telemetry#2198

* Remove [test] package from falcon instrumentation (open-telemetry#2313)

Fixes open-telemetry#2200

* Remove [test] package from wsgi instrumentation (open-telemetry#2283)

Fixes open-telemetry#2227

* Remove [test] package from pyramid instrumentation (open-telemetry#2273)

Fixes open-telemetry#2214

* Remove [test] package from starlette instrumentation (open-telemetry#2278)

Fixes open-telemetry#2221

* Fix response hook (open-telemetry#2038)

Response hook receives a third parameter, Response, and that should be reflected in the _ResponseHook type

Co-authored-by: Leighton Chen <[email protected]>
Co-authored-by: Shalev Roda <[email protected]>

* Remove [test] package from fastapi instrumentation (open-telemetry#2289)

Fixes open-telemetry#2201

* Remove [test] package from tornado instrumentation (open-telemetry#2280)

Fixes open-telemetry#2223

* Remove [test] package from aiohttp-client instrumentation (open-telemetry#2238)

Fixes open-telemetry#2183

* Remove [test] package from aiohttp-server instrumentation (open-telemetry#2242)

Fixes open-telemetry#2184

* Remove [test] package from httpx instrumentation (open-telemetry#2314)

Fixes open-telemetry#2203

* Remove [test] package from requests instrumentation (open-telemetry#2276)

Fixes open-telemetry#2217

* Remove [test] package from urllib instrumentation (open-telemetry#2282)

Fixes open-telemetry#2225

* Remove [test] package from urllib3 instrumentation (open-telemetry#2316)

Fixes open-telemetry#2226

* Remove [test] package from pymemcache instrumentation (open-telemetry#2310)

Fixes open-telemetry#2211

* Remove [test] package from elasticsearch configuration (open-telemetry#2312)

Fixes #3745

* Remove [test] package from mysqlclient instrumentation (open-telemetry#2295)

Fixes open-telemetry#2208

* Feature/convention http server duration (open-telemetry#2326)

* feat: add http.duration convention

* feat: add http.duration convention

* feat: replace for the last description version Duration of HTTP client requests

* feat: add new description to histogram

* Remove [test] package from sqlalchemy instrumentation (open-telemetry#2315)

Fixes open-telemetry#2219

Co-authored-by: Shalev Roda <[email protected]>

* Remove [test] package from dbapi instrumentation (open-telemetry#2288)

Fixes open-telemetry#2197

* Remove [test] package from logging instrumentation (open-telemetry#2293)

Fixes open-telemetry#2206

* Remove [test] package from asyncpg instrumentation (open-telemetry#2249)

Fixes open-telemetry#2189

* instrumentation/django: fix test_trace_parent (open-telemetry#2338)

* Psycopg3 sync and async instrumentation   (open-telemetry#2146)

* Skip celery test case if running in PyPy (open-telemetry#2349)

Fixes open-telemetry#2348

Co-authored-by: Leighton Chen <[email protected]>

* Remove [test] package from aws-lambda instrumentation (open-telemetry#2250)

Fixes open-telemetry#2190

* Remove [test] package from cassandra instrumentation (open-telemetry#2285)

Fixes open-telemetry#2194

* Remove [test] package from botocore instrumentation (open-telemetry#2284)

Fixes open-telemetry#2193

* Remove [test] package from celery instrumentation (open-telemetry#2286)

Fixes open-telemetry#2195

* Remove [test] package from grpc instrumentation (open-telemetry#2290)

Fixes open-telemetry#2202

* Remove [test] package from jinja2 instrumentation (open-telemetry#2291)

Fixes open-telemetry#2204

* Remove [test] package from kafka-python instrumentation (open-telemetry#2292)

Fixes open-telemetry#2205

* Remove [test] package from boto instrumentation (open-telemetry#2251)

Fixes open-telemetry#2191

* Remove [test] package from mysql instrumentation (open-telemetry#2294)

Fixes open-telemetry#2207

* Remove [test] package from psycopg2 instrumentation (open-telemetry#2307)

Fixes open-telemetry#2210

* Remove [test] package from pymongo instrumentation (open-telemetry#2269)

Fixes open-telemetry#2212

* avoid losing repeated HTTP headers (open-telemetry#2266)

* avoid loosing repeated HTTP headers

* fix fof wsgi, test in falcon

* add changelog

* add more tests

* linting

* fix falcon and flask

* remove unused test

---------

Co-authored-by: Leighton Chen <[email protected]>
Co-authored-by: Diego Hurtado <[email protected]>

* Remove [test] package from redis instrumentation (open-telemetry#2274)

Fixes open-telemetry#2215

* Remove [test] package from remoulade instrumentation (open-telemetry#2275)

Fixes open-telemetry#2216

* Remove [test] package from sklearn instrumentation (open-telemetry#2303)

Fixes open-telemetry#2218

* Remove [test] package from psycopg instrumentation (open-telemetry#2309)

Fixes open-telemetry#2308

* Remove [test] package from resource-detector-container (open-telemetry#2319)

Fixes open-telemetry#2228

* Remove [test] package from opentelemetry-resource-detector-azure (open-telemetry#2317)

Fixes open-telemetry#2229

* Remove [test] package from propagator-aws-xray (open-telemetry#2320)

Fixes open-telemetry#2230

* Remove [test] package from propagator-ot-trace (open-telemetry#2321)

Fixes open-telemetry#2231

* Remove [test] package from exporter-richconsole (open-telemetry#2322)

Fixes open-telemetry#2232

* Remove [test] package from exporter-prometheus-remote-write (open-telemetry#2323)

Fixes open-telemetry#2233

* Remove [test] package from sdk-extension-aws (open-telemetry#2324)

Fixes open-telemetry#2234

* Remove [test] package from opentelemetry-instrumentation (open-telemetry#2327)

Fixes open-telemetry#2235

* Remove [test] package from distro (open-telemetry#2325)

Fixes open-telemetry#2237

* Remove [test] package from sqlite3 instrumentation (open-telemetry#2277)

Fixes open-telemetry#2220

* Remove [test] package from system-metrics instrumentation (open-telemetry#2279)

Fixes open-telemetry#2222

* Remove [test] package from tortoiseorm instrumentation (open-telemetry#2281)

Fixes open-telemetry#2224

* Remove [test] package from confluent-kafka instrumentation (open-telemetry#2287)

Fixes open-telemetry#2196

* Remove [test] package from pymysql instrumentation (open-telemetry#2272)

Fixes open-telemetry#2272

* Remove [test] package from boto3sqs instrumentation (open-telemetry#2252)

Fixes open-telemetry#2192

* Remove [test] package from _template (open-telemetry#2329)

Fixes open-telemetry#2328

* Remove [test] package from pika instrumentation (open-telemetry#2306)

Fixes open-telemetry#2209

* elasticsearch: don't set body as db statement for bulk requests (open-telemetry#2355)

* elasticsearch: don't set body as db statement for bulk requests

bulk requests can be too big and diverse to make sense as db statement.
Other than that the sanitizer currently only handles dicts so it's
crashing.

Closes open-telemetry#2150

Co-authored-by: Jason Mobarak <[email protected]>
Co-authored-by: Quentin Pradet <[email protected]>

* Update CHANGELOG

* Please the linter

---------

Co-authored-by: Jason Mobarak <[email protected]>
Co-authored-by: Quentin Pradet <[email protected]>

* regression-fix: retain httpx.URL type on request.url (open-telemetry#2359)

* fix: retain httpx.URL type on request.url

This fixes a regression caused in open-telemetry#2020 where request.url stopped being of `httpx.URL` type, causing issues with request/response hooks.

* Update CHANGELOG.md

* tests: adding assertions to verify request.url on hooks is a httpx.URL

* fixup: adjust check to consider httpx < 0.20.0

* fixup: keep code dry

---------

Co-authored-by: Diego Hurtado <[email protected]>
Co-authored-by: Leighton Chen <[email protected]>
Co-authored-by: Srikanth Chekuri <[email protected]>

* Add cloud.account.id attribute by AwsLambdaInstrumentor (open-telemetry#2367)

* Add cloud.account.id attribute by AwsLambdaInstrumentor

* Changelog

* Update test

* lint

* Update version to 1.25.0.dev/0.46b0.dev (open-telemetry#2376)

* Remove context manager check (open-telemetry#2391)

* rename `type` to `asgi.event.type` in ASGI instrumentation (open-telemetry#2300)

* Change meta data service timeout to 200ms (open-telemetry#2387)

* Azure resource detector 0.1.4 (open-telemetry#2394)

* Update contrib repo approvers list (open-telemetry#2395)

* Add AWS resource detector entry points (open-telemetry#2382)

* feat: add opentelemetry-instrumentation-threading library (open-telemetry#2253)

* feat: add opentelemetry-instrumentation-threading library

* fix: update python file with black formatter

* fix: modified title underline too short issue

* fix: modified library sorted via isort tool

* fix: modified CHANGELOG.md and remove unused parameter

* test: migrated unit test cases from the open-telemetry#1582 to this project

* chroe: updated the tox.ini test commands

* fix: fixed the lint issue

* feat: support ThreadPool and update document

* fix: fixed the lint issue

* refactor: remove redundant class and simplify capture OTel context usage

* fix: removed unused parameter

* test: added a new test case for thread pool

* fix: remove unused return response

* refactor: compared the array

* fix: remove f-string

* fix: fixed pylint issue

* fix: test library

* fix: updated CHANGELOG.md

---------

Co-authored-by: Aaron Abbott <[email protected]>

* feat: update otel dependencies

---------

Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: Rahul Kumar <[email protected]>
Co-authored-by: Nahian-Al Hasan <[email protected]>
Co-authored-by: Srikanth Chekuri <[email protected]>
Co-authored-by: Shalev Roda <[email protected]>
Co-authored-by: OpenTelemetry Bot <[email protected]>
Co-authored-by: Diego Hurtado <[email protected]>
Co-authored-by: Sanket Mehta <[email protected]>
Co-authored-by: Leighton Chen <[email protected]>
Co-authored-by: Tristan Sloughter <[email protected]>
Co-authored-by: Matthew Grossman <[email protected]>
Co-authored-by: Nimrod Shlagman <[email protected]>
Co-authored-by: Phillip Verheyden <[email protected]>
Co-authored-by: Maciej Nachtygal <[email protected]>
Co-authored-by: Filip Nikolovski <[email protected]>
Co-authored-by: Tammy Baylis <[email protected]>
Co-authored-by: Yashaswi Makula <[email protected]>
Co-authored-by: Iman Shafiei <[email protected]>
Co-authored-by: Akochavi <[email protected]>
Co-authored-by: David Gonoradsky <[email protected]>
Co-authored-by: Ran Nozik <[email protected]>
Co-authored-by: Pablo Collins <[email protected]>
Co-authored-by: Iman Shafiei <[email protected]>
Co-authored-by: Michael <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matt Oberle <[email protected]>
Co-authored-by: Matt Oberle <[email protected]>
Co-authored-by: Vivanov98 <[email protected]>
Co-authored-by: Rytis Bagdziunas <[email protected]>
Co-authored-by: Mario Jonke <[email protected]>
Co-authored-by: Jeremy Voss <[email protected]>
Co-authored-by: Marc Dougherty <[email protected]>
Co-authored-by: Alexandre Papin <[email protected]>
Co-authored-by: Ron Yishai <[email protected]>
Co-authored-by: Thomas LÉVEIL <[email protected]>
Co-authored-by: Jakub Warczarek <[email protected]>
Co-authored-by: Raphael Philipe Mendes da Silva <[email protected]>
Co-authored-by: Javier Fernández Rodríguez <[email protected]>
Co-authored-by: mattcontinisio <[email protected]>
Co-authored-by: Noemi <[email protected]>
Co-authored-by: João Thallis <[email protected]>
Co-authored-by: Allen Kim <[email protected]>
Co-authored-by: André "decko" de Brito <[email protected]>
Co-authored-by: Kenny Trytek <[email protected]>
Co-authored-by: Daniel Manchon <[email protected]>
Co-authored-by: Margaret Yu <[email protected]>
Co-authored-by: Liudmila Molkova <[email protected]>
Co-authored-by: siminn-arnorgj <[email protected]>
Co-authored-by: Rahul Kumar <[email protected]>
Co-authored-by: Suryanarayana Peri <[email protected]>
Co-authored-by: Adrian Garcia Badaracco <[email protected]>
Co-authored-by: Pierre Tessier <[email protected]>
Co-authored-by: Christian Hartung <[email protected]>
Co-authored-by: samypr100 <[email protected]>
Co-authored-by: Bulygin Evgeny <[email protected]>
Co-authored-by: Sean Kenny <[email protected]>
Co-authored-by: Jean Jordaan <[email protected]>
Co-authored-by: Denis Otkidach <[email protected]>
Co-authored-by: Kenny Guo <[email protected]>
Co-authored-by: Allen Kim <[email protected]>
Co-authored-by: Steve Flanders <[email protected]>
Co-authored-by: Ben Beasley <[email protected]>
Co-authored-by: Sofiia Tesliuk <[email protected]>
Co-authored-by: Bruno Guimarães <[email protected]>
Co-authored-by: Marcus Lim <[email protected]>
Co-authored-by: Iuri de Silvio <[email protected]>
Co-authored-by: Aaron Abbott <[email protected]>
Co-authored-by: Federico Bond <[email protected]>
Co-authored-by: Filip Nikolovski <[email protected]>
Co-authored-by: Emanuele Fumagalli <[email protected]>
Co-authored-by: Andrew L <[email protected]>
Co-authored-by: Markus <[email protected]>
Co-authored-by: Rodrigo-Novas <[email protected]>
Co-authored-by: John Bley <[email protected]>
Co-authored-by: Riccardo Magliocchetti <[email protected]>
Co-authored-by: Mario de Frutos Dieguez <[email protected]>
Co-authored-by: Markus <[email protected]>
Co-authored-by: Samuel Colvin <[email protected]>
Co-authored-by: Jason Mobarak <[email protected]>
Co-authored-by: Quentin Pradet <[email protected]>
Co-authored-by: abstractOwl <[email protected]>
Co-authored-by: Changemyminds <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

4 participants