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 @   不会跳舞的胖子  阅读(365)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示