Skip to content
This repository was archived by the owner on Nov 16, 2023. It is now read-only.

Commit e557a9a

Browse files
authored
Merge pull request #64 from lzchen/name
2 parents 2f6073e + d6aa639 commit e557a9a

18 files changed

+142
-54
lines changed

README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# OpenTelemetry Azure Monitor Exporters
1+
# OpenTelemetry Azure Monitor SDKs and Exporters
22

3-
[![Gitter chat](https://img.shields.io/gitter/room/opentelemetry/opentelemetry-python)](https://gitter.im/Microsoft/azure-monitor-python)
4-
[![Build status](https://travis-ci.org/microsoft/opentelemetry-exporters-python.svg?branch=master)](https://travis-ci.org/microsoft/opentelemetry-exporters-python)
3+
[![Gitter chat](https://img.shields.io/gitter/room/Microsoft/azure-monitor-python)](https://gitter.im/Microsoft/azure-monitor-python)
4+
[![Build status](https://travis-ci.org/microsoft/opentelemetry-azure-monitor-python.svg?branch=master)](https://travis-ci.org/microsoft/opentelemetry-exporters-python)
55
[![PyPI version](https://badge.fury.io/py/opentelemetry-azure-monitor-exporter.svg)](https://badge.fury.io/py/opentelemetry-azure-monitor-exporter)
66

77
## Installation

azure_monitor/examples/metrics/auto_collector.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
from opentelemetry.sdk.metrics import MeterProvider
55
from opentelemetry.sdk.metrics.export.controller import PushController
66

7-
from azure_monitor import AutoCollection, AzureMonitorMetricsExporter
7+
from azure_monitor import AzureMonitorMetricsExporter
8+
from azure_monitor.sdk.auto_collection import AutoCollection
89

910
metrics.set_meter_provider(MeterProvider())
1011
meter = metrics.get_meter(__name__)
+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Copyright (c) Microsoft Corporation. All rights reserved.
2+
# Licensed under the MIT License.
3+
# pylint: disable=import-error
4+
# pylint: disable=no-member
5+
# pylint: disable=no-name-in-module
6+
import requests
7+
from opentelemetry import trace
8+
from opentelemetry.ext import http_requests
9+
from opentelemetry.sdk.trace import TracerProvider
10+
from opentelemetry.sdk.trace.export import BatchExportSpanProcessor
11+
12+
from azure_monitor import AzureMonitorSpanExporter
13+
14+
trace.set_tracer_provider(TracerProvider())
15+
tracer = trace.get_tracer(__name__)
16+
http_requests.enable(trace.get_tracer_provider())
17+
span_processor = BatchExportSpanProcessor(
18+
AzureMonitorSpanExporter(
19+
connection_string="InstrumentationKey=<INSTRUMENTATION KEY HERE>"
20+
)
21+
)
22+
trace.get_tracer_provider().add_span_processor(span_processor)
23+
24+
response = requests.get(url="http://google.com")
25+
26+
input("Press any key to exit...")

azure_monitor/examples/traces/trace.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# Copyright (c) Microsoft Corporation. All rights reserved.
2+
# Licensed under the MIT License.
13
from opentelemetry import trace
24
from opentelemetry.sdk.trace import TracerProvider
35
from opentelemetry.sdk.trace.export import BatchExportSpanProcessor
+1-8
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
11
# Copyright (c) Microsoft Corporation. All rights reserved.
22
# Licensed under the MIT License.
3-
from azure_monitor.auto_collection import AutoCollection
43
from azure_monitor.export.metrics import AzureMonitorMetricsExporter
54
from azure_monitor.export.trace import AzureMonitorSpanExporter
6-
from azure_monitor.options import ExporterOptions
75

8-
__all__ = [
9-
"AutoCollection",
10-
"AzureMonitorMetricsExporter",
11-
"AzureMonitorSpanExporter",
12-
"ExporterOptions",
13-
]
6+
__all__ = ["AzureMonitorMetricsExporter", "AzureMonitorSpanExporter"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright (c) Microsoft Corporation. All rights reserved.
2+
# Licensed under the MIT License.
3+
from . import auto_collection
4+
5+
__all__ = ["auto_collection"]

azure_monitor/src/azure_monitor/auto_collection/__init__.py azure_monitor/src/azure_monitor/sdk/auto_collection/__init__.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
#
44
from opentelemetry.metrics import LabelSet, Meter
55

6-
from azure_monitor.auto_collection.dependency_metrics import DependencyMetrics
7-
from azure_monitor.auto_collection.performance_metrics import (
6+
from azure_monitor.sdk.auto_collection.dependency_metrics import (
7+
DependencyMetrics,
8+
)
9+
from azure_monitor.sdk.auto_collection.performance_metrics import (
810
PerformanceMetrics,
911
)
10-
from azure_monitor.auto_collection.request_metrics import RequestMetrics
12+
from azure_monitor.sdk.auto_collection.request_metrics import RequestMetrics
1113

1214
__all__ = [
1315
"AutoCollection",

azure_monitor/tests/auto_collection/test_auto_collection.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from opentelemetry import metrics
88
from opentelemetry.sdk.metrics import MeterProvider
99

10-
from azure_monitor.auto_collection import AutoCollection
10+
from azure_monitor.sdk.auto_collection import AutoCollection
1111

1212

1313
# pylint: disable=protected-access
@@ -24,12 +24,14 @@ def tearDownClass(cls):
2424
metrics._METER_PROVIDER = None
2525

2626
@mock.patch(
27-
"azure_monitor.auto_collection.PerformanceMetrics", autospec=True
27+
"azure_monitor.sdk.auto_collection.PerformanceMetrics", autospec=True
2828
)
2929
@mock.patch(
30-
"azure_monitor.auto_collection.DependencyMetrics", autospec=True
30+
"azure_monitor.sdk.auto_collection.DependencyMetrics", autospec=True
31+
)
32+
@mock.patch(
33+
"azure_monitor.sdk.auto_collection.RequestMetrics", autospec=True
3134
)
32-
@mock.patch("azure_monitor.auto_collection.RequestMetrics", autospec=True)
3335
def test_constructor(
3436
self, mock_performance, mock_dependencies, mock_requests
3537
):

azure_monitor/tests/auto_collection/test_dependency_metrics.py

+27-13
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from opentelemetry import metrics
1010
from opentelemetry.sdk.metrics import MeterProvider, Observer
1111

12-
from azure_monitor.auto_collection import DependencyMetrics, dependency_metrics
12+
from azure_monitor.sdk.auto_collection import dependency_metrics
1313

1414
ORIGINAL_FUNCTION = requests.Session.request
1515
ORIGINAL_CONS = HTTPServer.__init__
@@ -27,6 +27,8 @@ def setUpClass(cls):
2727
@classmethod
2828
def tearDown(cls):
2929
metrics._METER_PROVIDER = None
30+
requests.Session.request = ORIGINAL_FUNCTION
31+
dependency_metrics.ORIGINAL_CONSTRUCTOR = ORIGINAL_CONS
3032

3133
def setUp(self):
3234
dependency_metrics.dependency_map.clear()
@@ -35,7 +37,7 @@ def setUp(self):
3537

3638
def test_constructor(self):
3739
mock_meter = mock.Mock()
38-
metrics_collector = DependencyMetrics(
40+
metrics_collector = dependency_metrics.DependencyMetrics(
3941
meter=mock_meter, label_set=self._test_label_set
4042
)
4143
self.assertEqual(metrics_collector._meter, mock_meter)
@@ -49,10 +51,10 @@ def test_constructor(self):
4951
value_type=int,
5052
)
5153

52-
@mock.patch("azure_monitor.auto_collection.dependency_metrics.time")
54+
@mock.patch("azure_monitor.sdk.auto_collection.dependency_metrics.time")
5355
def test_track_dependency_rate(self, time_mock):
5456
time_mock.time.return_value = 100
55-
metrics_collector = DependencyMetrics(
57+
metrics_collector = dependency_metrics.DependencyMetrics(
5658
meter=self._meter, label_set=self._test_label_set
5759
)
5860
obs = Observer(
@@ -68,10 +70,10 @@ def test_track_dependency_rate(self, time_mock):
6870
metrics_collector._track_dependency_rate(obs)
6971
self.assertEqual(obs.aggregators[self._test_label_set].current, 2)
7072

71-
@mock.patch("azure_monitor.auto_collection.dependency_metrics.time")
73+
@mock.patch("azure_monitor.sdk.auto_collection.dependency_metrics.time")
7274
def test_track_dependency_rate_time_none(self, time_mock):
7375
time_mock.time.return_value = 100
74-
metrics_collector = DependencyMetrics(
76+
metrics_collector = dependency_metrics.DependencyMetrics(
7577
meter=self._meter, label_set=self._test_label_set
7678
)
7779
dependency_metrics.dependency_map["last_time"] = None
@@ -86,10 +88,10 @@ def test_track_dependency_rate_time_none(self, time_mock):
8688
metrics_collector._track_dependency_rate(obs)
8789
self.assertEqual(obs.aggregators[self._test_label_set].current, 0)
8890

89-
@mock.patch("azure_monitor.auto_collection.dependency_metrics.time")
91+
@mock.patch("azure_monitor.sdk.auto_collection.dependency_metrics.time")
9092
def test_track_dependency_rate_error(self, time_mock):
9193
time_mock.time.return_value = 100
92-
metrics_collector = DependencyMetrics(
94+
metrics_collector = dependency_metrics.DependencyMetrics(
9395
meter=self._meter, label_set=self._test_label_set
9496
)
9597
dependency_metrics.dependency_map["last_time"] = 100
@@ -105,10 +107,22 @@ def test_track_dependency_rate_error(self, time_mock):
105107
metrics_collector._track_dependency_rate(obs)
106108
self.assertEqual(obs.aggregators[self._test_label_set].current, 5)
107109

108-
def test_dependency_patch(self):
109-
dependency_metrics.ORIGINAL_REQUEST = lambda x: None
110+
@mock.patch(
111+
"azure_monitor.sdk.auto_collection.dependency_metrics.ORIGINAL_REQUEST"
112+
)
113+
def test_dependency_patch(self, request_mock):
110114
session = requests.Session()
111-
result = dependency_metrics.dependency_patch(session)
112-
115+
dependency_metrics.dependency_patch(session)
113116
self.assertEqual(dependency_metrics.dependency_map["count"], 1)
114-
self.assertIsNone(result)
117+
request_mock.assert_called_with(session)
118+
119+
@mock.patch(
120+
"azure_monitor.sdk.auto_collection.dependency_metrics.ORIGINAL_REQUEST"
121+
)
122+
@mock.patch("azure_monitor.sdk.auto_collection.dependency_metrics.context")
123+
def test_dependency_patch_suppress(self, context_mock, request_mock):
124+
context_mock.get_value.return_value = {}
125+
session = requests.Session()
126+
dependency_metrics.dependency_patch(session)
127+
self.assertEqual(dependency_metrics.dependency_map.get("count"), None)
128+
request_mock.assert_called_with(session)

azure_monitor/tests/auto_collection/test_performance_metrics.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from opentelemetry import metrics
99
from opentelemetry.sdk.metrics import MeterProvider, Observer
1010

11-
from azure_monitor.auto_collection import PerformanceMetrics
11+
from azure_monitor.sdk.auto_collection import PerformanceMetrics
1212

1313

1414
def throw(exc_type, *args, **kwargs):
@@ -111,10 +111,10 @@ def test_track_memory(self, psutil_mock):
111111
performance_metrics_collector._track_memory(obs)
112112
self.assertEqual(obs.aggregators[self._test_label_set].current, 100)
113113

114-
@mock.patch("azure_monitor.auto_collection.performance_metrics.psutil")
114+
@mock.patch("azure_monitor.sdk.auto_collection.performance_metrics.psutil")
115115
def test_track_process_cpu(self, psutil_mock):
116116
with mock.patch(
117-
"azure_monitor.auto_collection.performance_metrics.PROCESS"
117+
"azure_monitor.sdk.auto_collection.performance_metrics.PROCESS"
118118
) as process_mock:
119119
performance_metrics_collector = PerformanceMetrics(
120120
meter=self._meter, label_set=self._test_label_set
@@ -134,10 +134,10 @@ def test_track_process_cpu(self, psutil_mock):
134134
obs.aggregators[self._test_label_set].current, 22.2
135135
)
136136

137-
@mock.patch("azure_monitor.auto_collection.performance_metrics.logger")
137+
@mock.patch("azure_monitor.sdk.auto_collection.performance_metrics.logger")
138138
def test_track_process_cpu_exception(self, logger_mock):
139139
with mock.patch(
140-
"azure_monitor.auto_collection.performance_metrics.psutil"
140+
"azure_monitor.sdk.auto_collection.performance_metrics.psutil"
141141
) as psutil_mock:
142142
performance_metrics_collector = PerformanceMetrics(
143143
meter=self._meter, label_set=self._test_label_set
@@ -156,7 +156,7 @@ def test_track_process_cpu_exception(self, logger_mock):
156156

157157
def test_track_process_memory(self):
158158
with mock.patch(
159-
"azure_monitor.auto_collection.performance_metrics.PROCESS"
159+
"azure_monitor.sdk.auto_collection.performance_metrics.PROCESS"
160160
) as process_mock:
161161
performance_metrics_collector = PerformanceMetrics(
162162
meter=self._meter, label_set=self._test_label_set
@@ -177,10 +177,10 @@ def test_track_process_memory(self):
177177
obs.aggregators[self._test_label_set].current, 100
178178
)
179179

180-
@mock.patch("azure_monitor.auto_collection.performance_metrics.logger")
180+
@mock.patch("azure_monitor.sdk.auto_collection.performance_metrics.logger")
181181
def test_track_process_memory_exception(self, logger_mock):
182182
with mock.patch(
183-
"azure_monitor.auto_collection.performance_metrics.PROCESS",
183+
"azure_monitor.sdk.auto_collection.performance_metrics.PROCESS",
184184
throw(Exception),
185185
):
186186
performance_metrics_collector = PerformanceMetrics(

azure_monitor/tests/auto_collection/test_request_metrics.py

+12-12
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from opentelemetry import metrics
1010
from opentelemetry.sdk.metrics import MeterProvider, Observer
1111

12-
from azure_monitor.auto_collection import RequestMetrics, request_metrics
12+
from azure_monitor.sdk.auto_collection import request_metrics
1313

1414
ORIGINAL_FUNCTION = requests.Session.request
1515
ORIGINAL_CONS = HTTPServer.__init__
@@ -35,7 +35,7 @@ def setUp(self):
3535

3636
def test_constructor(self):
3737
mock_meter = mock.Mock()
38-
request_metrics_collector = RequestMetrics(
38+
request_metrics_collector = request_metrics.RequestMetrics(
3939
meter=mock_meter, label_set=self._test_label_set
4040
)
4141
self.assertEqual(request_metrics_collector._meter, mock_meter)
@@ -64,7 +64,7 @@ def test_constructor(self):
6464
)
6565

6666
def test_track_request_duration(self):
67-
request_metrics_collector = RequestMetrics(
67+
request_metrics_collector = request_metrics.RequestMetrics(
6868
meter=self._meter, label_set=self._test_label_set
6969
)
7070
request_metrics.requests_map["duration"] = 0.1
@@ -82,7 +82,7 @@ def test_track_request_duration(self):
8282
self.assertEqual(obs.aggregators[self._test_label_set].current, 20)
8383

8484
def test_track_request_duration_error(self):
85-
request_metrics_collector = RequestMetrics(
85+
request_metrics_collector = request_metrics.RequestMetrics(
8686
meter=self._meter, label_set=self._test_label_set
8787
)
8888
request_metrics.requests_map["duration"] = 0.1
@@ -99,9 +99,9 @@ def test_track_request_duration_error(self):
9999
request_metrics_collector._track_request_duration(obs)
100100
self.assertEqual(obs.aggregators[self._test_label_set].current, 0)
101101

102-
@mock.patch("azure_monitor.auto_collection.request_metrics.time")
102+
@mock.patch("azure_monitor.sdk.auto_collection.request_metrics.time")
103103
def test_track_request_rate(self, time_mock):
104-
request_metrics_collector = RequestMetrics(
104+
request_metrics_collector = request_metrics.RequestMetrics(
105105
meter=self._meter, label_set=self._test_label_set
106106
)
107107
time_mock.time.return_value = 100
@@ -118,10 +118,10 @@ def test_track_request_rate(self, time_mock):
118118
request_metrics_collector._track_request_rate(obs)
119119
self.assertEqual(obs.aggregators[self._test_label_set].current, 2)
120120

121-
@mock.patch("azure_monitor.auto_collection.request_metrics.time")
121+
@mock.patch("azure_monitor.sdk.auto_collection.request_metrics.time")
122122
def test_track_request_rate_time_none(self, time_mock):
123123
time_mock.time.return_value = 100
124-
request_metrics_collector = RequestMetrics(
124+
request_metrics_collector = request_metrics.RequestMetrics(
125125
meter=self._meter, label_set=self._test_label_set
126126
)
127127
request_metrics.requests_map["last_time"] = None
@@ -136,9 +136,9 @@ def test_track_request_rate_time_none(self, time_mock):
136136
request_metrics_collector._track_request_rate(obs)
137137
self.assertEqual(obs.aggregators[self._test_label_set].current, 0)
138138

139-
@mock.patch("azure_monitor.auto_collection.request_metrics.time")
139+
@mock.patch("azure_monitor.sdk.auto_collection.request_metrics.time")
140140
def test_track_request_rate_error(self, time_mock):
141-
request_metrics_collector = RequestMetrics(
141+
request_metrics_collector = request_metrics.RequestMetrics(
142142
meter=self._meter, label_set=self._test_label_set
143143
)
144144
time_mock.time.return_value = 100
@@ -168,7 +168,7 @@ def test_request_patch(self):
168168
def test_server_patch(self):
169169
request_metrics.ORIGINAL_CONSTRUCTOR = lambda x, y, z: None
170170
with mock.patch(
171-
"azure_monitor.auto_collection.request_metrics.request_patch"
171+
"azure_monitor.sdk.auto_collection.request_metrics.request_patch"
172172
) as request_mock:
173173
handler = mock.Mock()
174174
handler.do_DELETE.return_value = None
@@ -191,7 +191,7 @@ def test_server_patch(self):
191191
def test_server_patch_no_methods(self):
192192
request_metrics.ORIGINAL_CONSTRUCTOR = lambda x, y, z: None
193193
with mock.patch(
194-
"azure_monitor.auto_collection.request_metrics.request_patch"
194+
"azure_monitor.sdk.auto_collection.request_metrics.request_patch"
195195
) as request_mock:
196196
handler = mock.Mock()
197197
result = request_metrics.server_patch(None, None, handler)

0 commit comments

Comments
 (0)