zabbix–监控nginx:简单几步实现nginx-status实时监控

  • A+
所属分类:Zabbix

     zabbix监控nginx;nginx监控:非常简单的几部操作就可以让zabbix监控nginx,即时准确的获取nginx监控的状态和数据。

zabbix--监控nginx:简单几步实现nginx-status实时监控

  1.     nginx和php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有帮助。为了后续的zabbix监控,我们需要先了解nginx状态页是怎么回事。
      ⇒ 1.1 启用nginx status配置
    server {
    listen  *:80 default_server;
    server_name _;
    location /ngx_status
    {
    stub_status on;
    access_log off;
    #allow 127.0.0.1;
    #deny all;
    }
    }
    ⇒1.2 重启nginx
    根据你自己的环境重启你的nginx
    #service nginx restart
    ⇒1.3 打开status页面
    # curl http://127.0.0.1/ngx_status
    Active connections: 11921
    server accepts handled requests
    11989 11989 11991
    Reading: 0 Writing: 7 Waiting: 42
    ⇒1.4 nginx status详解
    active connections – 活跃的连接数量
    server accepts handled requests — 总共处理了11989个连接 , 成功创建                 11989次   握手, 总共处理了11991个请求
    reading — 读取客户端的连接数.
    writing — 响应数据到客户端的数量
    waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.
  • ##登录zabbix后端管理界面

##操作一:

 

##导入新的模板nginx-template.xml

这里提供一个测试过的,非常好用简单的nginx监控模板,如有需要直接下载就可以了

nginx-template.xml模板下载地址:https://pan.baidu.com/s/1ORbGR2f3MOx9hLr_wXotog

##操作二:

##创建nginx-params.conf文件位置/etc/zabbix/zabbix_agentd.d/目录下

vim /etc/zabbix/zabbix_agentd.d/nginx-params.conf ##增加如下内容

UserParameter=nginx[*],/etc/zabbix/zabbix_agentd/scripts/nginx-check.sh "$1"

##操作三:

##创建脚本文件nginx-check.sh,获取status页面信息。设置执行权限(例如755)

vim /etc/zabbix/zabbix_agentd/scripts/nginx-check.sh
          #!/bin/bash
          ##################################
          # Zabbix monitoring script
          #
          # nginx:
          # - anything available via nginx stub-status module
          #
          ##################################
          # Contact:
          # vincent.viallet@gmail.com
          # Zabbix requested parameter
          ZBX_REQ_DATA="$1"
          ZBX_REQ_DATA_URL="$2"
          # Nginx defaults
          NGINX_STATUS_DEFAULT_URL="http://192.168.230.54/basic_status"
          ##根据实际的状态页地址修改,最好使用局域网地址访问,外网拒绝访问。
          WGET_BIN="/usr/bin/wget"
          #
          # Error handling:
          # - need to be displayable in Zabbix (avoid NOT_SUPPORTED)
          # - items need to be of type "float" (allow negative + float)
          #
          ERROR_NO_ACCESS_FILE="-0.9900"
          ERROR_NO_ACCESS="-0.9901"
          ERROR_WRONG_PARAM="-0.9902"
          ERROR_DATA="-0.9903" # either can not connect / bad host / bad port
          # Handle host and port if non-default
          if [ ! -z "$ZBX_REQ_DATA_URL" ]; then
          URL="$ZBX_REQ_DATA_URL"
          else
          URL="$NGINX_STATUS_DEFAULT_URL"
          fi
          # save the nginx stats in a variable for future parsing
          NGINX_STATS=$($WGET_BIN -q $URL -O - 2> /dev/null)
          # error during retrieve
          if [ $? -ne 0 -o -z "$NGINX_STATS" ]; then
          echo $ERROR_DATA
          exit 1
          fi
          #
          # Extract data from nginx stats
          #
          case $ZBX_REQ_DATA in
          active_connections) echo "$NGINX_STATS" | head -1 | cut -f3 -d' ';;
          accepted_connections) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -          f2 -d' ';;
          handled_connections) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f3           -d' ';;
          handled_requests) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f4 -d'           ';;
          reading) echo "$NGINX_STATS" | tail -1 | cut -f2 -d' ';;
          writing) echo "$NGINX_STATS" | tail -1 | cut -f4 -d' ';;
          waiting) echo "$NGINX_STATS" | tail -1 | cut -f6 -d' ';;
          *) echo $ERROR_WRONG_PARAM; exit 1;;
          esac
          exit 0

简单的zabbix实时nginx监控部署完成了 ,下载去zabbix前台的web界面刷新看一下吧 。如有不懂或困惑的地方,可以留言评论。欢迎指正,定期更新热点文章

avatar

发表评论

您必须登录才能发表评论!