博客/工程

问我们任何事情:如何别名仪表板变量在Grafana在SQL

2019年7月17日2分钟

最近一位客户提出了一个问题,我很惊讶我们没有一个简单的答案:

如何将一些深奥的ID或序列号(如fe03-s3-x883)转换为用户友好的名称(如“harry”或“alice”)?

在常规的模板语言中,通过映射文件或类似文件很容易做到这一点,但用Grafana要稍微复杂一些。如果您正在使用SQL (Grafana现在支持SQL),有一个简单的技巧可以完成这个任务。

客户在重复一行的上下文中询问,但是下面的答案适用于任何变量。

让我们假设一些人为的,但简单的数据来解释这个概念。

service_id display_name
x0032s24 爱丽丝
x123s997 鲍勃
y83l93 查理

我们需要将这些数据存储在一个Grafana可以访问的数据源中。我使用了MariaDB/MySQL数据库,但Postgres也可以工作。

MySQL中的数据
MySQL中的数据

在我的实验室环境中,我只是在我的Grafana服务器上快速安装了MariaDB包,并使用了没有身份验证的测试数据库。在生产环境中,您当然会考虑到更多的安全性。请特别注意底部的警告信息。

接下来,我们将把数据放入数据库。如果您有很多条目,请研究将数据放入MySQL表的多种方法。

将数据放入MySQL表中
将数据放入MySQL表中

现在我们有了想要的数据。

MariaDB表中的数据
MariaDB表中的数据

在仪表盘中,进入仪表板设置菜单和变量部分,单击对于一个新变量,并像下面那样填充它。

创建一个新变量
创建一个新变量

关键位在查询中。指定为的数据库列__text在显示变量和赋值给什么时使用__value作为Grafana进行查询时的实际值。的文档的mysql数据源有更多的信息,关于你可以做什么。

让我们在一个简单的仪表板上尝试一下。

简单的仪表板
简单的仪表板

这里你可以看到,尽管下拉菜单显示的是我们想要的显示名称,查询变量,service_id美元,实际上是使用存储在数据库中的值来执行查询。

显示存储在数据库中的值的仪表板
显示存储在数据库中的值的仪表板

它也适用于图表标题。

你甚至可以循环它。

显示循环的仪表板
显示循环的仪表板

关于监控最佳实践有什么问题吗?电邮至help@www.tubolov.com