Zabbix监控nginx并发

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各项数据了

猜你喜欢

转载自blog.csdn.net/wangshui898/article/details/84671996