xObserve

  1. 入门教程
  2. 全局变量

我们刚了解了该如何使用仪表盘变量,它们很强大,但是也有致命缺陷:仪表盘变量只能在定义它们的仪表盘内部使用。

假设有两个仪表盘:主机状态和网络状态,它们都是和主机监控相关,因此应该共享同一个变量:host:当我们在一个仪表盘中将host设置为A,然后切换到另一个仪表盘,我们希望host变量也是A

换句话说:所有仪表盘共享同一个变量和同一个选中值。

Grafana 也有全局变量,但是只是它们自己的内置变量,用户无法自定义

全局变量和仪表盘变量使用相同的语法,唯一的区别是全局变量是在仪表盘之外定义的。

创建全局变量

我们来创建一个名为 host 的全局变量:

  1. 点击侧边导航的 配置 图标,然后选择 变量 标签页
global-vars
  1. 点击 新建变量 打开变量编辑器
  2. 填写如下内容:
edit-host-var

啊哈,看起来是不是跟仪表盘变量一样? 所以大家应该很熟悉才对。

是的,host 跟我们在前面文档中创建的 instance 变量是一样的,都是从 Prometheus 中读取主机列表,唯一的区别是 host 是一个全局变量,它可以在任何仪表盘中使用。

点击 提交 按钮,你应该看到它出现在全局变量列表中。

global-vars-table

使用全局变量

首先,回到 Hosts info 仪表盘,看看全局变量的选择器长啥样。

variable-selector

是的,跟仪表盘变量一样,全局变量也有一个选择器,它们的区别是:全局变量的选择器在仪表盘的右侧,而仪表盘变量的选择器在左侧。

现在,选择一个 host 变量值,然后去首页的 Home 仪表盘,看看 host 变量在另一个仪表盘中长啥样

一处选择,处处生效

全局变量最重要的作用就是: 如果你在一个仪表盘中将 host 设置为 A,那么所有其他仪表盘中的 host 也会被设置为 A

我们来尝试下,首先, 在 Hosts info 仪表盘中将 host 设置为 localhost:9100,然后切换到 HomeUser stats 仪表盘,你会发现:

gvar-in-host-info gvar-in-home gvar-in-user-stats

非常棒,如我预期那样,在一个仪表盘中修改后,其它所有的都发生了变化,这样一来,我们可以玩出很多花样了。