Linux

ZABBIX监控Nginx性能

利用ZABBIX监控Nginx状态

1.查看Nginx版本,编译时有没有加入状态监控模块

[root@Nginx_wordpress ~]# nginx -V
nginx version: nginx/1.12.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --with-http_ssl_module --with-http_gzip_static_module --with-debug --with-http_stub_status_module --add-module=../ngx_cache_purge-2.3
[root@Nginx_wordpress ~]#

2.配置Nginx.conf

location  /nginx_status{
            stub_status on;
            allow 192.168.100.50;
            allow 127.0.0.1;
            deny all;
        }
curl http://127.0.0.1/nginx_status
[root@Nginx_wordpress ~]# curl http://127.0.0.1/nginx_status
Active connections: 1 
server accepts handled requests
 2478 2478 2509 
Reading: 0 Writing: 1 Waiting: 0 

注释:

Active connections: 对后端发起的活动连接数

Server accepts handled requests: Nginx 总共处理了 1 个连接,成功创建了 1 次握手(没有失败次数),总共处理了 1 个请求

Reading: Nginx 读取到客户端的 Header 信息数

Writing: Nginx 返回给客户端的 Header 信息数

Waiting: 开启 keep-alive 的情况下,这个值等于 active - ( reading + writing ), 意思是 Nginx 已经处理完成,正在等待下一次请求指令的驻留连接

在访问效率很高,请求很快被处理完毕的情况下,Waiting 数比较多是正常的。如果 reading + writing 数较多,则说明并发访问量很大,正在处理过程中

 

编写客户端脚本nginx_status.sh

#!/bin/bash
HOST="127.0.0.1"
PORT="80"
 
# 检测nginx进程是否存在
function ping {
    /sbin/pidof nginx | wc -l 
}
# 检测nginx性能
function active {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
# 执行function
$1

pidof 是Linux系统中用来查找正在运行进程的进程号(pid)的工具,功能类似pgrep和ps

例:
[root@Nginx_wordpress zabbix]# pidof mysqld
1492

将自定义的UserParameter加入配置文件,然后重启agentd

[root@Nginx_wordpress ~]# cat /etc/zabbix/zabbix_agentd.conf | grep nginx
UserParameter=nginx.status[*],/etc/zabbix/nginx-status.sh $1
[root@Nginx_wordpress ~]#

zabbix_get获取数据,如果没有zabbix_get,安装一下即可

yum list all |grep zabbix
yum install zabbix-get.x86_64
[root@i-uw33wt6i ~]# /usr/bin/zabbix_get  -s 192.168.100.10 -k 'nginx.status[accepts]'
2536
[root@i-uw33wt6i ~]# /usr/bin/zabbix_get  -s 192.168.100.10 -k 'nginx.status[ping]'
1
[root@i-uw33wt6i ~]# /usr/bin/zabbix_get  -s 192.168.100.10 -k 'system.cpu.load[all,avg15]'
0.000000
[root@i-uw33wt6i ~]# /usr/bin/zabbix_get  -s 192.168.100.10 -k 'system.hostname'
Nginx_wordpress
[root@i-uw33wt6i ~]# 

以上命令在zabbix server上执行。192.168.100.10为被监控端agentd机器

 

导入App Nginx模板

wget  https://www.huangfh.cn/download/zabbix_monitor_nginx.zip

给被监控主机添加Nginx监控项

完成

 

(1)

本文由 樱花博客 作者:樱花 发表,转载请注明来源!

关键词:,

热评文章

发表评论