Grafana Query类型模板变量的使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Grafana Query类型模板变量的使用相关的知识,希望对你有一定的参考价值。
参考技术A假设我有2种类型的服务器,一种是本地电脑(每个指标名称都存在nodename=\'mac-local\'),一种是阿里云服务器(每个指标名称都存在nodename=\'aliyun\'),同时每个指标下都存在一个 instance=\'具体的服务器的ip地址\'标签。
即我们采集的时间序列大致上都有如下标签:
eg:
node_uname_infonodename=\'xxxx\',instance=\'yyyy\'
我们想监控一下每台主机的cpu的使用情况。同时不能在一个图形上显示出所有的机器的cpu使用率,需要根据用户的选择而显示。即要出现下图所示的结果,这个情况我们可以通过grafana的 模板变量 来实现。
从上图可以,instance的出现是根据 服务器类型 的选择而不同的。
1、在Dashboard页面点击小齿轮⚙️图标。
2、点击创建一个变量
注意:
instance 变量的值是根据上一步 nodename 变量的值而来的,及选择不同的 nodename,instance 的值应该是不同的。及在 instance 变量的查询语句中需要引用 nodename 变的值,通过 $nodename 即可引用。
做完上方出现的1,2两步,即可出现需求中出现的画面。
在 grafana 中引入此json串,即可实现上图的效果。 但是要保证每个时间序列都存在 nodename 和 instance的标签。
1、 grafana模板变量的使用
Grafana/Loki:如何在 LogQL 中使用多选模板变量?
【中文标题】Grafana/Loki:如何在 LogQL 中使用多选模板变量?【英文标题】:Grafana/Loki: How to use multi-select template variable with LogQL? 【发布时间】:2022-01-14 14:29:20 【问题描述】:我有一个自定义模板变量,它显示以下逗号分隔值:信息、错误、警告、调试。变量的名称是启用多选的 $Level。我需要它,所以当您选择超过 1 个值时,行过滤器表达式将相互堆叠,如下所示:
例如。信息+错误被选中:
job="mylogs" |="info" |="error"
目前,我的查询设置如下:
job="mylogs" |="$Level"
但是,使用当前方式,当我选择超过 1 个选项时,它不会产生任何日志。有没有办法通过 Grafana/Loki 实现这一目标?
TL;DR 有没有办法在 LogQL 行过滤器表达式中格式化 Grafana 模板变量?
【问题讨论】:
【参考方案1】:我通过使用此表达式搜索多个值解决了我的问题:
job="mylogs" |~ "($Level|$Level|$Level|$Level)"
但是,这不是一个非常简洁的解决方案。如果我有一个包含 25 个以上值的自定义列表怎么办。虽然这解决了我的直接问题,但有人知道更优雅的解决方案吗?
更新:上述问题的解决方案就是使用这个:
job="mylogs" |~ "($Level)"
查询自动展开。
【讨论】:
以上是关于Grafana Query类型模板变量的使用的主要内容,如果未能解决你的问题,请参考以下文章