zabbix_nginx监控

 

实验环境

[root@linux-node1 ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 

[root@linux-node1 ~]# cat /etc/hosts
192.168.56.11 linux-node1 linux-node1.example.com
192.168.56.12 linux-node2 linux-node2.example.com

[root@linux-node1 ~]# ip a | grep .11
    inet 192.168.56.11/24 brd 192.168.56.255 scope global eth0
    inet 172.16.0.11/24 brd 172.16.0.255 scope global eth1
linux-node1
[root@linux-node2 ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 

[root@linux-node2 ~]# cat /etc/hosts
192.168.56.11 linux-node1 linux-node1.example.com
192.168.56.12 linux-node2 linux-node2.example.com

[root@linux-node2 ~]# ip a | grep .12
    inet 192.168.56.12/24 brd 192.168.56.255 scope global eth0
    inet 172.16.0.12/24 brd 172.16.0.255 scope global eth1
linux-node2

在include中创建新的conf文件

[root@linux-node2 ~]# ll /etc/zabbix/
total 12
-rw-r--r-- 1 root root 10353 Aug 27 15:06 zabbix_agentd.conf
drwxr-xr-x 2 root root    61 Aug 27 15:20 zabbix_agentd.d

[root@linux-node2 ~]# grep "^[a-Z]" /etc/zabbix/zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.56.11
ServerActive=127.0.0.1
Hostname=linux-node2.example.com
Include=/etc/zabbix/zabbix_agentd.d/
UnsafeUserParameters=1

 创建的conf文件

[root@linux-node2 zabbix_agentd.d]# pwd
/etc/zabbix/zabbix_agentd.d
    
[root@linux-node2 zabbix_agentd.d]# cat zabbix_nginx.conf 
UserParameter=nginx-alive,curl --head -s http://127.0.0.1/ | grep "200 OK" | wc -l

 在监控服务器上安装zabbix_get测试是否能获取到值

[root@linux-node1 ~]# yum -y install zabbix-get

[root@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k nginx-alive
1

 在监控的主机中创建监控项

 

 描述

 

 是否成功

 分割线----------------------------------------------------------------------------------------------------------------

在linux-node2上传我们自己写好的脚本

[root@linux-node2 zabbix]# pwd
/etc/zabbix
[root@linux-node2 zabbix]# ll
-rwxr-xr-x 1 zabbix zabbix  1288 Oct 29 17:10 zabbix_nginx_plugin.sh      加上对应的权限

开启zabbix-agent上UnsafeUserParameters=1

[root@linux-node2 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.56.11
ServerActive=127.0.0.1
Hostname=linux-node2.example.com
Include=/etc/zabbix/zabbix_agentd.d/
UnsafeUserParameters=1
UnsafeUserParameters

脚本的内容

[root@linux-node2 zabbix]# pwd
/etc/zabbix

[root@linux-node2 zabbix]# cat zabbix_nginx_plugin.sh 
#!/bin/bash
NGINX_PORT=$1
nginx_active(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
        }
nginx_reading(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
       }
nginx_writing(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
       }
nginx_waiting(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
       }
nginx_accepts(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
       }
nginx_handled(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
       }
nginx_requests(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
       }

main(){
    case $2 in
        active)
            nginx_active;
            ;;
        reading)
            nginx_reading;
            ;;
        writing)
            nginx_writing;
            ;;
        waiting)
            nginx_waiting;
            ;;
        accepts)
            nginx_accepts;
            ;;
        handled)
            nginx_handled;
            ;;
        requests)
            nginx_requests;
        esac 
}

main $1 $2
Nginx Status

在linux-node1上

[root@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k nginx-status[80,accepts]
52
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k nginx-status[80,reading]
0
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k nginx-status[80,writing]
1
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k nginx-status[80,waiting]
0
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k nginx-status[80,active]
1
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k nginx-status[80,handled]
412
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k nginx-status[80,requests]
417
检查

 

链接到监控的主机上

链接上就可以看到主机上的监控项

最后的图形

 这样的图形数据差别太大,我们把值大的放到一起

Nginx status1

Nginx status2

创建聚合图形

创建3*3

如果需要什么表格,可以让开发写一个URL

创建幻灯片

 

posted @ 2017-11-29 00:31  reborn枪  阅读(100)  评论(0)    收藏  举报