Zabbix 监控 Nginx 的连接状态

文章
林里克斯

配置 Zabbix 监控 Nginx 的连接状态

Zabbix 监控 Nginx 的连接状态


实验平台:CentOS 7.6.1810

zabbix-Server 版本:5.0.2

zabbix-agent 版本:5.0.2



一、安装环境


1.查看 Nginx 已编译模块

$ nginx  -V
nginx version: openresty/1.17.8.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx//nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.1 --add-module=../echo-nginx-module-0.62 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.32 --add-module=../ngx_lua-0.10.17 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --add-module=../ngx_stream_lua-0.0.8 --with-ld-opt=-Wl,-rpath,/usr/local/nginx/luajit/lib --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/run/nginx.pid --error-log-path=/usr/local/nginx/logs/error.log --http-log-path=/usr/local/nginx/logs/access.log --user=nginx --group=nginx --with-pcre --with-stream --with-threads --with-file-aio --with-http_v2_module --with-http_ssl_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module
#Nginx性能监控需要通过ngx_http_stub_status_module模块来收集指标

2.如果没有可以参考这篇文章,在不改变已编译模块的情况下增加新模块

Linux 下编译安装 Nginx

3.修改配置文件添加性能监控模块

$ vim /usr/local/nginx/conf.d/ngx_status.conf

server {
    location /ngx_status {
        stub_status on;
        allow 127.0.0.1;
        access_log off;
        deny all;
    }
}

4.重启 Nginx

$ nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
$ nginx -s reload

5.访问测试

$ curl http://127.0.0.1/ngx_status
Active connections: 7 
server accepts handled requests
 8836 8836 134105 
Reading: 0 Writing: 1 Waiting: 6

 - Active connections:Nginx 当前活动客户端连接的数量,包括正在等待的连接
 - accepts:Nginx 已经接受客户端的连接总数量 
 - handled:Nginx已经处理客户端的连接总数量
 - requests:客户端发送的请求的总数量
 - Reading:Nginx 服务器当前正在读取客户端请求头的数量
 - Writing:Nginx 服务器当前正在写响应信息的数量
 - Waiting:当前有多少客户端在等待Nginx服务器响应

二、配置 Zabbix 脚本


1.编写监控 Nginx 的脚本

$ vim /usr/local/zabbix-agent/bash/ngx_status.sh

#!/bin/bash
HOST='127.0.0.1'
PORT='80'

#Nginx进程监控,进程存在值为1,进程停止值为0
function ping {
        /sbin/pidof nginx | wc -l
}

#Nginx当前活动客户端连接的数量,包括正在等待的连接
function active {
        /bin/curl "http://${HOST}:${PORT}/ngx_status" 2>/dev/null | grep 'Active' | awk '{print $NF}'
}

#Nginx服务器当前正在读取客户端请求头的数量
function reading {
        /bin/curl "http://${HOST}:${PORT}/ngx_status" 2>/dev/null | grep 'Reading' | awk '{print $2}'
}

#Nginx服务器当前正在写响应信息的数量
function writing {
        /bin/curl "http://${HOST}:${PORT}/ngx_status" 2>/dev/null | grep 'Writing' | awk '{print $4}'
}

#当前有多少客户端在等待服务器响应
function waiting {
        /bin/curl "http://${HOST}:${PORT}/ngx_status" 2>/dev/null | grep 'Waiting' | awk '{print $6}'
}

#Nginx已经接受客户端的连接总数量
function accepts {
        /bin/curl "http://${HOST}:${PORT}/ngx_status" 2>/dev/null | awk NR==3 | awk '{print $1}'
}

#Nginx已经处理客户端的连接总数量
function handled {
        /bin/curl "http://${HOST}:${PORT}/ngx_status" 2>/dev/null | awk NR==3 | awk '{print $2}'
}

#客户端发送的请求的总数量
function requests {
        /bin/curl "http://${HOST}:${PORT}/ngx_status" 2>/dev/null | awk NR==3 | awk '{print $3}'
}

$1

2.赋权

$ chown -R zabbix. /usr/local/zabbix-agent/
$ chmod u+x /usr/local/zabbix-agent/bash/ngx_status.sh

3.编辑 zabbix—agent 配置文件

$ vim /usr/local/zabbix-agent/etc/zabbix_agentd.conf

UnsafeUserParameters=1
UserParameter=ngx.status[*],/usr/local/zabbix-agent/bash/ngx_status.sh $1

4.重启 zabbix_agentd

$ /etc/init.d/zabbix_agentd restart

三、配置 Zabbix-Server


1.创建应用集

配置 --> 主机 --> 相应 Nginx 主机 --> 应用集 --> 创建应用集

Zabbix 监控 Nginx 的连接状态

2.创建监控项

配置 --> 主机 --> 相应 Nginx 主机 --> 监控项 --> 创建监控项

Zabbix 监控 Nginx 的连接状态

全部监控项

Zabbix 监控 Nginx 的连接状态

3.查看最新数据

Zabbix 监控 Nginx 的连接状态

4.创建触发器

配置 --> 主机 --> 相应 Nginx 主机 --> 触发器 --> 创建触发器

Zabbix 监控 Nginx 的连接状态

5.创建图像

配置 --> 主机 --> 相应 Nginx 主机 --> 图形 --> 创建图形

Zabbix 监控 Nginx 的连接状态


Over~

版权协议须知!

本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意

19 0 2020-09-01


分享:
使用 Nginx 代理做个下载站

类似许多镜像下载站和 ftp 一样,有时候需要去找一个包何...

阅读全文
CentOS7 开启 IPv6

随着 IPv4 的地址用尽,IPv6 的使用趋势愈来愈明显...

阅读全文
Linux 更新 gcc 版本

有些软件需要新版本的 gcc 环境支撑,CentOS 默认...

阅读全文
tar 解压报错 resolve failed

解压 tar 包报错 resolve failed 的解决...

阅读全文
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif
博主卡片
林里克斯 博主大人
一个致力于Linux的运维平台
辉煌事迹
耀
搭建这个平台,只为分享及记载自己所遇之事和难题。

现在时间 2020-09-28 11:22:02

  • 默认
  • 护眼
  • 夜晚
  • 壁纸
  • 默认