【发布时间】:2021-04-13 11:43:13
【问题描述】:
当云函数在 30 分钟内超过 90% 的执行返回非 OK 状态代码时,我希望收到警报。
我过滤的系列是cloudfunctions.googleapis.com/function/execution_count。在所有记录中,我想计算那些满足metric.status != 'ok' 的记录。如果过去 30 分钟内 90% 的记录满足此条件,我想发出警报。
我查看了 Google Cloud 的 Monitoring Query Language 文档并找到了有关比率的部分:https://cloud.google.com/monitoring/mql/examples#qlx-ratio-ratio
我是这样写的:
fetch cloud_function
| metric 'cloudfunctions.googleapis.com/function/execution_count'
| { filter metric.status != 'ok'
; ident }
| group_by [resource.function_name]
| ratio
| window 30m
| condition ratio >= 0.9 '1'
它似乎有效,并且图表显示了正确的值。但是,似乎只要函数返回错误代码,即使有其他成功执行以补偿问题,也会引发警报。
例如,这是引发警报时的指标图表,我在 Monitoring > Alerting > 中获得(单击事件部分中的最后一个警报)
警报中报告的函数是processPurchase
我是否遗漏了一些可能导致问题的东西?查看图表,似乎警报不应触发。然而,我有关于警报的事件和通知。它会在几分钟后解决。
【问题讨论】:
-
需要指定对齐周期,
window 30m不够。尝试查看every和alignment period in alerts。 -
您可能同时需要
align和every,但我现在不记得了.. 如果您能弄清楚,请随意自行回答问题。
标签: google-cloud-functions monitoring google-cloud-monitoring