如何在Grafana Alerting中合并查询?基于Prometheus与SQL的告警过滤需求
在Grafana 9.4中实现SQL过滤Prometheus告警的方案
可以实现,不过不能直接照搬仪表盘面板的转换步骤(告警规则不支持面板里的Merge/Filter这类可视化转换操作),但可以通过变量+Prometheus正则匹配的方式达到同样效果,具体步骤如下:
1. 创建SQL数据源的有效租户变量
- 进入Grafana的「变量」设置页面,新建一个查询类型变量
- 数据源选择你的SQL数据源,查询语句写:
SELECT tenant FROM your_table WHERE is_visible = 1 - 变量名设为
valid_tenants,变量类型选「查询」,勾选「多值」(如果需要匹配多个租户),保存变量
2. 在告警规则中引用变量过滤Prometheus指标
- 新建告警规则,数据源选择Prometheus
- 告警查询语句修改为:
这里用Prometheus的your_metric{tenant=~"$valid_tenants", ...}=~正则匹配操作符,Grafana会自动把变量中的多个租户值拼接成tenant1|tenant2|tenant3的正则格式,只返回符合条件的租户指标
3. 验证和调整
- 先在仪表盘的Prometheus查询中测试这个变量引用,确认只返回
is_visible=1的租户数据 - 回到告警规则,设置你的告警阈值条件(比如指标值>XX),完成配置
补充说明
如果你的SQL过滤逻辑更复杂(比如需要动态关联更多字段),可以考虑用Prometheus的记录规则先预处理指标,但变量方案是最贴合你现有逻辑、实现成本最低的方式,完全适配Grafana 9.4版本。
内容的提问来源于stack exchange,提问作者Marcel Gosselin
相关产品推荐
相关产品推荐

