From 3e044d430a26321888a513430c7864c4d61ec90b Mon Sep 17 00:00:00 2001 From: Radhika Gupta Date: Wed, 1 Jul 2026 13:25:04 -0700 Subject: [PATCH 1/5] Add support for httpx instrumentation --- .../opentelemetry/exporter/_constants.py | 2 + .../azure-monitor-opentelemetry/README.md | 4 ++ .../azure/monitor/opentelemetry/_constants.py | 1 + .../dev_requirements.txt | 1 + .../samples/README.md | 2 + .../samples/test_httpx.py | 65 +++++++++++++++++++ .../samples/tracing/http_httpx.py | 31 +++++++++ .../tracing/instrumentation_options.py | 1 + .../azure-monitor-opentelemetry/setup.py | 1 + .../tests/instrumentation/test_httpx.py | 20 ++++++ .../tests/utils/test_configurations.py | 11 ++++ 11 files changed, 139 insertions(+) create mode 100644 sdk/monitor/azure-monitor-opentelemetry/samples/test_httpx.py create mode 100644 sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_httpx.py create mode 100644 sdk/monitor/azure-monitor-opentelemetry/tests/instrumentation/test_httpx.py diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/_constants.py b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/_constants.py index 8c0b9199f2a9..8643d12f8d2d 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/_constants.py +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/_constants.py @@ -301,6 +301,7 @@ class _RP_Names(Enum): "tornado", "urllib", "urllib3", + "httpx", _AZURE_SDK_OPENTELEMETRY_NAME, "cassandra", "tortoiseorm", @@ -352,6 +353,7 @@ class _RP_Names(Enum): "opentelemetry-instrumentation-tornado", "opentelemetry-instrumentation-urllib", "opentelemetry.instrumentation.urllib3", + "opentelemetry.instrumentation.httpx", "opentelemetry.instrumentation.wsgi", ) diff --git a/sdk/monitor/azure-monitor-opentelemetry/README.md b/sdk/monitor/azure-monitor-opentelemetry/README.md index e74d0c656d79..ee2a93fed322 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/README.md +++ b/sdk/monitor/azure-monitor-opentelemetry/README.md @@ -19,6 +19,7 @@ OpenTelemetry instrumentations allow automatic collection of requests sent from | [OpenTelemetry Django Instrumentation][ot_instrumentation_django] | [django][pypi_django] | [link][ot_instrumentation_django_version] | [OpenTelemetry FastApi Instrumentation][ot_instrumentation_fastapi] | [fastapi][pypi_fastapi] | [link][ot_instrumentation_fastapi_version] | [OpenTelemetry Flask Instrumentation][ot_instrumentation_flask] | [flask][pypi_flask] | [link][ot_instrumentation_flask_version] +| [OpenTelemetry Httpx Instrumentation][ot_instrumentation_httpx] | [httpx][pypi_httpx] | [link][ot_instrumentation_httpx_version] | [OpenTelemetry Psycopg2 Instrumentation][ot_instrumentation_psycopg2] | [psycopg2][pypi_psycopg2] | [link][ot_instrumentation_psycopg2_version] | [OpenTelemetry Requests Instrumentation][ot_instrumentation_requests] | [requests][pypi_requests] | [link][ot_instrumentation_requests_version] | [OpenTelemetry UrlLib Instrumentation][ot_instrumentation_urllib] | [urllib][pypi_urllib] | All @@ -243,6 +244,8 @@ contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additio [ot_instrumentation_fastapi_version]: https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/instrumentation/opentelemetry-instrumentation-fastapi/src/opentelemetry/instrumentation/fastapi/package.py#L16 [ot_instrumentation_flask]: https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-flask [ot_instrumentation_flask_version]: https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/package.py#L16 +[ot_instrumentation_httpx]: https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-httpx +[ot_instrumentation_httpx_version]: https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/instrumentation/opentelemetry-instrumentation-httpx/src/opentelemetry/instrumentation/httpx/package.py#L16 [ot_instrumentation_psycopg2]: https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-psycopg2 [ot_instrumentation_psycopg2_version]: https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/instrumentation/opentelemetry-instrumentation-psycopg2/src/opentelemetry/instrumentation/psycopg2/package.py#L16 [ot_instrumentation_requests]: https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-requests @@ -260,6 +263,7 @@ contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additio [pypi_django]: https://pypi.org/project/Django/ [pypi_fastapi]: https://pypi.org/project/fastapi/ [pypi_flask]: https://pypi.org/project/Flask/ +[pypi_httpx]: https://pypi.org/project/httpx/ [pypi_psycopg2]: https://pypi.org/project/psycopg2/ [pypi_requests]: https://pypi.org/project/requests/ [pypi_urllib]: https://docs.python.org/3/library/urllib.html diff --git a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_constants.py b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_constants.py index 8e74c26db112..dde291d442dd 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_constants.py +++ b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_constants.py @@ -78,6 +78,7 @@ "django", "fastapi", "flask", + "httpx", "psycopg2", "requests", "urllib", diff --git a/sdk/monitor/azure-monitor-opentelemetry/dev_requirements.txt b/sdk/monitor/azure-monitor-opentelemetry/dev_requirements.txt index c2d665032413..a04a4e50aa62 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/dev_requirements.txt +++ b/sdk/monitor/azure-monitor-opentelemetry/dev_requirements.txt @@ -6,4 +6,5 @@ flask psycopg2-binary requests urllib3 +httpx brotli diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/README.md b/sdk/monitor/azure-monitor-opentelemetry/samples/README.md index 0fcb0136ce6b..1b4f95fee6ef 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/README.md +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/README.md @@ -33,6 +33,7 @@ For guidance on the samples README, visit the [sample guide](https://github.com/ |[tracing/db_psycopg2.py][db_psycopg2] | Instrument the PsycoPG2 library | |[tracing/http_fastapi.py][http_fastapi] | Instrument a FastAPI app | |[tracing/http_flask.py][http_flask] | Instrument a Flask app | +|[tracing/http_httpx.py][http_httpx] | Instrument the HTTPX library | |[tracing/http_requests.py][http_requests] | Instrument the Requests library | |[tracing/http_urllib.py][http_urllib] | Instrument the URLLib library | |[tracing/http_urllib3.py][http_urllib3] | Instrument the URLLib library | @@ -83,6 +84,7 @@ To learn more, see the [Azure Monitor OpenTelemetry Distro documentation][distro [db_psycopg2]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/db_psycopg2.py [http_fastapi]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_fastapi.py [http_flask]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_flask.py +[http_httpx]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_httpx.py [http_requests]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_requests.py [http_urllib]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_urllib.py [http_urllib3]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_urllib3.py diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/test_httpx.py b/sdk/monitor/azure-monitor-opentelemetry/samples/test_httpx.py new file mode 100644 index 000000000000..5c398b805757 --- /dev/null +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/test_httpx.py @@ -0,0 +1,65 @@ +# Copyright (c) Microsoft. All rights reserved. + +import asyncio +from random import randint +from typing import Annotated + +from agent_framework import Agent, tool +from agent_framework.foundry import FoundryChatClient +from agent_framework.observability import get_tracer +from azure.identity import AzureCliCredential +from dotenv import load_dotenv +#from microsoft.opentelemetry import use_microsoft_opentelemetry +from azure.monitor.opentelemetry._configure import configure_azure_monitor +from opentelemetry.trace import SpanKind +from opentelemetry.trace.span import format_trace_id +from pydantic import Field + +# Load environment variables from .env file +load_dotenv() + + +@tool(approval_mode="never_require") +async def get_weather( + location: Annotated[str, Field(description="The location to get the weather for.")], +) -> str: + """Get the weather for a given location.""" + await asyncio.sleep(randint(0, 10) / 10.0) # Simulate a network call + conditions = ["sunny", "cloudy", "rainy", "stormy"] + return f"The weather in {location} is {conditions[randint(0, 3)]} with a high of {randint(10, 30)}°C." + + +async def main(): + # Set up Azure monitor exporters for telemetry + # This will automatically enable instrumentation for Agent Framework + #use_microsoft_opentelemetry(enable_azure_monitor=True) + configure_azure_monitor() + + questions = [ + "What's the weather in Amsterdam?", + "and in Paris, and which is better?", + "Why is the sky blue?", + ] + + with get_tracer().start_as_current_span("Scenario: Agent Chat", kind=SpanKind.CLIENT) as current_span: + print(f"Trace ID: {format_trace_id(current_span.get_span_context().trace_id)}") + + agent = Agent( + client=FoundryChatClient(credential=AzureCliCredential()), + tools=get_weather, + name="WeatherAgent", + instructions="You are a weather assistant.", + id="weather-agent", + ) + + session = agent.create_session() + for question in questions: + print(f"\nUser: {question}") + print(f"{agent.name}: ", end="") + async for update in agent.run(question, session=session, stream=True): + if update.text: + print(update.text, end="") + + +if __name__ == "__main__": + asyncio.run(main()) \ No newline at end of file diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_httpx.py b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_httpx.py new file mode 100644 index 000000000000..613c5e4aee3a --- /dev/null +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_httpx.py @@ -0,0 +1,31 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License in the project root for +# license information. +# -------------------------------------------------------------------------- + +import logging + +import httpx +from opentelemetry import trace +from azure.monitor.opentelemetry import configure_azure_monitor + +logger = logging.getLogger(__name__) + +# Configure Azure monitor collection telemetry pipeline +configure_azure_monitor() + +client = httpx.Client() + +tracer = trace.get_tracer(__name__) +with tracer.start_as_current_span("Request parent span") as span: + try: + # Requests made using the httpx library will be automatically captured + response = client.get("https://www.example.org/") + logger.warning("Request sent") + except Exception as ex: # pylint: disable=broad-exception-caught + # If an exception occurs, this can be manually recorded on the parent span + span.set_attribute("status", "exception") + span.record_exception(ex) + +input() diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/instrumentation_options.py b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/instrumentation_options.py index 149601564518..db5cff77dc8d 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/instrumentation_options.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/instrumentation_options.py @@ -17,5 +17,6 @@ "requests": {"enabled": True}, "urllib": {"enabled": False}, "urllib3": {"enabled": True}, + "httpx": {"enabled": True}, } ) diff --git a/sdk/monitor/azure-monitor-opentelemetry/setup.py b/sdk/monitor/azure-monitor-opentelemetry/setup.py index 857f4205add9..b0b88c3ff9c9 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/setup.py +++ b/sdk/monitor/azure-monitor-opentelemetry/setup.py @@ -93,6 +93,7 @@ "opentelemetry-instrumentation-urllib>=0.64b0,<0.65.0", "opentelemetry-instrumentation-urllib3>=0.64b0,<0.65.0", "opentelemetry-instrumentation-logging>=0.64b0,<0.65.0", + "opentelemetry-instrumentation-httpx>=0.64b0,<0.65.0", "opentelemetry-resource-detector-azure<1.0.0,>=0.1.5", ], entry_points={ diff --git a/sdk/monitor/azure-monitor-opentelemetry/tests/instrumentation/test_httpx.py b/sdk/monitor/azure-monitor-opentelemetry/tests/instrumentation/test_httpx.py new file mode 100644 index 000000000000..cc74c0ea5d09 --- /dev/null +++ b/sdk/monitor/azure-monitor-opentelemetry/tests/instrumentation/test_httpx.py @@ -0,0 +1,20 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License in the project root for +# license information. +# -------------------------------------------------------------------------- + +import unittest + +from opentelemetry.instrumentation.httpx import ( + HTTPXClientInstrumentor, +) + + +class TestHttpxInstrumentation(unittest.TestCase): + def test_instrument(self): + try: + HTTPXClientInstrumentor().instrument() + except Exception as ex: # pylint: disable=broad-except + print(ex) + self.fail(f"Unexpected exception raised when instrumenting {HTTPXClientInstrumentor.__name__}") diff --git a/sdk/monitor/azure-monitor-opentelemetry/tests/utils/test_configurations.py b/sdk/monitor/azure-monitor-opentelemetry/tests/utils/test_configurations.py index 81caeeda6faf..fab94569b51a 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/tests/utils/test_configurations.py +++ b/sdk/monitor/azure-monitor-opentelemetry/tests/utils/test_configurations.py @@ -111,6 +111,7 @@ def test_get_configurations(self, resource_create_mock): "requests": {"enabled": True}, "urllib": {"enabled": True}, "urllib3": {"enabled": True}, + "httpx": {"enabled": True}, "previewlib1": {"enabled": False}, "previewlib2": {"enabled": False}, }, @@ -145,6 +146,7 @@ def test_get_configurations_defaults(self, resource_create_mock): "requests": {"enabled": True}, "urllib": {"enabled": True}, "urllib3": {"enabled": True}, + "httpx": {"enabled": True}, }, ) self.assertEqual(configurations["resource"].attributes, TEST_DEFAULT_RESOURCE.attributes) @@ -193,6 +195,7 @@ def test_get_configurations_env_vars(self, resource_create_mock): "requests": {"enabled": False}, "urllib": {"enabled": True}, "urllib3": {"enabled": True}, + "httpx": {"enabled": True}, }, ) self.assertEqual(configurations["resource"].attributes, TEST_DEFAULT_RESOURCE.attributes) @@ -276,6 +279,7 @@ def test_merge_instrumentation_options_conflict(self, resource_create_mock): "requests": {"enabled": True}, "urllib": {"enabled": True}, "urllib3": {"enabled": False}, + "httpx": {"enabled": True}, }, ) @@ -310,6 +314,7 @@ def test_merge_instrumentation_options_extra_args(self, resource_create_mock): "requests": {"enabled": True}, "urllib": {"enabled": True}, "urllib3": {"enabled": True}, + "httpx": {"enabled": True}, }, ) @@ -455,6 +460,7 @@ def test_get_configurations_env_vars_rate_limited(self, resource_create_mock): "requests": {"enabled": False}, "urllib": {"enabled": True}, "urllib3": {"enabled": True}, + "httpx": {"enabled": True}, }, ) self.assertEqual(configurations["resource"].attributes, TEST_DEFAULT_RESOURCE.attributes) @@ -482,6 +488,7 @@ def test_get_configurations_rate_limited_sampler_param(self, resource_create_moc "requests": {"enabled": True}, "urllib": {"enabled": True}, "urllib3": {"enabled": True}, + "httpx": {"enabled": True}, }, ) self.assertEqual(configurations["resource"].attributes, TEST_DEFAULT_RESOURCE.attributes) @@ -520,6 +527,7 @@ def test_get_configurations_env_vars_no_preference(self, resource_create_mock): "requests": {"enabled": False}, "urllib": {"enabled": True}, "urllib3": {"enabled": True}, + "httpx": {"enabled": True}, }, ) self.assertEqual(configurations["resource"].attributes, TEST_DEFAULT_RESOURCE.attributes) @@ -558,6 +566,7 @@ def test_get_configurations_env_vars_check_default(self, resource_create_mock): "requests": {"enabled": False}, "urllib": {"enabled": True}, "urllib3": {"enabled": True}, + "httpx": {"enabled": True}, }, ) self.assertEqual(configurations["resource"].attributes, TEST_DEFAULT_RESOURCE.attributes) @@ -597,6 +606,7 @@ def test_get_configurations_env_vars_fixed_percentage(self, resource_create_mock "requests": {"enabled": False}, "urllib": {"enabled": True}, "urllib3": {"enabled": True}, + "httpx": {"enabled": True}, }, ) self.assertEqual(configurations["resource"].attributes, TEST_DEFAULT_RESOURCE.attributes) @@ -635,6 +645,7 @@ def test_get_configurations_env_vars_always_on(self, resource_create_mock): "requests": {"enabled": False}, "urllib": {"enabled": True}, "urllib3": {"enabled": True}, + "httpx": {"enabled": True}, }, ) self.assertEqual(configurations["resource"].attributes, TEST_DEFAULT_RESOURCE.attributes) From 6a5515083890817ee10d5b277d2dfd7ea973fa30 Mon Sep 17 00:00:00 2001 From: Radhika Gupta Date: Wed, 8 Jul 2026 13:18:45 -0700 Subject: [PATCH 2/5] Remove test file --- .../samples/test_httpx.py | 65 ------------------- 1 file changed, 65 deletions(-) delete mode 100644 sdk/monitor/azure-monitor-opentelemetry/samples/test_httpx.py diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/test_httpx.py b/sdk/monitor/azure-monitor-opentelemetry/samples/test_httpx.py deleted file mode 100644 index 5c398b805757..000000000000 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/test_httpx.py +++ /dev/null @@ -1,65 +0,0 @@ -# Copyright (c) Microsoft. All rights reserved. - -import asyncio -from random import randint -from typing import Annotated - -from agent_framework import Agent, tool -from agent_framework.foundry import FoundryChatClient -from agent_framework.observability import get_tracer -from azure.identity import AzureCliCredential -from dotenv import load_dotenv -#from microsoft.opentelemetry import use_microsoft_opentelemetry -from azure.monitor.opentelemetry._configure import configure_azure_monitor -from opentelemetry.trace import SpanKind -from opentelemetry.trace.span import format_trace_id -from pydantic import Field - -# Load environment variables from .env file -load_dotenv() - - -@tool(approval_mode="never_require") -async def get_weather( - location: Annotated[str, Field(description="The location to get the weather for.")], -) -> str: - """Get the weather for a given location.""" - await asyncio.sleep(randint(0, 10) / 10.0) # Simulate a network call - conditions = ["sunny", "cloudy", "rainy", "stormy"] - return f"The weather in {location} is {conditions[randint(0, 3)]} with a high of {randint(10, 30)}°C." - - -async def main(): - # Set up Azure monitor exporters for telemetry - # This will automatically enable instrumentation for Agent Framework - #use_microsoft_opentelemetry(enable_azure_monitor=True) - configure_azure_monitor() - - questions = [ - "What's the weather in Amsterdam?", - "and in Paris, and which is better?", - "Why is the sky blue?", - ] - - with get_tracer().start_as_current_span("Scenario: Agent Chat", kind=SpanKind.CLIENT) as current_span: - print(f"Trace ID: {format_trace_id(current_span.get_span_context().trace_id)}") - - agent = Agent( - client=FoundryChatClient(credential=AzureCliCredential()), - tools=get_weather, - name="WeatherAgent", - instructions="You are a weather assistant.", - id="weather-agent", - ) - - session = agent.create_session() - for question in questions: - print(f"\nUser: {question}") - print(f"{agent.name}: ", end="") - async for update in agent.run(question, session=session, stream=True): - if update.text: - print(update.text, end="") - - -if __name__ == "__main__": - asyncio.run(main()) \ No newline at end of file From 12768ebe871d8a7599243faf8a9ee99172dc771b Mon Sep 17 00:00:00 2001 From: Radhika Gupta Date: Wed, 8 Jul 2026 13:24:51 -0700 Subject: [PATCH 3/5] Add CHANGELOG --- sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md | 2 ++ sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md b/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md index 4596e68887a9..f741ad3989b4 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md @@ -3,6 +3,8 @@ ## 1.0.0b56 (Unreleased) ### Features Added +- Add httpx instrumentation support + ([#47953](https://github.com/Azure/azure-sdk-for-python/pull/47953)) ### Breaking Changes diff --git a/sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md b/sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md index 67e21f475185..236ca51c0c0c 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md +++ b/sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md @@ -3,6 +3,8 @@ ## 1.8.10 (Unreleased) ### Features Added +- Add httpx instrumentation support + ([#47953](https://github.com/Azure/azure-sdk-for-python/pull/47953)) ### Breaking Changes From f7ea2b6363b5e78050f36b75c93bea5cc1b2df8d Mon Sep 17 00:00:00 2001 From: Radhika Gupta Date: Wed, 8 Jul 2026 13:36:16 -0700 Subject: [PATCH 4/5] Remove duplicate declaration --- sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md | 2 -- .../azure/monitor/opentelemetry/exporter/_constants.py | 1 - 2 files changed, 3 deletions(-) diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md b/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md index f741ad3989b4..4596e68887a9 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md @@ -3,8 +3,6 @@ ## 1.0.0b56 (Unreleased) ### Features Added -- Add httpx instrumentation support - ([#47953](https://github.com/Azure/azure-sdk-for-python/pull/47953)) ### Breaking Changes diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/_constants.py b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/_constants.py index 8643d12f8d2d..ad00666f0041 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/_constants.py +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/_constants.py @@ -301,7 +301,6 @@ class _RP_Names(Enum): "tornado", "urllib", "urllib3", - "httpx", _AZURE_SDK_OPENTELEMETRY_NAME, "cassandra", "tortoiseorm", From 6996d89a4d08bcb10f6a4816dc69654355a45027 Mon Sep 17 00:00:00 2001 From: Radhika Gupta Date: Wed, 8 Jul 2026 14:18:40 -0700 Subject: [PATCH 5/5] Add httpx to shared requirements --- shared_requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/shared_requirements.txt b/shared_requirements.txt index 7be249c3bd61..36de241d8041 100644 --- a/shared_requirements.txt +++ b/shared_requirements.txt @@ -57,6 +57,7 @@ opentelemetry-instrumentation-psycopg2 opentelemetry-instrumentation-requests opentelemetry-instrumentation-urllib opentelemetry-instrumentation-urllib3 +opentelemetry-instrumentation-httpx opentelemetry-resource-detector-azure azure-nspkg azure-ai-nspkg