From e8847f5542dc0dfabc9eb6dd50787dd885f2adfc Mon Sep 17 00:00:00 2001 From: Leighton Chen Date: Wed, 1 Nov 2023 06:08:53 -0700 Subject: [PATCH 1/8] link --- sdk/monitor/azure-monitor-opentelemetry-exporter/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/README.md b/sdk/monitor/azure-monitor-opentelemetry-exporter/README.md index 612598e5ae4f..4970bf99f752 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/README.md +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/README.md @@ -664,7 +664,7 @@ contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additio [aad_for_ai_docs]: https://learn.microsoft.com/azure/azure-monitor/app/azure-ad-authentication?tabs=python -[api_docs]: https://azuresdkdocs.blob.core.windows.net/$web/python/azure-opentelemetry-exporter-azuremonitor/1.0.0b2/index.html +[api_docs]: https://azure.github.io/azure-sdk-for-python/monitor.html#azure-monitor-opentelemetry-exporter [exporter_samples]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry-exporter/samples [product_docs]: https://docs.microsoft.com/azure/azure-monitor/overview [azure_sub]: https://azure.microsoft.com/free/ From 38c31f2344c809935cbc4d3e610ee7a19f671cff Mon Sep 17 00:00:00 2001 From: Leighton Chen Date: Wed, 1 Nov 2023 06:14:06 -0700 Subject: [PATCH 2/8] ns --- .../azure-monitor-opentelemetry-exporter/CHANGELOG.md | 2 ++ .../opentelemetry/exporter/export/metrics/_exporter.py | 6 ------ 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md b/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md index fbfccd1a4ad0..bd39d6ad481c 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md @@ -12,6 +12,8 @@ ([#32327](https://github.com/Azure/azure-sdk-for-python/pull/32327)) - Updated django samples with clearly artificial secret key ([#32698](https://github.com/Azure/azure-sdk-for-python/pull/32698)) +- Remove metric namespace + ([#32698](https://github.com/Azure/azure-sdk-for-python/pull/32698)) ### Other Changes diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py index f1d6225a48d6..845dca601abb 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py @@ -173,9 +173,6 @@ def _convert_point_to_envelope( envelope = _utils._create_telemetry_item(point.time_unix_nano) envelope.name = _METRIC_ENVELOPE_NAME envelope.tags.update(_utils._populate_part_a_fields(resource)) - namespace = None - if scope is not None: - namespace = scope.name value = 0 count = 1 min_ = None @@ -193,11 +190,8 @@ def _convert_point_to_envelope( # truncation logic properties = _utils._filter_custom_properties(point.attributes) - if namespace is not None: - namespace = str(namespace)[:256] data_point = MetricDataPoint( name=str(name)[:1024], - namespace=namespace, value=value, count=count, min=min_, From 95aa0287a44df8ca1fd0186b74343675ee213469 Mon Sep 17 00:00:00 2001 From: Leighton Chen Date: Wed, 1 Nov 2023 06:45:09 -0700 Subject: [PATCH 3/8] tests --- sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md | 2 +- .../tests/metrics/test_metrics.py | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md b/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md index bd39d6ad481c..1294f0f46826 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md @@ -13,7 +13,7 @@ - Updated django samples with clearly artificial secret key ([#32698](https://github.com/Azure/azure-sdk-for-python/pull/32698)) - Remove metric namespace - ([#32698](https://github.com/Azure/azure-sdk-for-python/pull/32698)) + ([#32897](https://github.com/Azure/azure-sdk-for-python/pull/32897)) ### Other Changes diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/metrics/test_metrics.py b/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/metrics/test_metrics.py index d27afbe2b0fe..99fa447f0915 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/metrics/test_metrics.py +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/metrics/test_metrics.py @@ -230,7 +230,6 @@ def test_point_to_envelope_number(self): self.assertEqual(envelope.data.base_data.properties['test'], 'attribute') self.assertEqual(len(envelope.data.base_data.metrics), 1) self.assertEqual(envelope.data.base_data.metrics[0].name, "test name") - self.assertEqual(envelope.data.base_data.metrics[0].namespace, "test_scope") self.assertEqual(envelope.data.base_data.metrics[0].value, 10) self.assertEqual(envelope.data.base_data.metrics[0].count, 1) @@ -260,7 +259,6 @@ def test_point_to_envelope_histogram(self): self.assertEqual(envelope.data.base_data.properties['test'], 'attribute') self.assertEqual(len(envelope.data.base_data.metrics), 1) self.assertEqual(envelope.data.base_data.metrics[0].name, "test name") - self.assertEqual(envelope.data.base_data.metrics[0].namespace, "test_scope") self.assertEqual(envelope.data.base_data.metrics[0].value, 31) self.assertEqual(envelope.data.base_data.metrics[0].count, 7) @@ -297,7 +295,6 @@ def test_point_to_envelope_std_metric_client_duration(self): self.assertIsNone(envelope.data.base_data.properties.get("custom_attr")) self.assertEqual(len(envelope.data.base_data.metrics), 1) self.assertEqual(envelope.data.base_data.metrics[0].name, "http.client.duration") - self.assertEqual(envelope.data.base_data.metrics[0].namespace, "opentelemetry.instrumentation.requests") self.assertEqual(envelope.data.base_data.metrics[0].value, 15.0) # target @@ -348,7 +345,6 @@ def test_point_to_envelope_std_metric_server_duration(self): self.assertIsNone(envelope.data.base_data.properties.get("custom_attr")) self.assertEqual(len(envelope.data.base_data.metrics), 1) self.assertEqual(envelope.data.base_data.metrics[0].name, "http.server.duration") - self.assertEqual(envelope.data.base_data.metrics[0].namespace, "opentelemetry.instrumentation.flask") self.assertEqual(envelope.data.base_data.metrics[0].value, 15.0) # Success/Failure From 6f48efe1eec585d350c9b64a2114c6545a0f55e7 Mon Sep 17 00:00:00 2001 From: Leighton Chen Date: Wed, 1 Nov 2023 07:31:20 -0700 Subject: [PATCH 4/8] scope --- .../monitor/opentelemetry/exporter/export/metrics/_exporter.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py index 845dca601abb..d9ba82c25e7d 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py @@ -137,7 +137,7 @@ def _point_to_envelope( resource: Optional[Resource] = None, scope: Optional[InstrumentationScope] = None ) -> Optional[TelemetryItem]: - envelope = _convert_point_to_envelope(point, name, resource, scope) + envelope = _convert_point_to_envelope(point, name, resource) if name in _AUTOCOLLECTED_INSTRUMENT_NAMES: envelope = _handle_std_metric_envelope(envelope, name, point.attributes) if envelope is not None: @@ -168,7 +168,6 @@ def _convert_point_to_envelope( point: DataPointT, name: str, resource: Optional[Resource] = None, - scope: Optional[InstrumentationScope] = None ) -> TelemetryItem: envelope = _utils._create_telemetry_item(point.time_unix_nano) envelope.name = _METRIC_ENVELOPE_NAME From 40ad2ee043c951c9ad57fe72a8653803b636f3df Mon Sep 17 00:00:00 2001 From: Leighton Chen Date: Wed, 1 Nov 2023 08:17:05 -0700 Subject: [PATCH 5/8] scope --- .../exporter/export/metrics/_exporter.py | 2 -- .../tests/metrics/test_metrics.py | 22 ++++++++----------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py index d9ba82c25e7d..3161ddeb1ebe 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py @@ -95,7 +95,6 @@ def export( point, metric.name, resource_metric.resource, - scope_metric.scope ) if envelope is not None: envelopes.append(envelope) @@ -135,7 +134,6 @@ def _point_to_envelope( point: DataPointT, name: str, resource: Optional[Resource] = None, - scope: Optional[InstrumentationScope] = None ) -> Optional[TelemetryItem]: envelope = _convert_point_to_envelope(point, name, resource) if name in _AUTOCOLLECTED_INSTRUMENT_NAMES: diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/metrics/test_metrics.py b/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/metrics/test_metrics.py index 99fa447f0915..afe94a06d879 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/metrics/test_metrics.py +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/metrics/test_metrics.py @@ -212,7 +212,6 @@ def test_point_to_envelope_partA_default(self): def test_point_to_envelope_number(self): exporter = self._exporter resource = Resource.create(attributes={"asd":"test_resource"}) - scope = InstrumentationScope("test_scope") point=NumberDataPoint( attributes={ "test": "attribute", @@ -221,7 +220,7 @@ def test_point_to_envelope_number(self): time_unix_nano=1646865018558419457, value=10, ) - envelope = exporter._point_to_envelope(point, "test name", resource, scope) + envelope = exporter._point_to_envelope(point, "test name", resource) self.assertEqual(envelope.instrumentation_key, exporter._instrumentation_key) self.assertEqual(envelope.name, 'Microsoft.ApplicationInsights.Metric') self.assertEqual(envelope.time, ns_to_iso_str(point.time_unix_nano)) @@ -236,7 +235,6 @@ def test_point_to_envelope_number(self): def test_point_to_envelope_histogram(self): exporter = self._exporter resource = Resource.create(attributes={"asd":"test_resource"}) - scope = InstrumentationScope("test_scope") point=HistogramDataPoint( attributes={ "test": "attribute", @@ -250,7 +248,7 @@ def test_point_to_envelope_histogram(self): time_unix_nano=1646865018558419457, sum=31, ) - envelope = exporter._point_to_envelope(point, "test name", resource, scope) + envelope = exporter._point_to_envelope(point, "test name", resource) self.assertEqual(envelope.instrumentation_key, exporter._instrumentation_key) self.assertEqual(envelope.name, 'Microsoft.ApplicationInsights.Metric') self.assertEqual(envelope.time, ns_to_iso_str(point.time_unix_nano)) @@ -268,7 +266,6 @@ def test_point_to_envelope_std_metric_client_duration(self): {"service.name": "testServiceName", "service.namespace": "testServiceNamespace", "service.instance.id": "testServiceInstanceId"}) - scope = InstrumentationScope("opentelemetry.instrumentation.requests") point=NumberDataPoint( attributes={ "http.status_code": 200, @@ -279,7 +276,7 @@ def test_point_to_envelope_std_metric_client_duration(self): time_unix_nano=1646865018558419457, value=15.0, ) - envelope = exporter._point_to_envelope(point, "http.client.duration", resource, scope) + envelope = exporter._point_to_envelope(point, "http.client.duration", resource) self.assertEqual(envelope.instrumentation_key, exporter._instrumentation_key) self.assertEqual(envelope.name, 'Microsoft.ApplicationInsights.Metric') self.assertEqual(envelope.time, ns_to_iso_str(point.time_unix_nano)) @@ -300,17 +297,17 @@ def test_point_to_envelope_std_metric_client_duration(self): # target point.attributes.pop("peer.service", None) point.attributes["net.peer.name"] = None - envelope = exporter._point_to_envelope(point, "http.client.duration", resource, scope) + envelope = exporter._point_to_envelope(point, "http.client.duration", resource) self.assertEqual(envelope.data.base_data.properties['dependency/target'], None) point.attributes["net.peer.name"] = "test_peer_name" point.attributes["net.host.port"] = "test_port" - envelope = exporter._point_to_envelope(point, "http.client.duration", resource, scope) + envelope = exporter._point_to_envelope(point, "http.client.duration", resource) self.assertEqual(envelope.data.base_data.properties['dependency/target'], "test_peer_name:test_port") # Success/Failure point.attributes["http.status_code"] = 500 - envelope = exporter._point_to_envelope(point, "http.client.duration", resource, scope) + envelope = exporter._point_to_envelope(point, "http.client.duration", resource) self.assertEqual(envelope.data.base_data.properties['Dependency.Success'], "False") @@ -320,7 +317,6 @@ def test_point_to_envelope_std_metric_server_duration(self): {"service.name": "testServiceName", "service.namespace": "testServiceNamespace", "service.instance.id": "testServiceInstanceId"}) - scope = InstrumentationScope("opentelemetry.instrumentation.flask") point=NumberDataPoint( attributes={ "http.status_code": 200, @@ -331,7 +327,7 @@ def test_point_to_envelope_std_metric_server_duration(self): time_unix_nano=1646865018558419457, value=15.0, ) - envelope = exporter._point_to_envelope(point, "http.server.duration", resource, scope) + envelope = exporter._point_to_envelope(point, "http.server.duration", resource) self.assertEqual(envelope.instrumentation_key, exporter._instrumentation_key) self.assertEqual(envelope.name, 'Microsoft.ApplicationInsights.Metric') self.assertEqual(envelope.time, ns_to_iso_str(point.time_unix_nano)) @@ -349,7 +345,7 @@ def test_point_to_envelope_std_metric_server_duration(self): # Success/Failure point.attributes["http.status_code"] = 600 - envelope = exporter._point_to_envelope(point, "http.server.duration", resource, scope) + envelope = exporter._point_to_envelope(point, "http.server.duration", resource) self.assertEqual(envelope.data.base_data.properties['Request.Success'], "False") def test_point_to_envelope_std_metric_unsupported(self): @@ -369,7 +365,7 @@ def test_point_to_envelope_std_metric_unsupported(self): time_unix_nano=1646865018558419457, value=15.0, ) - envelope = exporter._point_to_envelope(point, "http.server.request.size", resource, scope) + envelope = exporter._point_to_envelope(point, "http.server.request.size", resource) self.assertIsNone(envelope) From 1607f7e59943c5b2e94d7a33a93f7ab7ad54bf11 Mon Sep 17 00:00:00 2001 From: Leighton Chen Date: Wed, 1 Nov 2023 08:37:02 -0700 Subject: [PATCH 6/8] scope --- .../monitor/opentelemetry/exporter/statsbeat/_exporter.py | 6 ++---- .../tests/metrics/test_metrics.py | 1 - .../tests/statsbeat/test_exporter.py | 4 +--- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/statsbeat/_exporter.py b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/statsbeat/_exporter.py index b516a81982f6..b2158b0955d0 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/statsbeat/_exporter.py +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/statsbeat/_exporter.py @@ -3,7 +3,6 @@ from typing import Optional from opentelemetry.sdk.metrics.export import DataPointT from opentelemetry.sdk.resources import Resource -from opentelemetry.sdk.util.instrumentation import InstrumentationScope from azure.monitor.opentelemetry.exporter._generated.models import TelemetryItem from azure.monitor.opentelemetry.exporter import AzureMonitorMetricExporter @@ -18,13 +17,12 @@ def _point_to_envelope( point: DataPointT, name: str, resource: Optional[Resource] = None, - scope: Optional[InstrumentationScope] = None ) -> TelemetryItem: # map statsbeat name from OpenTelemetry name name = _STATSBEAT_METRIC_NAME_MAPPINGS[name] return super()._point_to_envelope( - point, + point name, resource, - scope, + ) diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/metrics/test_metrics.py b/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/metrics/test_metrics.py index afe94a06d879..cf8938d1d401 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/metrics/test_metrics.py +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/metrics/test_metrics.py @@ -354,7 +354,6 @@ def test_point_to_envelope_std_metric_unsupported(self): {"service.name": "testServiceName", "service.namespace": "testServiceNamespace", "service.instance.id": "testServiceInstanceId"}) - scope = InstrumentationScope("opentelemetry.instrumentation.flask") point=NumberDataPoint( attributes={ "http.status_code": 200, diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/statsbeat/test_exporter.py b/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/statsbeat/test_exporter.py index be9b648cee35..e9569c16740b 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/statsbeat/test_exporter.py +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/tests/statsbeat/test_exporter.py @@ -6,7 +6,6 @@ from unittest import mock from datetime import datetime -from opentelemetry.sdk.util.instrumentation import InstrumentationScope from opentelemetry.sdk.resources import Resource from opentelemetry.sdk.metrics.export import NumberDataPoint @@ -69,7 +68,6 @@ def test_init(self, collect_mock): def test_point_to_envelope(self): resource = Resource.create(attributes={"asd":"test_resource"}) - scope = InstrumentationScope("test_scope") point=NumberDataPoint( start_time_unix_nano=1646865018558419456, time_unix_nano=1646865018558419457, @@ -77,7 +75,7 @@ def test_point_to_envelope(self): attributes={}, ) for ot_name, sb_name in _STATSBEAT_METRIC_NAME_MAPPINGS.items(): - envelope = self._exporter._point_to_envelope(point, ot_name, resource, scope) + envelope = self._exporter._point_to_envelope(point, ot_name, resource) self.assertEqual(envelope.data.base_data.metrics[0].name, sb_name) def test_transmit_200_reach_ingestion(self): From 36f70b90faaf19934c09e507a74b4663b5b2c767 Mon Sep 17 00:00:00 2001 From: Leighton Chen Date: Wed, 1 Nov 2023 08:56:24 -0700 Subject: [PATCH 7/8] Update _exporter.py --- .../azure/monitor/opentelemetry/exporter/statsbeat/_exporter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/statsbeat/_exporter.py b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/statsbeat/_exporter.py index b2158b0955d0..b79cb15b79b4 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/statsbeat/_exporter.py +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/statsbeat/_exporter.py @@ -21,7 +21,7 @@ def _point_to_envelope( # map statsbeat name from OpenTelemetry name name = _STATSBEAT_METRIC_NAME_MAPPINGS[name] return super()._point_to_envelope( - point + point, name, resource, From 4ae736ff1850ee6fa7c5a8d596e71f60824ca71d Mon Sep 17 00:00:00 2001 From: Leighton Chen Date: Wed, 1 Nov 2023 09:41:05 -0700 Subject: [PATCH 8/8] lint --- .../monitor/opentelemetry/exporter/export/metrics/_exporter.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py index 3161ddeb1ebe..a7e5830b7892 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py @@ -23,7 +23,6 @@ NumberDataPoint, ) from opentelemetry.sdk.resources import Resource -from opentelemetry.sdk.util.instrumentation import InstrumentationScope from azure.monitor.opentelemetry.exporter._constants import ( _AUTOCOLLECTED_INSTRUMENT_NAMES,