zabbix监控之nginx 1,配置NginxStatus功能,需要ngx_http_stub_status_module模块支持
代码语言:javascript复制server {
listen 12345;
server_name 127.0.0.1;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
2,配置zabbix_agentd客户端
在zabbix_agentd.conf末尾添加如下配置
代码语言:javascript复制UserParameter=nginx.accepts,/data/scripts/nginx_status accepts
UserParameter=nginx.handled,/data/scripts/nginx_status handled
UserParameter=nginx.requests,/data/scripts/nginx_status requests
UserParameter=nginx.connections.active,/data/scripts/nginx_status active
UserParameter=nginx.connections.reading,/data/scripts/nginx_status reading
UserParameter=nginx.connections.writing,/data/scripts/nginx_status writing
UserParameter=nginx.connections.waiting,/data/scripts/nginx_status waiting
3,nginx状态监控脚本如下
cat nginx_status
代码语言:javascript复制#!/bin/bash
# Script to fetch nginx_status statuses for tribily monitoring systems
# Author: krish@toonheart.com
# License: GPLv2
# Set Variables
#HOST=`/sbin/ifconfig eth0 | sed -n '/inet /{s/.*addr://;s/ .*//;p}'
HOST=127.0.0.1
PORT="12345"
# Functions to return nginx_status stats
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
4,重启nginx和zabbix_agentd
5,zabbix web界面添加nginx监控模板,添加nginx客户端监控项,nginx模板见附件
6,监控效果如下