安装了zabbix用来监测agent端的lnmp环境,先整理了一下配置nginx监测的步骤。
1.修改nginx配置文件
/etc/nginx/nginx.conf,可以新写一个server或者在旧的server里面新增一个localtion。保存之后重启nginx。
代码语言:javascript复制-
location /nginx_status { -
stub_status on; -
access_log off; -
allow 127.0.0.1; -
allow 192.168.*.*; -
#zabbix服务器的IP地址,一般是内网地址 -
deny all; -
} -
systemctl restart nginx
stub_status模块主要用于查看Nginx的一些状态信息,zabbix监测的就是status里面的一些基本数据。
使用allow可以运行该ip访问,用deny all 禁止其他机器访问地址,便于测试。我的zabbix分在两个机子上部署了,使用完毕可以把deny注释掉。
2.访问nginx_status
Activeconnections:对后端发起的活动连接数;
server accepts:处理的连接数;
handled:成功创建的握手次数;
requests:总共处理的请求数。
Reading:读取客户端的header数;
Writing: 返回给客户端的header数;
Waiting: 请求处理完成,正在等待下一请求指令的连接。
在访问效率很高,请求很快被处理完毕的情况下,Waiting 数比较多是正常的。如果 reading writing 数较多,则说明并发访问量很大,正在处理过程中
3.zabbix-agent配置文件开始自定义参数
代码语言:javascript复制-
vi /etc/zabbix/zabbix_agentd.conf -
Include=/etc/zabbix/zabbix_agentd.d/*.conf -
UnsafeUserParameters=1
4.新增脚本配置文件
agent配置文件中已经说明脚本存在于/etc/zabbix/zabbix_agentd.d/目录。
代码语言:javascript复制-
cd /etc/zabbix/zabbix_agentd.d/ -
vi nginx_status.conf -
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh $1
5.编写脚本
代码语言:javascript复制-
#!/bin/bash -
#Script to fetch nginx statuses for monitoring systems -
HOST="127.0.0.1" -
PORT="80" -
function ping { -
/sbin/pidof nginx | wc -l -
} -
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}' -
} -
$1
6.赋权
代码语言:javascript复制chmod a x nginx_status.sh7.重启zabbix-agent服务
代码语言:javascript复制systemctl restart zabbix-agent8.在zabbix-server端测试连接
代码语言:javascript复制-
zabbix_get -s 192.168.236.130 -p 10050 -k nginx.status[accepts] -
zabbix_get -s 192.168.236.130 -p 10050 -k nginx.status[handled] -
zabbix_get -s 192.168.236.130 -p 10050 -k nginx.status[requests]
9.zabbix-web端创建模板
10.创建应用集
11.创建监控项
创建监控项时,键值要手动输入,选择里面是找不到的。网上好多文章没有说明是手输的。nginx.status[*]就是上面nginx_status.conf里面的参数,*是脚本里面的function名称。
12.创建图形
zabbix 客户端 不要选 主动式
13.关联模板。
选择需要配置的主机,点击模板。切记要点击添加,然后点击更新。
14.查看动态
监测中—>图形—>选择主机—>图形
如果数据量比较小,可以通过ab进行测试。
代码语言:javascript复制ab -n 10000 -c 1000 http://ip(adsbygoogle = window.adsbygoogle || []).push({});


