如何在基于CloudWatch Logs Insights的Grafana告警中补充错误详情
如何在Grafana CloudWatch告警通知中添加错误详情(如消息、时间戳)
要让Grafana告警通知包含5xx错误的时间戳、错误消息等详情,需要从查询语句、告警配置、通知模板三个环节调整,具体步骤如下:
1. 优化CloudWatch Logs Insights查询
首先要确保你的查询能返回需要的详情字段,而不只是聚合统计值:
- 如果需要获取最新的错误条目,调整查询语句返回具体日志字段,比如:
这个查询会返回最新10条5xx错误的时间戳、错误消息、状态码和请求路径。fields @timestamp, @message, status, requestPath | filter status between 500 and 599 | sort @timestamp desc | limit 10 - 如果需要保留聚合统计(比如错误总数)同时收集详情,可以用
array_agg聚合字段:fields @timestamp, @message, status, requestPath | filter status between 500 and 599 | stats count() as errorCount, array_agg(concat(@timestamp, ": ", @message)) as errorMessages by requestPath
2. 调整Grafana告警查询配置
在Grafana告警规则的查询部分,使用上述优化后的Logs Insights查询:
- 确保查询结果中包含你需要的字段(@timestamp、@message等),而不是仅返回错误计数。
- 如果告警是基于错误数阈值触发(比如错误数>0),可以保留一个查询用于阈值判断,另一个查询专门获取详情。
3. 自定义告警通知模板
Grafana支持通过模板提取查询结果中的字段,将详情插入到通知内容里:
- 进入
Alerting > Notification policies,找到对应的通知渠道,编辑其Message template;或者在告警规则的Message输入框中直接使用模板变量。 - 示例模板(根据你的查询返回字段调整):
注意:## 5xx服务错误告警 触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }} 错误总数: {{ $values.ErrCount.Value }} 最新错误详情: {{ range $index, $row := $values.ErrDetails.Rows }} - 时间: {{ $row."@timestamp" }} 消息: {{ $row."@message" }} 请求路径: {{ $row.requestPath }} 状态码: {{ $row.status }} {{ end }}$values.ErrCount和$values.ErrDetails是你告警规则中查询的ID(比如查询命名为ErrCount、ErrDetails),需要和实际配置对应。
4. 验证通知效果
手动触发一次5xx错误,检查告警通知是否正确显示时间戳、错误消息等详情。如果字段未显示,确认:
- 查询确实返回了对应的字段
- 模板中的变量名和查询返回的字段名完全匹配(注意大小写)
内容的提问来源于stack exchange,提问作者Kancha
相关产品推荐
相关产品推荐

