能否在Grafana中创建包含常量与查询结果的变量?
实现Grafana变量同时包含查询结果与常量值
完全可行,有两种简单的实现方式:
方法一:通过Grafana变量的自定义选项添加静态值
- 编辑你已创建的
hostname变量,类型选择「查询」,数据源指定为你的Prometheus实例 - 在查询输入框中保留原有的PromQL:
label_values(up{site=~"$site",env=~"$env",team=~"$team",service=~"$service",hostname!~".*exporter"}, hostname) - 滚动到变量设置的「自定义选项」区域,勾选「添加自定义值」
- 在下方的输入框中,每行输入一个常量值:
alpha1、alpha2、alpha3 - 保存变量后,该变量就会同时包含查询返回的主机名和你添加的三个静态值
方法二:修改PromQL直接合并常量值
如果希望所有值都通过查询统一返回,可以修改原PromQL,把常量值合并到查询结果中:
label_values( up{site=~"$site",env=~"$env",team=~"$team",service=~"$service",hostname!~".*exporter"} or on() vector(1) * ignoring(hostname) group_left(hostname) ( vector(1) with (hostname="alpha1") or vector(1) with (hostname="alpha2") or vector(1) with (hostname="alpha3") ), hostname )
- 这个查询会将原
up指标的主机名和三个常量主机名合并,再提取hostname标签值 - 注意:这种方式要求你的Prometheus版本在2.27及以上(支持
with语法)
两种方式各有优劣:方法一操作简单,无需复杂的PromQL修改;方法二则把所有值纳入查询逻辑,适合需要统一管理值来源的场景。
内容的提问来源于stack exchange,提问作者nadavyaf
相关产品推荐
相关产品推荐

