美文网首页
Zabbix 监控Nginx_Status模块

Zabbix 监控Nginx_Status模块

作者: DB哥 | 来源:发表于2020-06-23 13:46 被阅读0次

    Zabbix 监控Nginx服务需要通过Nginx Status模块进行监控。

    一、 打开Nginx配置文件 /etc/nginx/conf.d/default.conf在Server标签内添加以下内容:

    [root@centos7 ~]# vim /etc/nginx/conf.d/default.conf
    location /nginx_status {
          stub_status on;
          allow 127.0.0.1; 
          deny all;
    }
    
    ###重启Nginx服务
    [root@centos7 ~]# systemctl restart nginx
    
    ###获取Nginx_status状态
    [root@centos7 scripts]# curl http://127.0.0.1:80/nginx_status
    Active connections: 1 
    server accepts handled requests
     10 10 10 
    Reading: 0 Writing: 1 Waiting: 0
    
    状态信息解释:
    Active connections :表示 Nginx 正在处理的活动连接数有多少个
    server :表示 Nginx 启动到现在共处理了多少个连接
    accepts :表示 Nginx 启动到现在共成功创建了多少次握手
    handled requests : 表示总共处理了多少次请求
    Reading :表示 Nginx 读取到客户端的 Header 信息数
    Writing :表示 Nginx 返回给客户端的 Header 信息数
    Waiting :表示 Nginx 已经处理完正在等候下一次请求指令的驻留连接数
    在开启 keep-alive 的情况下,Waiting = Active connections - (Reading + Writing)
    

    二、编写监控Nginx_statsu模块脚本

    [root@centos7 scripts]# vim /etc/zabbix/scripts/nginx_status.sh
    [root@centos7 scripts]# cat /etc/zabbix/scripts/nginx_status.sh 
    #!/bin/sh 
    #script to fetch nginx status for tribily monitoring systems
    
    HOST=127.0.0.1
    PORT="80"
    
    # Functions to return nginx status
    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@centos7 scripts]# chmod +x nginx_status.sh
    
    ###测试脚本
    [root@centos7 scripts]# /bin/sh /etc/zabbix/scripts/nginx_status.sh active 
    1
    

    三、配置zabbix客户端配置文件/etc/zabbix/zabbix_agentd.conf自定义脚本健值

    [root@centos7 zabbix]# vim /etc/zabbix/zabbix_agentd.conf
    EnableRemoteCommands=1    ###允许zabbix_get命令远程执行健值测试,1允许,0禁止
    Server=10.10.10.10           ###填写zabbix服务器IP或DNS(默认被动模式)
    ServerActive=10.10.10.10      ###填写zabbix服务器IP或DNS(主动模式)
    Hostname=centos7           ###填写zabbix客户端计算机名称
    UnsafeUserParameters=1     ###允许执行自定义健值,1允许,0禁止
    UserParameter=nginx.status[*],/etc/zabbix/scripts/nginx_status.sh $1  ###自定义健值
    
    ###重启zabbix-agent客户端
    [root@centos7 zabbix]# systemctl restart zabbix-agent 
    

    四、zabbix 服务端使用zabbix_get测试获取数据

    [root@zabbix ~]# zabbix_get -s 10.10.10.20 -k nginx.status[active]
    1
    

    五、zabbix 服务端配置监控Nginx (此处省略,基本都是图形操作)

    相关文章

      网友评论

          本文标题:Zabbix 监控Nginx_Status模块

          本文链接:https://www.haomeiwen.com/subject/qttnzhtx.html