一、用户参数介绍
有时候当我们运行的监控项目在zabbix预定义的key中没有定义时,就需要我们手动编写zabbix用户参数的方法来监控我们要定义的项目。需要在zabbix agent端把相关获取参数的命令写入到配置文件中的UserParameter中,然后zabbix Server读取配置文件中的返回值通过处理前端的方式返回给用户。
定义方法如下:
在被监控端/etc/zabbix/zabbix_agentd.d/目录下,创建*.conf结尾的文件,在文件内写入获取命令即可。
定义的语法如下:
UserParameter=key,command
参数描述:
Key:唯一. 表示里面可以传递多个参数
Command:需要执行的脚本,key的[]里面的参数一一对应$1到$9,一共9个参数。$0表示脚本命令。
注意事项:
如果需要使用命令行里面出现$2这种变量,那么你要使用两个$$2,例如awk '{print $$2}',否则会获取不到数据。
二、监控内存参数
示例:在被监控服务器node2的/etc/zabbix/zabbix_agentd.d/目录下,创建一个os.conf文件,定义获取内存的值
1
2
3
| [iyunv@localhost ~]# vim /etc/zabbix/zabbix_agentd.d/os.conf
UserParameter=os.memory.used,free -m | awk '/^Mem/ {print $3}'
[iyunv@localhost ~]# /etc/init.d/zabbix-agent restart
|
Zabbix_server服务器创建新的监控项应用新定义的用户参数,这里使用刚刚定义的键值
定义出图:
可以在首页图形看到收集的相关数据了
客户端还可以监控内存的其他参数,如获取第二段总空间,获取第四段剩余空间
1
2
3
4
5
| [iyunv@localhost ~]# vim /etc/zabbix/zabbix_agentd.d/os.conf
UserParameter=os.memory.used,free -m | awk '/^Mem/ {print $3}' #内存已用空间
UserParameter=os.memory.free,free -m | awk '/^Mem/ {print $4}' #内存剩余空间
UserParameter=os.memory.total,free -m | awk '/^Mem/ {print $2}' #内存总空间
[iyunv@localhost ~]# /etc/init.d/zabbix-agent restart
|
在定义一个监控项监控内存剩余空间
定义饼状图一起显示内存已用空间和剩余空间
图形预览如下所示
三、监控nginx状态参数
安装nginx,需要安装epel源
1
| [iyunv@localhost ~]# yum install nginx -y
|
配置nginx,添加如下信息开启nginx状态页
1
2
3
4
5
6
7
| [iyunv@localhost ~]# vim /etc/nginx/conf.d/default.conf
32 location /status {
33 stub_status on;
34 allow 192.168.1.0/24;
35 deny all;
36 }
[iyunv@localhost ~]# /etc/init.d/nginx start
|
设置完成访问验证:
显示说明: Active connections: 2 # 当前所有处于打开状态的连接数; server accepts handled requests 2 2 2 (1) 已经接受过的连接数 (2) 已经处理过的连接数 (3) 已经处理过的请求数;在"保持连接"模式下,请求数量可能会多于连接数量; Reading: 0 Writing: 1 Waiting: 1 Reading:正处于接收请求状态的连接数; Writing: 请求已经接收完成,正处于处理请求或发送响应的过程中的连接数; Waiting:保持连接模式,且处于活动状态的连接数; 定义UserParameter用来获取指定参数的值:
1
2
3
4
5
6
7
8
9
| [iyunv@localhost ~]# vim /etc/zabbix/zabbix_agentd.d/nginx.conf
UserParameter=Nginx.active, /usr/bin/curl -s "http://$1:$2/status" | awk '/^Active/ {print $NF}' #监控active
UserParameter=Nginx.reading, /usr/bin/curl -s "http://$1:$2/status" | grep 'Reading' | cut -d" " -f2 #监控reading
UserParameter=Nginx.writing, /usr/bin/curl -s "http://$1:$2/status" | grep 'Writing' | cut -d" " -f4 #监控writing
UserParameter=Nginx.waiting, /usr/bin/curl -s "http://$1:$2/status" | grep 'Waiting' | cut -d" " -f6 #监控waiting
UserParameter=Nginx.accepted, /usr/bin/curl -s "http://$1:$2/status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$1}' #监控已接受连接
UserParameter=Nginx.handled, /usr/bin/curl -s "http://$1:$2/status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$2}' #监控处理过的连接
UserParameter=Nginx.requests, /usr/bin/curl -s "http://$1:$2/status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$3}' #监控已经处理过的请求数
[iyunv@localhost ~]# service zabbix-agent restart
|
|