- nginx简介:
Nginx是一个高性能的HTTP和反向代理服务器。内存少,并发能力强等特性让他一跃成为世界上第二流行的web服务器,被广大互联网公司使用。
- 本公司使用nginx的场景:
和nginx关联的server数量:100+,openresty,tengine也都尝试过,综合对比、评估效果来看,还是nginx更适合我们的架构。还有一个更重要的原因就是nginx简单易用,网上学习资料多。
- nginx监控的基础指标:
1、nginx是否存活
2、nginx活跃连接数
3、nginx读取到客户端的连接数量
4、nginx响应客户端的连接数量
5、nginx驻留连接
6、nginx每分钟收到的连接数
7、nginx每分钟成功处理的连接数
##zabbix结合监控脚本实时监控nginx:
#!/bin/bash
# Script to fetch nginx statuses for tribily monitoring systems
# Set Variables
HOST="127.0.0.1"
PORT="80"
# Functions to return nginx stats
function alive {
alive=\`/usr/bin/curl -s "http://\$HOST:\$PORT/nginx_status" 2> /dev/null| grep 'Active' | awk '{print $NF}'`
if [ -z ${alive} ];
then
echo 0
else
echo 1
fi
}
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}'
}
# Run the requested function
$1
##为了让配置文件更容易维护,创建nginx.conf文件
#monitor nginx
UserParameter=nginx.alive,/usr/local/zabbix-2.4.5/script/check_status alive
UserParameter=nginx.accepts,/usr/local/zabbix-2.4.5/script/check_status accepts
UserParameter=nginx.handled,/usr/local/zabbix-2.4.5/script/check_status handled
UserParameter=nginx.requests,/usr/local/zabbix-2.4.5/script/check_status requests
UserParameter=nginx.connections.active,/usr/local/zabbix-2.4.5/script/check_status active
UserParameter=nginx.connections.reading,/usr/local/zabbix-2.4.5/script/check_status reading
UserParameter=nginx.connections.writing,/usr/local/zabbix-2.4.5/script/check_status writing
UserParameter=nginx.connections.waiting,/usr/local/zabbix-2.4.5/script/check_status waiting
-
zabbix_agentd.conf文件中include nginx.conf文件,增加一个扩展。
Include=/usr/local/zabbix-2.4.5/shell/nginx.conf
如果有的同学对自定义脚本监控不太熟悉,可以看看运维生存时间上总结的内容:https://www.ttlsa.com/zabbix/zabbix-user-parameters/
附带两张监控截图
- 出现问题第一时间发送报警消息。
报警Trigger触发规则,nginx是否存活:
Trigger 严重程度:Disaster
触发条件{Nginx Status:nginx.alive.last(0)}=0
前面脚本传值,如果nginx挂了,会返回0,触发告警。其他的监控指标的报警阀值也都可以进行自定义,熟悉zabbix的同学应该都能够搞定。小白就不在这里献丑了。
接收告警消息可以选择邮件和短信、网上教程也比较多,教程帖子:
如果觉得自己搞这些比较麻烦的话,也可以试试 OneAlert 一键集成zabbix,短信、电话、微信、APP啥都能搞定,还免费,用着不错。
http://www.onealert.com/activity/zabbix.html
初学zabbix,希望能和大家共同进步,把自己学到用到的share给大家。