附加信息丰富(商业版)
概述
附加信息丰富(Annotation enrich by query data)是一种告警增强的方式。在告警发生后,它能通过关联查询的方式,从数据源中查询相关信息,并附加到告警中,提供更丰富的告警数据。
- 有查询到数据:将数据添加到告警 annotation 中
- 未查询到数据:正常发送原告警
这种机制可以丰富告警信息,方便运维人员快速定位告警问题。
使用场景
场景一:指标告警查询 DB 数据
如果是配置的指标类的告警,可以在告警触发时,查询 DB 数据获取到更多信息。比如查询 Doris 数据源中的日志。
场景二:服务响应超时告警,查询指标数据
如果是应用层5XX告警,可以在告警触发时,查询 CPU/内存/主机负载指标,并追加到告警消息中,便于辅助定位问题。
场景三:日志告警查询指标数据
如果是配置的错误日志类告警,可以在告警触发时,查询经验指标数据获取到更多信息。比如查询 Prometheus 中可能与错误日志相关的指标
配置说明
配置步骤
1. 配置数据查询

这里需要选择数据源类型,并配置查询语句进行查询。数据源可以在这里选择,也可以开启使用告警事件中的数据源。 这里选择告警事件,主要是方便配置和预览数据使用,查询语句中可以将告警事件中的信息添加为变量。
如果是 Prometheus 数据源,查询语句配置可参考:
up{instance=~"{{$labels.instance}}.*"}
如果是 DB 类数据源,要求 SQL 中添加 limit 子句,并指定数据库名。查询语句配置可参考:
SELECT * FROM test_db.ewall_event WHERE event_date > '2025-11-20 17:00:01' and event_type != '{{$labels.app}}' limit 2;
这里查询的数据,返回结果是一个数组。 强烈建议查询语句中限制返回结果数量,否则产生的告警消息过于庞大,可读性差。
对于 Doris 数据源的查询,强烈建议在查询中指定一个具体时间范围,否则就是全表扫描。例如:
SELECT scope_name,message FROM service_app.app_log WHERE message LIKE '%{{$labels.provider}}%' AND timestamp >= DATE_SUB(NOW(), INTERVAL 2 MINUTE) AND timestamp <= NOW() LIMIT 2
2. 数据预览

这里可以看到真实使用的查询语句和查询数据。如果预览查不到数据,可以检查预览的查询语句,变量是否被成功渲染。
3. 数据追加

数据追加的设计,主要用于将查询结果添加到告警消息中。这里需要配置追加数据的 key / value。 对于 value 配置, 我们支持使用 golang 的模板语法拼接查询结果。
典型的配置如下:
实例标签: {{ $labels.instance }}
查询结果:{{ range $item := $A }} - {{ $item.handler }} ({{ $item.code }}) {{ end }}
查询1结果:
{{ range $item := $A }} - {{ $item.job }} ({{ $item.value }}) {{ end }}
查询2结果:
{{ range $item := $B }} - {{ $item.job }} {{ toTime $item.timestamp }} ({{ $item.value }}) {{ end }}
$labels 变量引用的是告警事件中的标签,$A $B 则引用的对应的查询结果。查询返回结果的字段名称,可以参考上面的数据预览结果进行配置。
4. 测试

测试整体配置结果。
注意事项
查询性能
- 每次告警触发时都会执行查询,请确保查询语句性能良好
- 避免使用复杂的聚合查询或大时间范围的查询
查询结果数量
- 避免返回过多数据,产生可读性极差的告警消息
数据源一致
- 若开启使用告警事件中的数据源,用户需自己保证,告警规则中使用的数据源,与查询处理器中的数据源类型匹配。例如,在告警规则页面选择了 Prometheus 数据源,那么它关联的事件处理器需要也是需要是 Prometheus 类型的数据源。
