zabbix 监控nginx状态页

zabbix 监控nginx状态

目的:通过自己写的脚本和自定义的监控项,,实现主动监控nginx 的状态(各种连接数)

一、 主要思路

依靠zabbix_agent.conf 的 关键项配置

UserParameter=<key>,<shell command>

其中key 就是制作模板时用到的关键项, 后一个参数是shell 命令

当 UserParameter 如下配置时:

 UserParameter=nginx.status ,echo 66

在proxy 或server 上取值

root@z2:~# zabbix_get -s 192.168.1.104 -p 10050 -k nginx.status
66

所以把shell 命令换成脚本就可以了,通过在zabbix_agent 上面执行一个脚本抓取状态页的值即可。 为了监控更多的值 ,虽然UserParameter写多个 ,但是太费事了,多个相同类型的key 时,可以考虑用变量代替

如下:

 UserParameter=nginx.status[*],echo "$1" "$2" "$3"
root@z2:~# zabbix_get -s 192.168.1.104 -p 10050 -k nginx.status[1,2,3]
1 2 3

对于不同监控业务,可以用include 实现

二、具体步骤
1. nginx 开启状态页
 location /nginx_status {
    stub_status;
}
root@Z4:~# curl 127.0.0.1/nginx_status
Active connections: 1 
server accepts handled requests
 10 10 123 
Reading: 0 Writing: 1 Waiting: 0 
2. 创建监控脚本
#!/bin/bash 
nginx_status_fun(){ #函数内容
	NGINX_PORT=$1 #端口,函数的第一个参数是脚本的第二个参数,即脚本的第二个参数是段端口号
	NGINX_COMMAND=$2 #命令,函数的第二个参数是脚本的第三个参数,即脚本的第三个参数是命令
	nginx_active(){ #获取nginx_active数量,以下相同,这是开启了nginx状态但是只能从本机看到
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status" 2>/dev/null| grep 'Active' | awk '{print $NF}'
        }
	nginx_reading(){ #获取nginx_reading状态的数量
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status" 2>/dev/null| grep 'Reading' | awk '{print $2}'
       }
	nginx_writing(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status" 2>/dev/null| grep 'Writing' | awk '{print $4}'
       }
	nginx_waiting(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
       }
	nginx_accepts(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $1}'
       }
	nginx_handled(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $2}'
       }
	nginx_requests(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $3}'
       }
  	case $NGINX_COMMAND in
		active)
			nginx_active;
			;;
		reading)
			nginx_reading;
			;;
		writing)
			nginx_writing;
			;;
		waiting)
			nginx_waiting;
			;;
		accepts)
			nginx_accepts;
			;;
		handled)
			nginx_handled;
			;;
		requests)
			nginx_requests;
		esac 
}

main(){ #主函数内容
	case $1 in #分支结构,用于判断用户的输入而进行响应的操作
		nginx_status) #当输入nginx_status就调用nginx_status_fun,并传递第二和第三个参数
			nginx_status_fun $2 $3;
			;;
		*) #其他的输入打印帮助信息
			echo $"Usage: $0 {nginx_status key}"
	esac #分支结束符
}

main $1 $2 $3

先在本机验证可以取到值

root@Z4:/etc/zabbix/zabbix_agentd.d# chmod +x nginx_status.sh 
root@Z4:/etc/zabbix/zabbix_agentd.d# bash nginx_status.sh  nginx_status 80 active
1
3. 修改agent.conf
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh "$1"  "$2"  "$3"

验证:

root@z2:~# zabbix_get -s 192.168.1.104 -p 10050 -k nginx.status[nginx_status,80,active]
1
4.创建模板

在配置—>模板---->创建模板

mark

5. 添加监控项

mark

6. 关联到主机

mark

7.在最新数据中监测是否发现监控的数据

mark

mark****

mark

8.创建图形

mark

9.验证:

在图形的选项中,可以看到添加的值

mark

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值