堆栈驱动程序监控警报:是否可以对条件阈值使用函数而不是常量?



我正在玩Stackdriver Monitoring警报,并且使用过Prometheus/Alertmanager,我对似乎缺乏选择感到非常失望。

例如,我有一个资源,每天发出一个数据点,即某个资源年龄的纪元秒。我想创建一个警报,将数据点与当前时间进行比较,如果资源太旧,则应触发警报。

在《普罗米修斯》中,它会这样表达:

- alert: TooOldAlert
expr: sum(time() - datapoint_epoch_second) BY (datapoint_group) > 48 * 60 * 60
for: 1m
labels:
severity: critical

因此,如果数据点的年龄超过 48 小时前,我会收到警报。

堆栈驱动程序监控警报中似乎不存在这样的选项。我也试图检查API/编程接口,但我也在那里遇到了不足。

TL;DR:堆栈驱动程序监控警报中是否存在内置函数?

堆栈驱动程序警报确实具有内置函数。 但它们与聚合、过滤、比较和创建比率有关。 请参阅此处的警报策略文档。 此处是设置它们的示例。

但是,在这些表达式中,没有可用于获取纪元时间的time()函数。 这是摩擦。

为了将您的年龄警报移植到 Stackdriver 中,一种方法是更改日志"上游",以便您的服务发出一个日志,说明它相对于"现在"的年龄。在这种情况下,您可以按年龄进行筛选,而无需调用现在的时间。

如果无法更改服务中的日志结构,则可以选择捕获"下游"日志并对其进行转换。 一种方法是将此堆栈驱动程序日志接收到发布/订阅,并让该事件触发云函数。 此处提供了示例指南。

最新更新