title: zabbix监控nginx #标题tags: zabbix,2020/4/6 #标签
categories: zabbix # 分类
date: 2020-04-06
记录下zabbix监控nginx性能。
自行安装zabbix、nginx、以及zabbix-agentd。
开启nginx状态页
添加location规则
确保nginx在安装时有--with-http_stub_status_module
配置项,否则添加下面的location规则后会报错。
location /ngx_status {
stub_status on;
access_log off;
# allow 127.0.0.1;
# deny all;
}
[root@kafka03 conf]# nginx -s reload # 重启nginx
访问status页面
[root@kafka03 conf]# curl 127.0.0.1/ngx_status # 访问状态页
Active connections: 3 # 活跃的连接数量
server accepts handled requests #总共处理了14个连接 , 成功创建14次握手, 总共处理了20个请求
14 14 20
Reading: 0 Writing: 1 Waiting: 0
# Reading:读取客户端的连接数
# writing:响应数据到客户端的数量
# waiting:开启keep-alive的情况下,这个值等于active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。
配置nginx客户端的zabbix_agent
[root@kafka03 zabbix]# egrep -v '^#|^$' etc/zabbix_agentd.conf # 修改zabbix_agent文件
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=192.168.20.8
ServerActive=192.168.20.8
Hostname=client02
HostMetadata= linux client
# 主要是以下几个配置
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
UnsafeUserParameters=1
UserParameter=nginx.info[*],/usr/local/zabbix/scripts/nginx.sh $1
在zabbix_agent端编写采集nginx数据的脚本
[root@kafka03 zabbix]# mkdir /usr/local/zabbix/scripts
[root@kafka03 zabbix]# cd /usr/local/zabbix/scripts
[root@kafka03 scripts]# cat nginx.sh # 采集数据的脚本如下
#!/bin/bash
# __Author__: Ray
# __Email__: 916551516@qq.com
# __DateTime__: 2020-04-06
Host="192.168.20.7"
Port=80
Curl="http://${Host}:${Port}"
case $1 in
# 检测nginx进程是否存在
ping)
RS=`pidof nginx | wc -l`
echo ${RS}
;;
# 获取nginx首页状态码
index)
RS=`curl -s -I ${Curl}/index.html | awk '$1== "HTTP/1.1" {print $2}'`
echo ${RS}
;;
# 获取活跃的连接数量
active)
RS=`curl -s ${Curl}/ngx_status | awk '$1 =="Active" {print $3}'`
echo ${RS}
;;
# 读取客户端的连接数
reading)
RS=`curl -s ${Curl}/ngx_status | grep Reading | awk '{print $2}'`
echo ${RS}
;;
# 获取响应数据到客户端的数量
writing)
RS=`curl -s ${Curl}/ngx_status | grep Writing | awk '{print $4}'`
echo ${RS}
;;
# 获取Nginx已经处理完正在等候下一次请求指令的驻留连接。
waiting)
RS=`curl -s ${Curl}/ngx_status | grep Waiting | awk '{print $6}'`
echo ${RS}
;;
# 获取共处理了多少个连接
accepts)
RS=`curl -s ${Curl}/ngx_status | awk 'NR==3 {print $1}'`
echo ${RS}
;;
# 获取成功建立握手的数量
handled)
RS=`curl -s ${Curl}/ngx_status | awk 'NR==3 {print $2}'`
echo ${RS}
;;
# 获取总共处理的请求数
requests)
RS=`curl -s ${Curl}/ngx_status | awk 'NR==3 {print $3}'`
echo ${RS}
;;
esac
好吧,写到这里不想写了,因为发现后面的所有操作,不但繁琐,而且我之前也写过类似的,就不再重复造轮子了,如果有需要的话,后面的步骤请参考:Zabbix监控Tomcat及Nginx。