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

Commit 044fd72

Browse files
mayurkale22liyanhui1228
authored andcommitted
Allow arbitrary metric prefixes (#315)
1 parent c72ddef commit 044fd72

2 files changed

Lines changed: 30 additions & 14 deletions

File tree

opencensus/stats/exporters/stackdriver_exporter.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,10 @@ def make_request(self, view_data, limit):
172172
time_series = []
173173

174174
resource = self.options.resource
175+
metric_prefix = self.options.metric_prefix
175176
for v_data in view_data:
176-
series = self.create_time_series_list(v_data, resource)
177+
series = self.create_time_series_list(v_data, resource,
178+
metric_prefix)
177179
time_series.append(series)
178180

179181
project_id = self.options.project_id
@@ -186,11 +188,12 @@ def make_request(self, view_data, limit):
186188
time_series = []
187189
return requests
188190

189-
def create_time_series_list(self, v_data, resource_type):
191+
def create_time_series_list(self, v_data, resource_type, metric_prefix):
190192
""" Create the TimeSeries object based on the view data
191193
"""
192194
series = monitoring_v3.types.TimeSeries()
193-
series.metric.type = namespaced_view_name(v_data.view.name)
195+
series.metric.type = namespaced_view_name(v_data.view.name,
196+
metric_prefix)
194197

195198
if resource_type == "":
196199
monitor_resource = MonitoredResourceUtil.get_instance()
@@ -268,7 +271,8 @@ def create_metric_descriptor(self, view):
268271
view_aggregation = view.aggregation
269272
view_name = view.name
270273

271-
metric_type = namespaced_view_name(view_name)
274+
metric_type = namespaced_view_name(view_name,
275+
self.options.metric_prefix)
272276
value_type = None
273277
unit = view_measure.unit
274278
metric_desc = monitoring_v3.enums.MetricDescriptor
@@ -357,10 +361,12 @@ def get_task_value():
357361
return task_value
358362

359363

360-
def namespaced_view_name(view_name):
364+
def namespaced_view_name(view_name, metric_prefix):
361365
""" create string to be used as metric type
362366
"""
363-
return os.path.join("custom.googleapis.com", "opencensus", view_name)
367+
if metric_prefix == "":
368+
return os.path.join("custom.googleapis.com", "opencensus", view_name)
369+
return os.path.join(metric_prefix, view_name)
364370

365371

366372
def new_label_descriptors(defaults, keys):

tests/unit/stats/exporter/test_stackdriver_stats.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,11 @@ def test_new_label_descriptors(self):
160160
def test_namespacedviews(self):
161161
view_name = "view-1"
162162
expected_view_name_namespaced = "custom.googleapis.com/opencensus/%s" % view_name
163-
view_name_namespaced = stackdriver.namespaced_view_name(view_name)
163+
view_name_namespaced = stackdriver.namespaced_view_name(view_name, "")
164+
self.assertEqual(expected_view_name_namespaced, view_name_namespaced)
164165

166+
expected_view_name_namespaced = "kubernetes.io/myorg/%s" % view_name
167+
view_name_namespaced = stackdriver.namespaced_view_name(view_name, "kubernetes.io/myorg")
165168
self.assertEqual(expected_view_name_namespaced, view_name_namespaced)
166169

167170
def test_on_register_view(self):
@@ -293,11 +296,13 @@ def test_create_timeseries(self, monitor_resource_mock):
293296

294297
v_data = measure_map.measure_to_view_map.get_view(VIDEO_SIZE_VIEW_NAME, None)
295298

296-
time_series = exporter.create_time_series_list(v_data, "")
299+
time_series = exporter.create_time_series_list(v_data, "", "")
297300
self.assertEquals(time_series.resource.type, "global")
301+
self.assertEquals(time_series.metric.type, "custom.googleapis.com/opencensus/my.org/views/video_size_test2")
298302
self.assertIsNotNone(time_series)
299303

300-
time_series = exporter.create_time_series_list(v_data, "global")
304+
time_series = exporter.create_time_series_list(v_data, "global", "kubernetes.io/myorg")
305+
self.assertEquals(time_series.metric.type, "kubernetes.io/myorg/my.org/views/video_size_test2")
301306
self.assertIsNotNone(time_series)
302307

303308

@@ -342,11 +347,13 @@ def test_create_timeseries_with_resource(self, monitor_resource_mock):
342347
monitor_resource_mock.return_value.resource_type = 'gce_instance'
343348
monitor_resource_mock.return_value.get_resource_labels.return_value = mocked_labels
344349

345-
time_series = exporter.create_time_series_list(v_data, "")
350+
time_series = exporter.create_time_series_list(v_data, "", "")
346351
self.assertEquals(time_series.resource.type, "gce_instance")
352+
self.assertEquals(time_series.metric.type, "custom.googleapis.com/opencensus/my.org/views/video_size_test2")
347353
self.assertIsNotNone(time_series)
348354

349-
time_series = exporter.create_time_series_list(v_data, "global")
355+
time_series = exporter.create_time_series_list(v_data, "global", "")
356+
self.assertEquals(time_series.metric.type, "custom.googleapis.com/opencensus/my.org/views/video_size_test2")
350357
self.assertIsNotNone(time_series)
351358

352359
@mock.patch('opencensus.stats.exporters.stackdriver_exporter.'
@@ -389,7 +396,8 @@ def test_create_timeseries_str_tagvalue(self, monitor_resource_mock):
389396

390397
v_data = measure_map.measure_to_view_map.get_view(view_name1, None)
391398

392-
time_series = exporter.create_time_series_list(v_data,"global")
399+
time_series = exporter.create_time_series_list(v_data, "global", "kubernetes.io/myorg/")
400+
self.assertEquals(time_series.metric.type, "kubernetes.io/myorg/view-name1")
393401
self.assertIsNotNone(time_series)
394402

395403
@mock.patch('opencensus.stats.exporters.stackdriver_exporter.'
@@ -432,7 +440,8 @@ def test_create_timeseries_last_value_float_tagvalue(self, monitor_resource_mock
432440

433441
v_data = measure_map.measure_to_view_map.get_view(view_name1, None)
434442

435-
time_series = exporter.create_time_series_list(v_data,"global")
443+
time_series = exporter.create_time_series_list(v_data,"global", "kubernetes.io/myorg")
444+
self.assertEquals(time_series.metric.type, "kubernetes.io/myorg/view-name1")
436445
self.assertIsNotNone(time_series)
437446

438447
@mock.patch('opencensus.stats.exporters.stackdriver_exporter.'
@@ -475,7 +484,8 @@ def test_create_timeseries_float_tagvalue(self, monitor_resource_mock):
475484

476485
v_data = measure_map.measure_to_view_map.get_view(view_name2, None)
477486

478-
time_series = exporter.create_time_series_list(v_data,"global")
487+
time_series = exporter.create_time_series_list(v_data, "global", "")
488+
self.assertEquals(time_series.metric.type, "custom.googleapis.com/opencensus/view-name2")
479489
self.assertIsNotNone(time_series)
480490

481491
def test_create_metric_descriptor_count(self):

0 commit comments

Comments
 (0)