- A+
zabbix监控nginx;nginx监控:非常简单的几部操作就可以让zabbix监控nginx,即时准确的获取nginx监控的状态和数据。
- nginx和php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有帮助。为了后续的zabbix监控,我们需要先了解nginx状态页是怎么回事。
⇒ 1.1 启用nginx status配置
server {
listen *:80 default_server;
server_name _;
location /ngx_status
{
stub_status on;
access_log off;
#allow 127.0.0.1;
#deny all;
}
}
⇒1.2 重启nginx
根据你自己的环境重启你的nginx
#service nginx restart
⇒1.3 打开status页面
# curl http://127.0.0.1/ngx_status
Active connections: 11921
server accepts handled requests
11989 11989 11991
Reading: 0 Writing: 7 Waiting: 42
⇒1.4 nginx status详解
active connections – 活跃的连接数量
server accepts handled requests — 总共处理了11989个连接 , 成功创建 11989次 握手, 总共处理了11991个请求
reading — 读取客户端的连接数.
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.
- ##登录zabbix后端管理界面
##操作一:
##导入新的模板nginx-template.xml
这里提供一个测试过的,非常好用简单的nginx监控模板,如有需要直接下载就可以了
nginx-template.xml模板下载地址:https://pan.baidu.com/s/1ORbGR2f3MOx9hLr_wXotog
##操作二:
##创建nginx-params.conf文件位置/etc/zabbix/zabbix_agentd.d/目录下
vim /etc/zabbix/zabbix_agentd.d/nginx-params.conf ##增加如下内容
UserParameter=nginx[*],/etc/zabbix/zabbix_agentd/scripts/nginx-check.sh "$1"
##操作三:
##创建脚本文件nginx-check.sh,获取status页面信息。设置执行权限(例如755)
vim /etc/zabbix/zabbix_agentd/scripts/nginx-check.sh
#!/bin/bash
##################################
# Zabbix monitoring script
#
# nginx:
# - anything available via nginx stub-status module
#
##################################
# Contact:
# vincent.viallet@gmail.com
# Zabbix requested parameter
ZBX_REQ_DATA="$1"
ZBX_REQ_DATA_URL="$2"
# Nginx defaults
NGINX_STATUS_DEFAULT_URL="http://192.168.230.54/basic_status"
##根据实际的状态页地址修改,最好使用局域网地址访问,外网拒绝访问。
WGET_BIN="/usr/bin/wget"
#
# Error handling:
# - need to be displayable in Zabbix (avoid NOT_SUPPORTED)
# - items need to be of type "float" (allow negative + float)
#
ERROR_NO_ACCESS_FILE="-0.9900"
ERROR_NO_ACCESS="-0.9901"
ERROR_WRONG_PARAM="-0.9902"
ERROR_DATA="-0.9903" # either can not connect / bad host / bad port
# Handle host and port if non-default
if [ ! -z "$ZBX_REQ_DATA_URL" ]; then
URL="$ZBX_REQ_DATA_URL"
else
URL="$NGINX_STATUS_DEFAULT_URL"
fi
# save the nginx stats in a variable for future parsing
NGINX_STATS=$($WGET_BIN -q $URL -O - 2> /dev/null)
# error during retrieve
if [ $? -ne 0 -o -z "$NGINX_STATS" ]; then
echo $ERROR_DATA
exit 1
fi
#
# Extract data from nginx stats
#
case $ZBX_REQ_DATA in
active_connections) echo "$NGINX_STATS" | head -1 | cut -f3 -d' ';;
accepted_connections) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut - f2 -d' ';;
handled_connections) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f3 -d' ';;
handled_requests) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f4 -d' ';;
reading) echo "$NGINX_STATS" | tail -1 | cut -f2 -d' ';;
writing) echo "$NGINX_STATS" | tail -1 | cut -f4 -d' ';;
waiting) echo "$NGINX_STATS" | tail -1 | cut -f6 -d' ';;
*) echo $ERROR_WRONG_PARAM; exit 1;;
esac
exit 0
简单的zabbix实时nginx监控部署完成了 ,下载去zabbix前台的web界面刷新看一下吧 。如有不懂或困惑的地方,可以留言评论。欢迎指正,定期更新热点文章