NGINX配置
配置nginx的status模块(这个需要在编译nginx时候就加上--with-http_stub_status_module)
//根据实际需求配置
server {
listen 8000;
server_name localhost;
location /NginxStatus {
stub_status on;
access_log off;
}
测试
# /usr/bin/curl "http://localhost:8000/NginxStatus"
Active connections: 2
server accepts handled requests
2434 2434 3243
Reading: 0 Writing: 1 Waiting: 1
Zabbix基本配置
只在agent端配置
# vim /usr/local/zabbix/etc/zabbix_agentd.conf
//agent使用脚本需要将此项开启
UnsafeUserParameters=1
//指定agent配置文件位置
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/UserParameter_script.conf
//指定ngxin监控配置
#Nginx
UserParameter=nginx.status[*],/usr/local/zabbix/scripts/nginx_monitor.sh $1
Nginx监控脚本
# cat /usr/local/zabbix/scripts/nginx_monitor.sh
#!/bin/bash
HOST="localhost"
PORT="8000"
NGINX_COMMAND=$1
# 检测nginx进程是否存在
function nginx_process() {
/usr/bin/pgrep nginx | wc -l
}
# 检测nginx性能
function nginx_active() {
/usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk '/Active/ {print $NF}'
}
function nginx_reading() {
/usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk '/Active/ {print $NF}'
}
function nginx_writing() {
/usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk '/Active/ {print $NF}'
}
function nginx_waiting() {
/usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk '/Active/ {print $NF}'
}
function nginx_accepts() {
/usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function nginx_handled() {
/usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function nginx_requests() {
/usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
# 执行function
#${NGINX_COMMAND}
case $NGINX_COMMAND in
process)
nginx_process;
;;
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
;;
*)
echo $"USAGE:$0 {process|active|reading|writing|waiting|accepts|handled|requests}"
esac
重启agent并测试
Agent端重启zabbix_agent
# /etc/init.d/zabbix_agentd restart
Sserver端测试(ip填写agent的IP)
# ./zabbix_get -s 172.16.28.118 -k nginx.status[process]
4
# ./zabbix_get -s 172.16.28.118 -k nginx.status[active]
3
web页面配置
流程:
创建监控模板(Template App Nginx)-->创建应用集(NginxStatus)-->创建监控项(脚本中的8个)-->创建图形
创建模板
创建应用集
创建监控项(举例一项,其余相同)
创建图形
全部创建好后,被监控主机就可以调用nginx监控模板,来监控nginx各项数据了