Server<---(Agent)-->客户端key<---(脚本)-->nginx状态参数(通过开启nginx的status模块)
所以我们的实施步骤如下:
配置nginx的status模块;
配置获取nginx状态参数脚本;
配置客户端key
第一步:
所以根据以上步骤我们首先查看nginx是否编译的时候安装了status脚本,这个通过-V参数查看:
检查具备这个模块之后,需要在nginx的配置文件里面开启status模块,添加如下:
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow 192.168.38.127; ------server端IP
allow 193.167.101.101; -----本机测试IP
allow 192.168.38.160; -----×××
deny all;
}
添加完之后重新加载配置文件。
在这里可以测试下模块是否开启,比如我客户机IP为192.168.32.53,所以在IE输入http://192.168.32.53:80/nginx_status
如果正确可出现以下类似截图:
模块开启之后,我们要使用脚本获取nginx的status参数数据传送到server端
我这里使用的脚本如下:
vi /etc/zabbix/bin/nginx_status.sh
#!/bin/bash
BKUP_DATE=`date +%Y%m%d`
LOG="/var/log/zabbix/nginx_status.log"
HOST=`ifconfig eth0 | sed -n '/inet /{s/.*addr://;s/ .*//;p}'`
PORT="80"
function active {
/usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
/usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
/usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
/usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
/usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
/usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
/usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
# Run the requested function
$1
vim /etc/zabbix/zabbix_agentd.conf
UserParameter=nginx.accepts,/etc/zabbix/bin/nginx_status.sh accepts
UserParameter=nginx.handled,/etc/zabbix/bin/nginx_status.sh handled
UserParameter=nginx.requests,/etc/zabbix/bin/nginx_status.sh requests
UserParameter=nginx.connections.active,/etc/zabbix/bin/nginx_status.sh active
UserParameter=nginx.connections.reading,/etc/zabbix/bin/nginx_status.sh reading
UserParameter=nginx.connections.writing,/etc/zabbix/bin/nginx_status.sh writing
UserParameter=nginx.connections.waiting,/etc/zabbix/bin/nginx_status.sh waiting
添加完之后测试server端是否可以收到数据, 在server端zabbix_get测试一下
zabbix_get -s 192.168.32.53 -p10050 -k "nginx.connections.active"
1
如图,能收到数据,说明已经成功,这时就可以在zabbix的web端用添加模版做监控了