zabbix监控nginx

说明

nginx有个模块可以获取活动连接和当前状态等运行状态

需要nginx增添配置如下:(如果是编译安装需要添加编译参数--with-http_stub_status_module)

location /nginx_status {
   stub_status;
   allow 192.168.0.0/24; # 本机网段,方便访问
   allow 127.0.0.1;
   deny all;
 }

开启之后访问页面如下图所示:

zabbix监控nginx_第1张图片

参数说明 

Active connections: 当前处于活动状态的客户端连接数,包括连接等待空闲连接数。
accepts:统计总值,Nginx自启动后已经接受的客户端请求的总数。
handled:统计总值,Nginx自启动后已经处理完成的客户端请求的总数,通常等于accepts,除非有因
worker_connections限制等被拒绝的连接。
requests:统计总值,Nginx自启动后客户端发来的总的请求数。

Reading:当前状态,正在读取客户端请求报文首部的连接的连接数。
Writing:当前状态,正在向客户端发送响应报文过程中的连接数。
Waiting:当前状态,正在等待客户端发出请求的空闲连接数,开启 keep-alive的情况下,这个值等于 active - (reading+writing)

根据以上信息我们可以写脚本获取nginx的各种信息

zabbix agent配置

        获取nginx信息脚本

root@ubuntu18:/etc/zabbix/zabbix_agentd.d# cat nginx_status.sh 
#!/bin/bash
nginx_status_fun(){ #函数内容
 NGINX_PORT=$1 #端口,函数的第一个参数是脚本的第二个参数,即脚本的第二个参数是段端口号
 NGINX_COMMAND=$2 #命令,函数的第二个参数是脚本的第三个参数,即脚本的第三个参数是命令
 nginx_active(){ #获取nginx_active数量,以下相同,这是开启了nginx状态但是只能从本机看到
       /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
 }
 nginx_reading(){ #获取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}'
 }
 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

        修改zabbix agent配置,添加自定义监控项

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

然后重启
systemctl restart zabbix-agent

zabbix server配置

        模板文件

(上传的模板文件正在审核中,审核通过后我会放连接出来)

        导入模板

zabbix监控nginx_第2张图片

导入之后等待一会就可以看到数据了

zabbix监控nginx_第3张图片

 也可以创建聚合图形,更方便查看

     zabbix监控nginx_第4张图片   

你可能感兴趣的:(nginx,zabbix)