要用nginx对zabbix进行监控,就要使zabbix server获取到客户机的数据,大体的获取路径如下:
      Server<---(Agent)-->客户端key<---(脚本)-->nginx状态参数(通过开启nginx的status模块)
 所以我们的实施步骤如下:
        配置nginx的status模块;
        配置获取nginx状态参数脚本;
        配置客户端key
第一步:
       所以根据以上步骤我们首先查看nginx是否编译的时候安装了status脚本,这个通过-V参数查看:
    
 
   带了这个编译参数即表示已经有status模块。
检查具备这个模块之后,需要在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
第三步:通过添加agent的key值来使server获取状态数据,添加如下:
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端用添加模版做监控了