VPS测评 VPS推荐 VPS优惠
Linux运维

zabbix自定义监控nginx

zabbix5.0可以不需要写脚本,使用自带的模板监控nginx。


配置nginx

配置nginx状态页

    location ~ /basic_status {
    stub_status;
    }

重新加载配置

nginx -s reload

测试是否能访问状态页

curl 127.0.0.1/basic_status

输出信息含义

Active connections: 当前处于活动状态的客户端连接数,包括连接等待空闲连接数。

accepts:统计总值,Nginx自启动后已经接受的客户端请求的总数。

handled:统计总值,Nginx自启动后已经处理完成的客户端请求的总数,通常等于accepts,除非有因worker_connections限制等被拒绝的连接。

requests:统计总值,Nginx自启动后客户端发来的总的请求数。

Reading:当前状态,正在读取客户端请求报文首部的连接的连接数。

Writing:当前状态,正在向客户端发送响应报文过程中的连接数。

Waiting:当前状态,正在等待客户端发出请求的空闲连接数,开启 keep-alive的情况下,这个值等于 active –(reading+writing)。


模板配置

zabbix5.0 可以使用自带的模板 Template App Nginx by Zabbix agent ,关联后直接用。

旧版本需要自己写脚本,制作模板。


nginx监控脚本

创建脚本/etc/zabbix/zabbix_agentd.conf.d/scripts/nginx_status.sh

#!/bin/bash 
#Author: frogvps.com
#curl命令将下载文件输出到stdout 1 将进度信息输出到stderr 2 不显示进度所以 2>/dev/null

nginx_status_fun(){ 
    NGINX_PORT=$1 
    NGINX_COMMAND=$2 
    nginx_active(){ 
        curl "http://127.0.0.1:"$NGINX_PORT"/basic_status" 2>/dev/null| grep 'Active' | awk '{print $NF}'
        }
    nginx_reading(){
        curl "http://127.0.0.1:"$NGINX_PORT"/basic_status" 2>/dev/null| grep 'Reading' | awk '{print $2}'
       }
    nginx_writing(){
       curl "http://127.0.0.1:"$NGINX_PORT"/basic_status" 2>/dev/null| grep 'Writing' | awk '{print $4}'
       }
    nginx_waiting(){
        curl "http://127.0.0.1:"$NGINX_PORT"/basic_status" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
       }
    nginx_accepts(){
        curl "http://127.0.0.1:"$NGINX_PORT"/basic_status" 2>/dev/null| awk 'NR==3{print $1}'
       }
    nginx_handled(){
        curl "http://127.0.0.1:"$NGINX_PORT"/basic_status" 2>/dev/null| awk 'NR==3{print $2}'
       }
    nginx_requests(){
        curl "http://127.0.0.1:"$NGINX_PORT"/basic_status" 2>/dev/null| awk 'NR==3{print $3}'
       }
      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;
        esac 
}

main(){ 
    case $1 in 
        nginx_status) #当输入nginx_status就调用nginx_status_fun,并传递第二和第三个参数
            nginx_status_fun $2 $3;
            ;;
        *) 
            echo "Usage: $0 {nginx_status key}"
    esac 
}

main $1 $2 $3

添加执行权限

chmod +x nginx_status.sh

zabbix agent添加自定义监控项

编辑/etc/zabbix/zabbix_agentd.conf.d/all.conf

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

重启zabbix agent

systemctl restart zabbix-agent.service 

zabbix server执行命令检测能否获取到监控项数据

zabbix_get -s 45.145.74.47 -p 10050 -k "nginx_status["nginx_status",80,"active"]"

模板制作

制作好对应的模板,关联上主机就可以直接用了。

80和443端口可以使用zabbix自带的键值net.tcp.listen[port]来进行检测,正常返回1,否则返回0。

设置监控项
监控80端口
制作好的模板
监控数据
未经允许不得转载:青蛙主机 » zabbix自定义监控nginx

VPS相关常用工具

PING测试工具自用毛子接码站