Zabbix 监控Nginx服务器

要用zabbix对nginx进行监控,就要使zabbix server获取到客户机的数据,大体的获取路径如下:

Server<---(Agent)-->客户端key<---(脚本)-->nginx状态参数(通过开启nginx的status模块)

 所以我们的实施步骤如下:

        配置nginx的status模块;

        配置获取nginx状态参数脚本;

        配置客户端key

1, nginx编译的时候需要添加status模块,没有的可以重新编译添加

2,网站开启status

location /nginx-status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow 192.168.0.0;
deny all;
}

2,被监控端编写脚本,获取nginx信息

[root@www bin]# pwd ;cat nginx_status.sh 
/usr/local/zabbix/bin  #bash位置
#!/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
[root@www bin]# chmod +x nginx_status.sh  #需要执行权限

3,添加agent的key值来使server获取状态数据

[root@www zabbix_agentd.conf.d]# pwd ; cat nginx_miro.conf 
/usr/local/zabbix/etc/zabbix_agentd.conf.d
UserParameter=nginx.accepts,/usr/local/zabbix/bin/nginx_status.sh accepts
UserParameter=nginx.handled,/usr/local/zabbix/bin/nginx_status.sh handled
UserParameter=nginx.requests,/usr/local/zabbix/bin/nginx_status.sh requests
UserParameter=nginx.connections.active,/usr/local/zabbix/bin/nginx_status.sh active
UserParameter=nginx.connections.reading,/usr/local/zabbix/bin/nginx_status.sh reading
UserParameter=nginx.connections.writing,/usr/local/zabbix/bin/nginx_status.sh writing
UserParameter=nginx.connections.waiting,/usr/local/zabbix/bin/nginx_status.sh waiting

4,添加完之后测试server端是否可以收到数据, 在server端zabbix_get测试一下

[root@Zabbix ~]# zabbix_get -s 192.168.199.211 -k nginx.connections.active
1
[root@Zabbix ~]#

5,zabbix web端添加模版,我已经添加好了,可以下载附件

Zabbix 监控Nginx服务器_第1张图片

6,监控视图

Zabbix 监控Nginx服务器_第2张图片

没有看到添加附件的地方,有需要可以联系我, nginx的监控模版


你可能感兴趣的:(Zabbix 监控Nginx服务器)