找不到一种干净的方法来针对云功能中的错误设置Stackdriver警报通知
我正在使用云功能将数据处理到云数据存储中。我想提醒两种错误:
我已经完成了以下工作
这是根据问题的答案完成的, how to create alert per error in stackdriver
对于这种情况的第一个触发条件,我会收到一封电子邮件。但是,在随后的触发条件下,让我们在第二天说,我不会。事件也处于“打开”状态。
Resource type: cloud function
Metric:from point 2 above
Aggregation: Aligner: count, Reducer: None, Alignment period: 1m
Configuration: Condition triggers if: Any time series violates, Condition:
is above, Threshold: 0.001, For: 1 min
所以我有3个问题,
这是满足我创建警报要求的正确方法吗?
如何继续接收有关后续错误的警报通知?
如何自动/手动将事件设置为“已解决”?
答案 0 :(得分:1)
通常,警报一旦停止触发,警报便会自行解决。警报无法解决的问题是,您的指标仅写入非零点-如果没有错误,则不会写入零。这意味着该策略永远不会收到明确表示一切正常的信号,因此警报就在那里(它们会在7天后自动关闭,但我想这对您没有太大用处)。
这是一个常见问题,需要解决的棘手问题。一种可能是将策略写为错误与非零值(例如请求计数)的比率。只要请求计数不为零,如果没有错误,比率将计算为零,因此有关比率的警报将自动解决。但是,您需要对舍入错误有所注意-如果请求计数足够高,则由于该比率可能舍入为零,因此您可能会错过一个错误。
Stackdriver工程师Aaron Sher
答案 1 :(得分:1)
我遇到了类似的问题,并设法至少每次都收到一封邮件。 “技巧”似乎是结合使用sum
而不是count
和for most recent value
-参见下面的屏幕截图。
这会导致Stackdriver每当找到匹配的日志条目时就发送邮件,并在一分钟后解决问题。
答案 2 :(得分:0)
我们通过将insertId
标记为基于日志的度量标准的标签来解决此问题,该度量标准是针对从运行服务的Pod中获得的每个日志记录创建的。
在警报策略中,此标签有两点帮助:
record_id
),这是使每个事件都唯一的原因,因此无需等待其他事件得到解决就可以立即得到报告。
https://console.cloud.google.com/logs/viewer?project=MY_PROJECT&advancedFilter=insertId%3D%22${metric.label.record_id}%22
正如@Aaron Sher在回答中提到的那样,这是一个棘手的问题。我们可能做过一些不推荐或效率不高的事情,但是效果很好,我们当然愿意提出改进建议。