您可以在内容模板中选择合适的变量(labels、annotations、fire_results或results),用于在告警通知中引用日志内容。
日志服务支持在告警通知中展示触发告警的详细信息,帮助您在接收到告警通知后,了解告警详情。针对该功能,需要您在创建告警监控规则时,配置合理的参数,并在内容模板中添加labels、annotations、fire_results或results等变量。更多信息,请参见内容模板变量说明(新版)。
labels:告警标签。
annotations:告警标注。
fire_results:触发告警的数据。
results:查询参数和中间结果。
例如在监控Nginx访问时,您可以使用如下查询和分析语句获取状态码、报错机器的IP地址、错误次数等信息,然后针对该结果创建告警监控规则,并在内容模板中引用该结果。当访问出错(status >=400)时,日志服务会给您发送告警通知,并在告警通知中展示状态码、报错机器的IP地址、错误次数等信息。
查询和分析语句
status >=400 | SELECT status, __source__ AS ip, count(*) AS cnt GROUP BY status,ip
查询和分析结果
使用labels变量
您可以在内容模板中使用labels变量,用于在告警通知中引用日志内容。
告警监控规则
您可以在配置告警规则时添加标签或者设置分组评估。触发告警后,告警消息中将生成labels信息。
例如您要在告警消息中添加日志来源、所属环境、状态码等信息,则您可以添加标签
app:nginx
和env:prod
以及设置分组评估字段为status。告警消息
触发告警后,将生成如下告警消息。
{ "labels": { "app": "nginx", "env": "prod", "status": "404" } }
内容模板
您可以在内容模板中添加labels变量,则告警通知中将引用您所设置的日志内容。如何设置内容模板,请参见创建内容模板。
使用annotations变量
您可以在内容模板中使用annotations变量,用于在告警通知中引用日志内容。
告警监控规则
您可以在配置告警规则时手动添加标注信息或使用自动添加标注功能。触发告警后,告警消息中将生成annotations信息。更多信息,请参见标注。
说明日志服务默认提供两个标注。
例如您要在告警消息中添加状态码、机器IP地址、错误次数等信息,则您可以添加
status:${status}
、ip:${ip}
、cnt:${cnt}
等标注信息。手动添加标注
使用自动添加标注功能
告警消息
触发告警后,将生成如下告警消息。
{ "annotations": { "title": "Nginx访问错误告警触发", "desc": "状态码400错误发生了15次" "status": "400" "ip": "127.0.0.1" "cnt": "15" "__count__": "1" } }
内容模板
您可以在内容模板中添加annotations变量,则告警通知中将引用您所设置的日志内容。如何设置内容模板,请参见创建内容模板。
使用fire_results变量
您可以在内容模板中使用fire_results变量,用于在告警通知中引用日志内容。
告警监控规则
日志服务会根据您设置的监控规则,生成告警消息。
告警消息
触发告警后,将生成如下告警消息。包括状态码、机器IP地址,发生的错误数。
{ "fire_results": [ { "status": "401", "ip": "127.0.0.1", "cnt": "3" }, { "status": "400", "ip": "127.0.0.1", "cnt": "7" }, { "status": "501", "ip": "127.0.0.1", "cnt": "4" }, { "status": "404", "ip": "127.0.0.1", "cnt": "4" }, { "status": "402", "ip": "127.0.0.1", "cnt": "6" }, { "status": "403", "ip": "127.0.0.1", "cnt": "8" } ] }
内容模板
您可以在内容模板中添加fire_results变量,则告警通知中将引用您所设置的日志内容。如何设置内容模板,请参见创建内容模板。
使用results变量
您可以在内容模板中使用results变量,用于在告警通知中引用日志内容。
告警监控规则
日志服务会根据您设置的监控规则,生成告警消息。
告警消息
触发告警后,将生成如下告警消息。包括状态码、机器IP地址,发生的错误数。
说明如果一个告警监控规则中有多个查询统计,那么results数组将包含多项,每项对应一个查询统计。
{ "results": [{ "store_type": "log", "region": "cn-hangzhou", "project": "test-alert", "store": "nginx-access-log", "query": "status >= 400 | select status, __source__ as ip, count(*) as cnt group by status, ip", "start_time": 1640006894, "end_time": 1640007014, "dashboard_id": "", "raw_results": [ { "status": "401", "ip": "127.0.0.1", "cnt": "3" }, { "status": "400", "ip": "127.0.0.1", "cnt": "7" }, { "status": "501", "ip": "127.0.0.1", "cnt": "4" }, { "status": "404", "ip": "127.0.0.1", "cnt": "4" }, { "status": "402", "ip": "127.0.0.1", "cnt": "6" }, { "status": "403", "ip": "127.0.0.1", "cnt": "8" } ], "raw_result_count": 6, "fire_result": { "status": "401", "ip": "127.0.0.1", "cnt": "3" }, "has_sql": true, "truncated": false, "role_arn": "" }] }
内容模板
您可以在内容模板中添加results变量,则告警通知中将引用您所设置的日志内容。如何设置内容模板,请参见创建内容模板。
模板变量说明
{%- for result in alert.fire_results %}
- status: {{ result.status }}, count: {{ result.cnt }}
{%- endfor %}
日志服务还支持通过内置函数格式化通知内容。更多信息,请参见内容模板语法(新版)和内置模板函数。