环境准备
五台机器:
zabbix_agent 5.0 被动模式(已安装) Zabbix_java_gateway 5.0 (已安装) 10.0.0.7
MariaDB-10.4.22(已安装) zabbix_server 5.0(已安装) 10.0.0.17
Tomcat-8.5(已安装) 10.0.0.27
zabbix_agent 5.0 主动模式(已安装)Redis-6.2.4(已安装)Nginx-1.18(已安装)10.0.0.37
MariaDB-10.4.22(已安装) zabbix_proxy 5.0 主动模式(已安装) 10.0.0.47
Nginx 状态页
基于nginx 模块 ngx_http_stub_status_module 实现,在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module,否则配置完成之后监测会是提示语法错误
注意: 状态页显示的是整个服务器的状态,而非虚拟主机的状态
[root@www.wulaoer.org ~]#cd nginx-1.18.0/ [root@www.wulaoer.org nginx-1.18.0]#./configure --help |grep with-http_stub_status_module --with-http_stub_status_module enable ngx_http_stub_status_module #配置示例: location /nginx_status { stub_status; auth_basic "auth login"; auth_basic_user_file /apps/nginx/conf/.htpasswd; allow 192.168.0.0/16; allow 127.0.0.1; deny all; } #状态页用于输出nginx的基本状态信息: #输出信息示例: Active connections: 291 server accepts handled requests 16630948 16630948 31070465 上面三个数字分别对应accepts,handled,requests三个值 Reading: 6 Writing: 179 Waiting: 106 Active connections: #当前处于活动状态的客户端连接数,包括连接等待空闲连接数=reading+writing+waiting accepts:#统计总值,Nginx自启动后已经接受的客户端请求连接的总数。 handled:#统计总值,Nginx自启动后已经处理完成的客户端请求连接总数,通常等于accepts,除非有因worker_connections限制等被拒绝的连接 requests:#统计总值,Nginx自启动后客户端发来的总的请求数。 Reading:#当前状态,正在读取客户端请求报文首部的连接的连接数,数值越大,说明排队现象严重,性能不足 Writing:#当前状态,正在向客户端发送响应报文过程中的连接数,数值越大,说明访问量很大 Waiting:#当前状态,正在等待客户端发出请求的空闲连接数,开启 keep-alive的情况下,这个值等于active – (reading+writing)
添加Nginx状态页
[root@www.wulaoer.org ~]#vim /apps/nginx/conf/nginx.conf location / { root html; index index.html index.htm; } location /nginx_status { stub_status; allow 10.0.0.0/24; allow 127.0.0.1; deny all; } [root@www.wulaoer.org ~]#nginx -t nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok nginx: configuration file /apps/nginx/conf/nginx.conf test is successful [root@www.wulaoer.org ~]#systemctl restart nginx.service [root@www.wulaoer.org ~]#curl http://10.0.0.37/nginx_status Active connections: 1 server accepts handled requests 8 8 9 Reading: 0 Writing: 1 Waiting: 0
2.Nginx监控脚本
[root@www.wulaoer.org ~]#cd /etc/zabbix/zabbix_agentd.d/ [root@www.wulaoer.org zabbix_agentd.d]#cat nginx_monitor.sh #!/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@www.wulaoer.org zabbix_agentd.d]#chmod a+x nginx_monitor.sh [root@www.wulaoer.org zabbix_agentd.d]#bash nginx_monitor.sh nginx_status 80 active 1 [root@www.wulaoer.org zabbix_agentd.d]#bash nginx_monitor.sh nginx_status 80 writing 1
3.zabbix agent添加自定义监控项
#将所有自定义监控项汇总到/etc/zabbix/zabbix_agentd.d/all.conf配置文件 [root@www.wulaoer.org zabbix_agentd.d]#vim all.conf UserParameter=redis_monitor[*],/bin/bash /etc/zabbix/zabbix_agentd.d/redis_monitor.sh $1 $2 $3 UserParameter=nginx.status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh $1 $2 $3 [root@www.wulaoer.org zabbix_agentd.d]#vim /etc/zabbix/zabbix_agentd.conf #删除以下自定义监控项 UserParameter=redis_monitor[*],/bin/bash /etc/zabbix/zabbix_agentd.d/redis_monitor.sh $1 $2 $3 [root@centos7 zabbix_agentd.d]#systemctl restart zabbix-agent.service
4.zabbix server测试监控项数据
[root@zabbix_server ~]#/bin/zabbix_get -s 10.0.0.37 -p 10050 -k "nginx.status["nginx_status","80","active"]" 1 [root@zabbix_server ~]#/bin/zabbix_get -s 10.0.0.37 -p 10050 -k "nginx.status["nginx_status","80","writing"]" 1
5.导入Nginx监控模板
点击【配置-模板-导入】
6.查看监控项
点击【配置-模板-nginx-template-magedu-jiege-监控项】
7.模板关联主机
点击【配置-主机-10.0.0.37-web2-active-模板】
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏