zabbix 监控nginx

对Nginx状态页监控,需要nginx加载模块 --with-http_stub_status_module

1. 配置文件 nginx.conf

         location /nginx_status {
            stub_status;
            access_log off;
         }

2. cd /etc/zabbix/zabbix_agentd.d/

]# cat nginx_status.sh
#!/bin/bash

nginx_status_fun(){
        NGINX_PORT=$1
        NGINX_COMMAND=$2

        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}'
                }
        nginx_status_page(){
                /usr/bin/curl -i  "http://127.0.0.1:"$NGINX_PORT"/nginx_status"  2>/dev/null | awk NR==1 | awk '{print $2}'
                }

         case $NGINX_COMMAND in
                 active)
                         nginx_active;
                         ;;
                 reading)
                         nginx_reading;
                         ;;
                 writing)
                         nginx_writing;
                         ;;
                 waiting)
                         nginx_waiting;
                         ;;
                 accepts)
                         nginx_accepts;
                         ;;
                 handled)
                         nginx_handled;
                         ;;
                 requests)
                         nginx_requests;
                         ;;
                 status)
                         nginx_status_page;
                 esac
}


main() {
        case $1 in
                nginx_status)
                        nginx_status_fun $2 $3;
                        ;;
                *)
                        echo $"Usage: $0 {nginx_status key}"
                esac
}

main $1 $2 $3

3. 配置/etc/zabbix/zabbix_agent2.conf

UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh "$1" "$2" "$3"

4. 测试能够获取到数据

# ./nginx_status.sh  nginx_status 80 active
4

5. 配置监控模板

 

posted @ 2022-08-01 14:34  不会跳舞的胖子  阅读(370)  评论(0)    收藏  举报