Skip to content
This repository was archived by the owner on Sep 17, 2025. It is now read-only.

Commit ed28627

Browse files
lzchenreyang
authored andcommitted
Implement Azure Metrics Exporter (#693)
1 parent 4c4957c commit ed28627

File tree

7 files changed

+722
-90
lines changed

7 files changed

+722
-90
lines changed

contrib/opencensus-ext-azure/README.rst

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ You can enrich the logs with trace IDs and span IDs by using the `logging integr
7272
Metrics
7373
~~~~~~~
7474

75-
The **OpenCensus Azure Monitor Metrics Exporter** allows you to export metrics to `Azure Monitor`_.
75+
The **Azure Monitor Metrics Exporter** allows you to export metrics to `Azure Monitor`_.
7676

7777
* Create an Azure Monitor resource and get the instrumentation key, more information can be found `here <https://docs.microsoft.com/azure/azure-monitor/app/create-new-resource>`_.
7878
* Put the instrumentation key in ``APPINSIGHTS_INSTRUMENTATIONKEY`` environment variable.
@@ -109,7 +109,7 @@ Using the Metrics exporter
109109
def main():
110110
# Enable metrics
111111
# Set the interval in seconds in which you want to send metrics
112-
exporter = metrics_exporter.new_metrics_exporter(export_interval=2)
112+
exporter = metrics_exporter.new_metrics_exporter()
113113
view_manager.register_exporter(exporter)
114114
115115
view_manager.register_view(CARROTS_VIEW)
@@ -118,7 +118,11 @@ Using the Metrics exporter
118118
119119
mmap.measure_int_put(CARROTS_MEASURE, 1000)
120120
mmap.record(tmap)
121-
time.sleep(10)
121+
# Default export interval is every 15.0s
122+
# Your application should run for at least this amount
123+
# of time so the exporter will meet this interval
124+
# Sleep can fulfill this
125+
time.sleep(60)
122126
123127
print("Done recording metrics")
124128

contrib/opencensus-ext-azure/examples/metrics/distribution.py

Lines changed: 0 additions & 66 deletions
This file was deleted.

contrib/opencensus-ext-azure/examples/metrics/simple.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
def main():
3939
# Enable metrics
4040
# Set the interval in seconds in which you want to send metrics
41-
exporter = metrics_exporter.new_metrics_exporter(export_interval=2)
41+
exporter = metrics_exporter.new_metrics_exporter()
4242
view_manager.register_exporter(exporter)
4343

4444
view_manager.register_view(CARROTS_VIEW)
@@ -47,7 +47,7 @@ def main():
4747

4848
mmap.measure_int_put(CARROTS_MEASURE, 1000)
4949
mmap.record(tmap)
50-
time.sleep(10)
50+
time.sleep(60)
5151

5252
print("Done recording metrics")
5353

contrib/opencensus-ext-azure/examples/metrics/sum.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,29 +25,30 @@
2525
view_manager = stats.view_manager
2626
stats_recorder = stats.stats_recorder
2727

28-
CHIPS_EATEN_MEASURE = measure_module.MeasureFloat("chips_eaten",
29-
"number of chips eaten",
30-
"chips")
31-
CHIPS_EATEN_VIEW = view_module.View("chips_eaten_view",
32-
"number of chips eaten",
33-
[],
34-
CHIPS_EATEN_MEASURE,
35-
aggregation_module.SumAggregation())
28+
REQUEST_MEASURE = measure_module.MeasureFloat("Requests",
29+
"number of requests",
30+
"requests")
31+
NUM_REQUESTS_VIEW = view_module.View("Number of Requests",
32+
"number of requests",
33+
["url"],
34+
REQUEST_MEASURE,
35+
aggregation_module.SumAggregation())
3636

3737

3838
def main():
3939
# Enable metrics
4040
# Set the interval in seconds in which you want to send metrics
41-
exporter = metrics_exporter.new_metrics_exporter(export_interval=5)
41+
exporter = metrics_exporter.new_metrics_exporter()
4242
view_manager.register_exporter(exporter)
4343

44-
view_manager.register_view(CHIPS_EATEN_VIEW)
44+
view_manager.register_view(NUM_REQUESTS_VIEW)
4545
mmap = stats_recorder.new_measurement_map()
4646
tmap = tag_map_module.TagMap()
47+
tmap.insert("url", "http://example.com")
4748

4849
for i in range(100):
4950
print(i)
50-
mmap.measure_int_put(CHIPS_EATEN_MEASURE, 1)
51+
mmap.measure_int_put(REQUEST_MEASURE, i)
5152
mmap.record(tmap)
5253
time.sleep(1)
5354

contrib/opencensus-ext-azure/opencensus/ext/azure/common/protocol.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,24 @@ def __init__(self, *args, **kwargs):
6565
self.baseType = self.baseType
6666

6767

68+
class DataPoint(BaseObject):
69+
_default = BaseObject(
70+
ns='',
71+
name='',
72+
kind=None,
73+
value=0.0,
74+
count=None,
75+
min=None,
76+
max=None,
77+
stdDev=None,
78+
)
79+
80+
def __init__(self, *args, **kwargs):
81+
super(DataPoint, self).__init__(*args, **kwargs)
82+
self.name = self.name
83+
self.value = self.value
84+
85+
6886
class Envelope(BaseObject):
6987
_default = BaseObject(
7088
ver=1,
@@ -129,6 +147,19 @@ def __init__(self, *args, **kwargs):
129147
self.message = self.message
130148

131149

150+
class MetricData(BaseObject):
151+
_default = BaseObject(
152+
ver=2,
153+
metrics=[],
154+
properties=None,
155+
)
156+
157+
def __init__(self, *args, **kwargs):
158+
super(MetricData, self).__init__(*args, **kwargs)
159+
self.ver = self.ver
160+
self.metrics = self.metrics
161+
162+
132163
class RemoteDependency(BaseObject):
133164
_default = BaseObject(
134165
ver=2,

0 commit comments

Comments
 (0)