Grafana-Variable配置小技巧
版权声明 本站原创文章 由 萌叔 发表
转载请注明 萌叔 | https://vearne.cc
前言
Dashboard是Grafana中非常重要的概念,每个Dashboard都是一个巨大的看板,在Dashboard上可以配置Panel(图表)。在Dashboard中有个特别的配置--Variables,Variables提供了用户和面板交互,可以动态刷新面板。
有些特殊的场景,需要有些小技巧,否则Variables仍然无法满足我们的要求。
1. Case 1
我要查看不同股票的日线图
1.1 Query
SELECT
trade_date AS "time",
close
FROM daily_data where ts_code = "$ts_code" order by trade_date
ts_code是股票的代码,显然如果只看股票代码,很难想起这个代码究竟对应的是哪一只股票。
最好的方式是如下图这样,在变量的下拉列表中,显示股票名称,但是在实际的Query中使用股票代码查询。
grafana支持这种玩法,称为text和value
1.2 变量配置
注意需要Grafana的版本在7.4.5 或以上
1.2.1 配置Query
select concat(name, "#", ts_code) from target;
这一步会查出形如下面的结果
中国平安#601318.SH
三一重工#600031.SH
...
1.2.2 分离出text和value
配置Regex
/(?<text>.*)#(?<value>.*)/
2. Case 2
我们有一组MySQL实例需要监控,MySQL的数量多达几十个。
但是实际上大家都知道,MySQL是主从的,1个主和多个从构成了1个集群。每个集群单独为1个业务提供服务。
MySQL实例如果这样列出来,萌叔根本不可能知道,这个实例属于哪个集群,支撑那个业务。
我们希望的效果,是先选择partner(业务方),然后再选择再从这个集群中选出关心的实例
2.1 Query
事实上,我们可以通过构建2个Variables来达到这个目标
2.1.1 Query1
label_values(mysql_up, partner)
得到变量partner
2.1.2 Query2
label_values(mysql_up{partner="$partner"}, instance)
Query2引用Query1的结果
3. Case 3
萌叔的服务部署在2个机房,机房名称是由k8s的维护定义好的,形如
- hd001
- hd002
在dashboard上看的时候非常不直观,这里用custom variable的方式
重新配置一下
实际配置:
山东青岛 : hd001, 上海松江 : hd002
注意: 冒号的左右两侧必须有空格