当不再有可用数据的时间序列违反政策时,解决 stackdriver 事件
Resolve stackdriver incident when no more timeseries with available data violate the policy
我在云 运行 修订请求延迟等指标上有 Stackdriver alerts/incidents。
如果很久以前有几个具有高延迟的调用,但此后没有任何具有低延迟的新请求,则该事件将永久触发。这是因为当没有新的请求进来时,指标就没有数据点。
当基础指标没有最近的数据点时,有没有办法自动阻止事件触发?或者是否有另一种方法可以在云中发出高请求延迟警报 运行,当没有新的高延迟请求到来时自动再次关闭警报?
编辑:此解决方案将不起作用,因为请求计数停止发送到 Stackdriver,而不是降至零。如 中所述,解决方案是为请求创建一个 logs-based 指标,当没有其他请求时,该指标将适当地降至零。
此行为记录在 alerting docs:
If measurements are missing (for example, if there are no HTTP
requests for a couple of minutes), the policy uses the last recorded
value to evaluate conditions.
其中有一些建议可以缓解此问题,但所有建议都假设您实际上是在收集指标,而不是您根本没有指标的情况(因为您停止接收请求)。
这可能是设计使然:即使您没有收到额外的请求,您可能仍想检查为什么所有最新的请求都有这种增加的延迟。
要解决此功能,您可以尝试在警报策略中使用 multiple conditions:
- 一个与延迟相关的条件:如果延迟 > X
- 与请求存在相关的一个条件:如果请求计数 > 1
如果将它们与 AND_WITH_MATCHING_RESOURCE
结合使用,它应该仅在存在高延迟 和 有请求时触发。当不满足 2 个条件之一时,应解决该事件。即使没有摄取与延迟相关的新指标(因此警报策略仍然认为延迟很高),请求计数也会在指定的持续时间后停止匹配。
does not work as-is, because the google cloud run built-in metric for the request count does not go to zero when there are no more requests coming in. Instead, it just stops providing any data points. The solution for us was to create a custom logs-based metric that counts the log entries written for every request by cloud run, because the logs-based metric does indeed go to zero, then combine it with the AND_WITH_MATCHING_RESOURCE
as described in
的解法
该图表比较了从 google pre-defined 指标 run.googleapis.com/request_count 获得的请求计数(紫色)与自定义生成的指标 logs-based 公制(蓝色)。只有当没有更多请求进入时,后者才会变为零。
我在云 运行 修订请求延迟等指标上有 Stackdriver alerts/incidents。
如果很久以前有几个具有高延迟的调用,但此后没有任何具有低延迟的新请求,则该事件将永久触发。这是因为当没有新的请求进来时,指标就没有数据点。
当基础指标没有最近的数据点时,有没有办法自动阻止事件触发?或者是否有另一种方法可以在云中发出高请求延迟警报 运行,当没有新的高延迟请求到来时自动再次关闭警报?
编辑:此解决方案将不起作用,因为请求计数停止发送到 Stackdriver,而不是降至零。如
此行为记录在 alerting docs:
If measurements are missing (for example, if there are no HTTP requests for a couple of minutes), the policy uses the last recorded value to evaluate conditions.
其中有一些建议可以缓解此问题,但所有建议都假设您实际上是在收集指标,而不是您根本没有指标的情况(因为您停止接收请求)。
这可能是设计使然:即使您没有收到额外的请求,您可能仍想检查为什么所有最新的请求都有这种增加的延迟。
要解决此功能,您可以尝试在警报策略中使用 multiple conditions:
- 一个与延迟相关的条件:如果延迟 > X
- 与请求存在相关的一个条件:如果请求计数 > 1
如果将它们与 AND_WITH_MATCHING_RESOURCE
结合使用,它应该仅在存在高延迟 和 有请求时触发。当不满足 2 个条件之一时,应解决该事件。即使没有摄取与延迟相关的新指标(因此警报策略仍然认为延迟很高),请求计数也会在指定的持续时间后停止匹配。
AND_WITH_MATCHING_RESOURCE
as described in
该图表比较了从 google pre-defined 指标 run.googleapis.com/request_count 获得的请求计数(紫色)与自定义生成的指标 logs-based 公制(蓝色)。只有当没有更多请求进入时,后者才会变为零。