我正在研究可添加到将指标发送到GCP监控的python方法中的装饰器。该方法已确认,但是如果我尝试发送多个观察值,则用于推送指标的API调用将失败。模式是收集指标并在过程完成后刷新,以使该测试保持简单。捕获指标内联的代码在这里:
def append(self, value):
now = time.time()
seconds = int(now)
nanos = int((now - seconds) * 10 ** 9)
interval = monitoring_v3.TimeInterval(
{"end_time": {"seconds": seconds, "nanos": nanos}}
)
point = monitoring_v3.Point({
"interval": interval,
"value": {"double_value": value}
}
)
self.samples[self.name].append(point)
下面的代码在PerfMetric.samples
dict中获取一批数据点,这些数据点指向通过未在此处显示的装饰器monitoring_v3.Point
附加到方法中的类的数组,该append
装饰器使用MetricServiceClient
该类调用名为create_time_series的RPC 。我们指向一个数组数组,所以也许这是不正确的,或者以某种方式我们的元数据在附加中不正确?
@staticmethod
def flush():
client = monitoring_v3.MetricServiceClient()
for x in PerfMetric.samples:
print('{} has {} points'.format(x, len(PerfMetric.samples[x])))
series = monitoring_v3.TimeSeries()
series.metric.type = 'custom.googleapis.com/perf/{}'.format(x)
series.resource.type = "global"
series.points = PerfMetric.samples[x]
client.create_time_series(request={
"name": PerfMetric.project_name,
"time_series": [series]}
)
在此先感谢您的任何建议!
我相信这是Cloud Monitoring API在TimeSeries调用中points[]
针对其数据点的对象所记录的限制:
创建时间序列时,此字段必须恰好包含一个点,并且该点的类型必须与关联指标的值类型相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句