实验环境说明:

2台虚拟机

VM01角色:Zabbix server ubuntu14.04系统,ip192.168.1.136      

VM02角色:zabbix agentubuntu14.04系统,IP192.168.1.135

 

 

一、什么是item

    Items是从主机里面获取的所有数据。通常情况下我叫itme为监控项,例如我们ttlsa云服务器加入了zabbix监控,我需要监控它的cpu负载,那么实现这个方法的东西就叫item。接下来提到的item都翻译为监控项。

    item由key+参数组成,item详细介绍请看下回分析。

    监控项中需要获取cpu信息,则需要一个对应的监控key:system.cpu.load。如果是获取网卡流量,那么获取网卡这个监控项需要key:net.if.in或者net.if.out。

    一般情况下key要与参数结合起来使用,例如获取5分钟的负载情况:system.cpu.load[avg5],avg5是对应的参数,如果是1分钟则使用avg1,如果是15分钟则使用avg15(有人会问,如果是2分钟是不是avg2,-!-,没有这种说法)。网卡流量net.if.in[eth0],使用eth0作为参数可以获取到eth0网卡的进入流量,同样看一看换成eth1,eth2等等。

二、用户自定义参数

Key的两种的格式

1key

2key[接受参数]

#Key可以带参数,该参数为一个数组列表,可以同时传递多个参数

编辑agentd.conf配置文件

root@zabbix-proxy-01:~# vim /usr/local/zabbix/etc/zabbix_agentd.conf

Key自定义语法格式(设置其中一种格式即可)

UserParameter=key,command

UserParameter=key[*] command $1 $2 $3 …..     #$1 $2代表位置参数12,如果定义的字符中出现$后面接数字,需要使用$$,例如:awk ‘{print $$2}’


自定义key中对特殊字符的处理

UnsafeUserParameters=0       #默认是无法对特殊字符处理,因此要设置为1

 

了解一些基本的东西之后,下面来玩个例子

三、自定义key例子

192.168.1.135机器上做如下配置

1、打开agentd配置文件

root@testweb01:~# vim /etc/zabbix/zabbix_agentd.conf

UserParameter=get.os.type, head -1 /etc/issue    # -1是数字1,不是字母l

2、重启agentd

DCA72DB8FF65448682C7A61FF96C8CFA

 

3、在192.168.1.136机器上运行测试命令,查看key

3.1、如没有安装则要安装zabbix-get

Zabbix-get下载地址:http://repo.zabbix.com/zabbix/2.2/ubuntu/pool/main/z/zabbix/

71CFB3ED210E4572B49C3C72F419966C

3.2、安装完成后继续查看key

3.2.1、用zabbix_get命令,查看刚刚自定义的key

root@zabbix-proxy-01:/home/toby# zabbix_get -s 192.168.1.135 -p 10050 -k  get.os.type

DD65382FAC134FF1A85C5DD9F1771ECF

结果:结果是OK

注意:get.os.type是自己定义的名称

 

3.2.2、再做一次测试,回到135的机器上进行再次编辑agentd配置文件

改成命令ifconfig,保存退出后,重启agentd服务

85DF096B268A411F9107F844F5CE49BA

6E423CE4DC234D4184DEADAEAC42D425

 

 

3.2.3、接着回到136的机器,再次查看

6781D5D0A4524693A96242DEE3D17A4F

结果:也就是说,执行了get.os.type 等价于执行了ifconfig

 

 

四、子配置文件的配置

4.1、为了便于维护和分类管理,agentd.conf中的UserParameter的内容可以单独写一个配置文件。

编辑配置文件

root@testweb01:~# vim /etc/zabbix/zabbix_agentd.conf

8EA22EF6C7DB4EA9AF61315517EAC037

将红色箭头处的#号注释去掉

Include也就是zabbix_agentd.conf中部分内容的子配置文件路径

 

4.2、同时把UserParameter= 注释掉

581B8ADD2B8040F98AD5D9BE9A46A6EE

 

4.3/etc/zabbix/zabbix_agentd.conf.d/ 目录下的所有配置文件都会被当做子配置文件

1028F6BEBFFF4FF19E406C30F0E23828

目前没有子配置文件

 

4.4、创建子配置文件

root@testweb01:/etc/zabbix/zabbix_agentd.conf.d# vim get_os.type.conf

添加如下内容:

UserParameter=get.os.type,head -1 /etc/issue

BA1E4B9962CD4275B5CAE89D241BF7C1

这时候,完成了一个字配置文件

 

4.5、重启agentd服务

6E9286465F7D4DD99BD8DD8D23FFDF8F

 

4.5、在136机器上测试key

root@zabbix-proxy-01:~# zabbix_get -s 192.168.1.135 -k get.os.type

55342BA614C447BCAF44A2298C380D3E

结果:测试通过

 

4.6、也可以再用zabbix_agentd查看key是否被支持(在135机器上操作)

root@testweb01:/etc/zabbix/zabbix_agentd.conf.d# zabbix_agentd -p | grep get\.os

05BAEEDB32174694B502461B7095669F

结果:如果能看到key名称,且能获取到数据,说明自定义的key是正确的