用过zabbix的人应该知道,一个zabbix服务器可能存在多个group(组),一个group下又可能存在多个host(主机),每个host下又可能有多个application(应用),每个application下有可能有多个item(监控项)。假设你要在grafana上看某个监控项的实时数据,就需要在grafana上配置该监控项的panel,那么这样一来可能会存在很多个监控项,比如我管的一台zabbix server上光一个host下监控项就有几百个,如果这几百个监控项每个都在grafana上配置一个panel,这绝对是一个非常折磨人的工作。还好grafana提供了一个template的功能,允许动态的修改panel中的参数,这样panel显示的内容也会随着参数的变化而变化。
要说明一点,这个template并不是指grafana提供了一个模板,而是提供了参数功能,就相当于一个宏变量,这个宏变量的值是和datasource级联的(参数背后其实就是一个查询语句,数据源内容发生变化,利用该参数获取到的数据就会级联发生变化)。
下面以zabbix数据源为例,讲解templete的使用。 先来看下template的使用和效果 这是我创建的一个panel,用来展示cpu五分钟平均负载的实时监控数据。
同样是获取一个监控项的数据,我现在换一种方式,红框中的四个值我全部替换成template,其实就是四个变量。
接下来我要怎么去查看cpu五分钟平均负载的监控数据呢?我把这些变量的值做一些设置,在该DashBoard最上方可以设置这些变量的值。我在group下拉框中选择zabbix agent,host下拉框选择192.168.12.1,application下拉框选择zabbix性能,item下拉框选择cpu五分钟平均负载。
这样panel显示的数据和一开始不使用template的效果是一模一样的。这些变量也可以用在title中使用。
这就是template的作用,我还可以将item这个变量的值设置成CPU十五分钟平均负载,那么对应的panel显示的数据就立马变成“cpu十五分钟平均负载”这个监控项。看吧,很便利,有了template我们能动态的修改panel显示的内容。
接下来讲解如何创建template(传送门)。