首页 > 代码库 > zabbix 使用进阶(五)
zabbix 使用进阶(五)
zabbix 使用进阶(五)
===============================================================================
概述:
===============================================================================
回顾:
----------------------------------------------------------------------------------------
自定义key:
---
★定义:
在zabbix agent端的配置文件中由用户通过UserParameter指令定义用户自定义参数;
★格式:
UserParamter=<key>,<command>
UserParamter=<key[*]>,<command> $1...$9
注意:
类似awk命令自带$1...$9,需要改写为$$1, $$2, ...$$9;
演示1:
在agent端自定义key,并通过传递参数来获取相应的数据。
-------------------------------------------------------------------------------
1.自定义key不带参数
1)首先编辑agent端(CentOS 7.2-2)的配置文件/etc/zabbix/zabbix_agentd.conf在UserParameter中定义获取空余内存的key,如下:
2)重启agent端的zabbix-agent服务,在zabbix-server端使用get可以正常获取数据,说明我们在agent端自定义的key起作用了;
3)现在,我们就可以在zabbix-web端使用在agent端自定义的key来监控CentOS 7.2-2主机上的空闲内存大小了,如下:
自定义key可传递参数:
1.上面我们定义的key不可传递参数,这样的话使用就不太灵活,比如在同一个监控项中有不同的指标(内存中有空闲内存,可用内存,总内存),所以能够传递参数的话,就可灵活的获取不同的指标。
如下,还是编辑agent的配置文件,自定义有关内存相关的key,并且可以传递参数;
2.重启agent端的zabbix-agent服务,在zabbix-server端使用get可以正常获取传递不同参数下的对应的数据,如下:
演示2:
在agent端自定义可传递参数的key,来获取nginx的状态信息:
-------------------------------------------------------------------------------
1.首先在agent端主机,编辑其nginx的配置文件/etc/nginx/conf.d/default.conf,添加能够获取status的locations,如下:
获取nginx状态信息如下:
[root@centos7 ~]# curl http://192.168.1.19/ngxstatus Active connections: 1 server accepts handled requests 6 6 4 Reading: 0 Writing: 1 Waiting: 0 [root@centos7 ~]# curl -s http://localhost/ngxstatus |awk ‘/^Active/{print $3}‘ //获取Active信息 1 [root@centos7 ~]# curl -s http://localhost/ngxstatus |awk ‘NR==3{print $1}‘ //获取accepts信息 20
2.如上,我们要想监控agent端nginx服务的一个状态信息,很容易实现,只需要在其agent的配置文件中定义key即可实现;但是如果想要监控nginx服务的所有状态信息(上面的7项)就需要在key中传递参数了,我们这里可以通过定义脚本传递参数来实现,如下:
[root@centos7 ~]# vim /usr/bin/ngxstatus.sh #!/bin/bash #description:获取nginx的状态信息 # host=‘127.0.0.1‘ port=‘80‘ statusurl=‘/ngxstatus‘ active() { curl -s http://${host}:${port}${statusurl} | awk ‘/^Active/{print $3}‘ } accepts() { curl -s http://${host}:${port}${statusurl} | awk ‘NR==3{print $1}‘ } handled() { curl -s http://${host}:${port}${statusurl} | awk ‘NR==3{print $2}‘ } requests() { curl -s http://${host}:${port}${statusurl} | awk ‘NR==3{print $3}‘ } reading() { curl -s http://${host}:${port}${statusurl} | awk ‘NR==4{print $2}‘ } writing() { curl -s http://${host}:${port}${statusurl} | awk ‘NR==4{print $4}‘ } waiting() { curl -s http://${host}:${port}${statusurl} | awk ‘NR==4{print $6}‘ } $1 //传递的参数 [root@centos7 ~]# chmod +x /usr/bin/ngxstatus.sh
脚本测试如下:
[root@centos7 ~]# ngxstatus.sh active 1 [root@centos7 ~]# ngxstatus.sh accepts 27 [root@centos7 ~]# ngxstatus.sh handled 28 [root@centos7 ~]# ngxstatus.sh requests 27 [root@centos7 ~]# ngxstatus.sh reading 0 [root@centos7 ~]# ngxstatus.sh writing 1 [root@centos7 ~]# ngxstatus.sh waiting 0
3.如上,脚本已经定义好了,现在我们去定义zabbix-agent的配置文件,自定义key来调用脚本来获取nginx的状态信息,如下:
4.重启agent端的zabbix-agent服务,在zabbix-server端使用get可以正常获取传递不同参数下的对应的数据,如下:
zabbix 使用进阶(五)