Stackdriver Monitoring 警报:我可以使用函数代替条件阈值的常量吗?
Stackdriver Monitoring alerting: can I use functions instead of constants for Condition Threshold?
我正在玩弄 Stackdriver Monitoring 警报并使用了 Prometheus/Alertmanager 一点我对似乎缺乏选项感到非常失望。
例如,我有一种资源每天发出一个数据点,即特定资源年龄的纪元秒。我想创建一个警报,将数据点与当前时间进行比较,如果资源太旧,则应触发警报。
在 Prometheus 中会这样表达:
- alert: TooOldAlert
expr: sum(time() - datapoint_epoch_second) BY (datapoint_group) > 48 * 60 * 60
for: 1m
labels:
severity: critical
所以如果数据点的存在时间超过 48 小时,我会收到警报。
Stackdriver Monitoring 警报中似乎不存在这样的选项。我也尝试检查 API / 编程接口,但我也没有找到。
TL;DR:Stackdriver Monitoring 警报中是否存在内置函数?
Stackdriver Alerting 有内置功能。但它们必须与聚合、过滤、比较和创建比率有关。请参阅有关警报策略的文档 here. An example for setting them up is here。
但是,没有 time()
函数可用于在这些表达式中获取纪元时间。这就是问题所在。
为了将您的年龄警报移植到 Stackdriver,一种方法是更改日志 "up-stream",以便您的服务发出一个日志,说明它相对于 "now" 的年龄。在这种情况下,您可以过滤年龄而无需调用现在是什么时间。
如果您无法更改服务中的日志结构,您可以选择捕获日志 "down-stream" 并对其进行转换。一种方法是将此 Stackdriver 日志下沉到 Pub/Sub,并让该事件触发 Cloud Function。示例指南是 here。
我正在玩弄 Stackdriver Monitoring 警报并使用了 Prometheus/Alertmanager 一点我对似乎缺乏选项感到非常失望。
例如,我有一种资源每天发出一个数据点,即特定资源年龄的纪元秒。我想创建一个警报,将数据点与当前时间进行比较,如果资源太旧,则应触发警报。
在 Prometheus 中会这样表达:
- alert: TooOldAlert
expr: sum(time() - datapoint_epoch_second) BY (datapoint_group) > 48 * 60 * 60
for: 1m
labels:
severity: critical
所以如果数据点的存在时间超过 48 小时,我会收到警报。
Stackdriver Monitoring 警报中似乎不存在这样的选项。我也尝试检查 API / 编程接口,但我也没有找到。
TL;DR:Stackdriver Monitoring 警报中是否存在内置函数?
Stackdriver Alerting 有内置功能。但它们必须与聚合、过滤、比较和创建比率有关。请参阅有关警报策略的文档 here. An example for setting them up is here。
但是,没有 time()
函数可用于在这些表达式中获取纪元时间。这就是问题所在。
为了将您的年龄警报移植到 Stackdriver,一种方法是更改日志 "up-stream",以便您的服务发出一个日志,说明它相对于 "now" 的年龄。在这种情况下,您可以过滤年龄而无需调用现在是什么时间。
如果您无法更改服务中的日志结构,您可以选择捕获日志 "down-stream" 并对其进行转换。一种方法是将此 Stackdriver 日志下沉到 Pub/Sub,并让该事件触发 Cloud Function。示例指南是 here。