有时候,zabbix服务端的key不能满足我们自定义监控的需求,这时候,就需要通过命令来获取数据,并通过服务器端的zabbix_get命令来获取这些数据。
UserParameter就是这个功能的实现途径。
原理:Agent端配置文件里面添加UserParameter自定义项,重启Agent服务,然后在Server端可以通过zabbix_get命令,指定主机和key,获取相应的数据。
# zabbix_get -h
Zabbix get v2.0.21 (revision 67441) (19 April 2017)
usage: zabbix_get [-hV] -s <host name or IP> [-p <port>] [-I <IP address>] -k <key>
Options:
-s --host <host name or IP> Specify host name or IP address of a host
-p --port <port number> Specify port number of agent running on the host. Default is 10050
-I --source-address <IP address> Specify source IP address
-k --key <key of metric> Specify key of item to retrieve value for
-h --help Give this help
-V --version Display version number
Example: zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"
获取一个数据的格式:
UserParameter=<key>,<command1; command2...>
实例:agent添加获取剩余内存的值的参数,Server端添加这项的监控。
1、Agent端编辑zabbix_agentd.conf,可以在最下面添加UserParameter:
UserParameter=memory.free,/usr/bin/free| awk '/^Mem:/ {print $4}'
# service zabbix-agent restart
2、Server端用zabbix_get获取数据:
# zabbix_get -s 192.168.75.77 -k memory.free
299680
可以传递参数的key定义:
如/proc/meminfo中有很多内存的参数,我们要获取内存总数、剩余、Buffers、Cached的值,不需要定义4个key,可以在一个key里面引用参数来定义。
格式:
UserParameter=<key>[*],<command> // [*]表示多个参数,Server端获取数值可以用逗号隔开多个参数
例子:
通过cat /proc/cpuinfo中的数据,传递参数来获取四个不同的值:MemTotal, MemFree, Buffers, Cached
1、agent端,编辑配置文件,添加UserParameter:
UserParameter=memory.usage[*],/bin/cat /proc/meminfo | awk '/^$1:/ {print $$2}'
# service zabbix-agent restart
注:一个$表示引用[*]中的第N个参数,而两个$是awk里面打印第N段时候用的,理解用法即可。
2、Server端用zabbix_get获取
[root@Lius ~]# zabbix_get -s 192.168.75.77 -k memory.usage[MemTotal]
1004348
[root@Lius ~]# zabbix_get -s 192.168.75.77 -k memory.usage[MemFree]
308216
[root@Lius ~]# zabbix_get -s 192.168.75.77 -k memory.usage[Buffers]
39208
[root@Lius ~]# zabbix_get -s 192.168.75.77 -k memory.usage[Cached]
90944
3、zabbix监控中,key里面直接输入memory.usage[MemTotal]来定义item获取数据的方法。
发表回复
要发表评论,您必须先登录。