首页 > 解决方案 > GCP Stackdriver Monitoring 累积自定义指标开始和结束时间错误

问题描述

编辑:我想我解决了这个问题。只有开始时间需要保持不变,直到需要重置累积的数字,所以在我的情况下,一天的开始将在午夜之后重置,但结束时间将始终是当前时间。我仍在测试这个,所以我会在得到更多结果后立即关闭这个问题。

EDIT2:因此,将时间间隔设置为从每天开始到发送时结束,图表仍然显示每次调用 client.create_time_series 的峰值。这是我正在寻找的一个示例(忽略右轴,数字应该更高,但我的 Photoshop 技能不是很好): 在此处输入图像描述 这就是我目前得到的: 在此处输入图像描述

在我解释错误之前,这是我尝试使用此自定义监控指标实现的目标。我的程序每隔一段时间就会记录一些处理过的数据,我想查看每天处理的总数。所以我认为累积指标是正确的选择,每天重置间隔。问题是我不确定如何实现这一目标。

这就是我正在做的事情。每次处理一些新数据时,我都会使用 where 将其添加到指标中client.create_time_series(project_name, [series]),其中[series]包含point.value.int64_value当时处理的数据数量。现在我遇到的问题是间隔。我认为间隔应该是每天的开始和结束时间,我认为指标会在一天结束时从 0 开始。所以我这样做了:

point                             = series.points.add()
point.value.int64_value           = num
startDay                          = time.mktime(datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0).timetuple())
endDay                            = time.mktime(datetime.datetime.now().replace(hour=23, minute=59, second=59, microsecond=0).timetuple())
point.interval.start_time.seconds = int(startDay)
point.interval.start_time.nanos   = int((startDay - point.interval.start_time.seconds) * 10**9)
point.interval.end_time.seconds   = int(endDay)
point.interval.end_time.nanos     = int((endDay - point.interval.end_time.seconds) * 10**9)
client.create_time_series(project_name, [series])

我得到这个错误:

400 Field timeSeries[0].points[0].interval.end had an invalid value of \"2018-10-04T16:59:59-07:00\": The end time is too far in the future. A point cannot be written more than 5 minutes into the future.

如果我将时间间隔设置为当前时间,对于发送的每个指标,我只会在图表中看到一堆峰值。我想看到的是在 1 天内从 00:00:00 到 23:59:59 累积的单行,然后在 00:00:00 再次重置。我想要这个,以便我可以查看一天中处理的数据量与每隔一天处理的数据量有关,这样我就可以查看我的过程中是否有任何异常。

所以我想我可能误解了累积指标的工作原理。有没有更好的方法来实现我想要做的事情?

标签: python-3.xmonitoringmetricsgoogle-cloud-stackdriver

解决方案


推荐阅读