Skip to content

Commit 0a6a0fb

Browse files
authored
fix: remove calls to list and create metric descriptors in Cloud Monitoring exporter to prevent Quota Exceeded errors (#286)
1 parent 61f2f32 commit 0a6a0fb

File tree

1 file changed

+1
-47
lines changed

1 file changed

+1
-47
lines changed

slo_generator/exporters/cloud_monitoring.py

Lines changed: 1 addition & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
"""
1818
import logging
1919

20-
import google.api_core.exceptions
21-
from google.api import metric_pb2 as ga_metric
2220
from google.cloud import monitoring_v3
2321

2422
from .base import MetricsExporter
@@ -36,17 +34,14 @@ def __init__(self):
3634
self.client = monitoring_v3.MetricServiceClient()
3735

3836
def export_metric(self, data: dict):
39-
"""Export metric to Cloud Monitoring. Create metric descriptor if
40-
it doesn't exist.
37+
"""Export metric to Cloud Monitoring.
4138
4239
Args:
4340
data (dict): Data to send to Cloud Monitoring.
4441
4542
Returns:
4643
object: Cloud Monitoring API result.
4744
"""
48-
if not self.get_metric_descriptor(data):
49-
self.create_metric_descriptor(data)
5045
self.create_timeseries(data)
5146

5247
def create_timeseries(self, data: dict):
@@ -101,44 +96,3 @@ def create_timeseries(self, data: dict):
10196
f"{labels['slo_name']}-{labels['error_budget_policy_step_name']}"
10297
)
10398
# pylint: enable=E1101
104-
105-
def get_metric_descriptor(self, data: dict):
106-
"""Get Cloud Monitoring metric descriptor.
107-
108-
Args:
109-
data (dict): Metric data.
110-
111-
Returns:
112-
object: Metric descriptor (or None if not found).
113-
"""
114-
project_id = data["project_id"]
115-
metric_id = data["name"]
116-
request = monitoring_v3.GetMetricDescriptorRequest(
117-
name=f"projects/{project_id}/metricDescriptors/{metric_id}"
118-
)
119-
try:
120-
return self.client.get_metric_descriptor(request)
121-
except google.api_core.exceptions.NotFound:
122-
return None
123-
124-
def create_metric_descriptor(self, data: dict):
125-
"""Create Cloud Monitoring metric descriptor.
126-
127-
Args:
128-
data (dict): Metric data.
129-
130-
Returns:
131-
object: Metric descriptor.
132-
"""
133-
project = self.client.common_project_path(data["project_id"])
134-
descriptor = ga_metric.MetricDescriptor()
135-
descriptor.type = data["name"]
136-
# pylint: disable=E1101
137-
descriptor.metric_kind = ga_metric.MetricDescriptor.MetricKind.GAUGE
138-
descriptor.value_type = ga_metric.MetricDescriptor.ValueType.DOUBLE
139-
# pylint: enable=E1101
140-
descriptor.description = data["description"]
141-
descriptor = self.client.create_metric_descriptor(
142-
name=project, metric_descriptor=descriptor
143-
)
144-
return descriptor

0 commit comments

Comments
 (0)