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类型模板变量的使用的主要内容,如果未能解决你的问题,请参考以下文章

Grafana 的一些使用技巧

如何使用 Prometheus 作为数据源制作带有变量引用另一个变量的 Grafana 模板?

grafana仪表盘中针对prometheus设置全局变量

Grafana 配置变量

有啥方法可以在 grafana 上将键/值对作为模板变量?

Grafana/Loki:如何在 LogQL 中使用多选模板变量?