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 ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意

982 0 2020-09-01


分享:
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的运维平台
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。

现在时间 2024-04-19

今日天气
站点统计
  • 文章总数:240篇
  • 分类总数:29个
  • 评论总数:10条
  • 本站总访问量 213937 次

@奥奥

@Wong arrhenius 牛比

@MakerFace 厉害了!