前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ZABBIX 3.4 监控Nginx 状态(七)

ZABBIX 3.4 监控Nginx 状态(七)

作者头像
拓荒者
发布2019-03-11 10:43:25
1K0
发布2019-03-11 10:43:25
举报
文章被收录于专栏:运维经验分享运维经验分享

一、环境准备

1、在nginx的配置文件中,添加status配置         location /nginx_status {                stub_status on;                access_log off;                allow 127.0.0.1;                allow 172.17.19.19;   //zabbix服务器的IP地址,一般是内网地址                  deny all;        }

     //在虚拟主机 server {} 中加入上面配置,也可以单独定义一个专门用于监控的虚拟主机。      //deny all , 拒绝除 allow 中的主机之外所有主机访问此 URL ,实现过程中如果遇到 403 ,有可能是你把自己测试的机器拒绝了

2、访问设置好的nginx-status链接,如图所示:

3、nginx Status 详细说明:

Activeconnections:对后端发起的活动连接数;

server accepts 66:nginx 总共处理了66个连接;

handled:成功创建了66次握手;

requests:总共处理了66请求。

Reading:nginx读取客户端的header数;

Writing: nginx 返回给客户端的header数;

Waiting: nginx 请求处理完成,正在等待下一请求指令的连接。

  在访问效率很高,请求很快被处理完毕的情况下,Waiting 数比较多是正常的。如果 reading + writing 数较多,则说明并发访问量很大,正在处理过程中

二、监控脚本编写

1、编写脚本,放于 /etc/zabbix/zabbix_agentd.d/目录下

复制代码
复制代码
代码语言:javascript
复制
#!/bin/bash
#Script to fetch nginx statuses for monitoring systems
#Author Tony 
    HOST="127.0.0.1"
    PORT="80"

    function ping {
        /sbin/pidof nginx | wc -l
    }

    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}'
    }
    $1
复制代码
复制代码

       赋予脚本执行权限:

代码语言:javascript
复制
[root@Node1 zabbix_agentd.d]# chmod a+x nginx_status.sh  //赋予执行权限
[root@Node1 zabbix_agentd.d]# ll nginx_status.sh
-rwxr-xr-x 1 root root 1157 Jan 18 15:45 nginx_status.sh

2、添加zabbix配置文件,放于 /etc/zabbix/zabbix_agentd.d/目录下(agent的配置文件 /etc/zabbix/zabbix_agentd.conf 中定义了其他key的包含目录)创建配置文件nginx_status.conf

代码语言:javascript
复制
[root@Node1 zabbix_agentd.d]# cat nginx_status.conf
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh $1

3、确保配置Agent配置文件开启自定义参数UnsafeUserParameters=1

复制代码
复制代码
代码语言:javascript
复制
[root@Node1 zabbix_agentd.d]# !grep
grep -n '^[a-Z]' /etc/zabbix/zabbix_agentd.conf
13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
57:DebugLevel=3
97:Server=172.17.21.208
138:ServerActive=172.17.21.208
149:Hostname=Node1.contoso.com
267:Include=/etc/zabbix/zabbix_agentd.d/*.conf
286:UnsafeUserParameters=1    //1代表允许,0代表关闭
复制代码
复制代码

4、重启zabbix-agent服务

代码语言:javascript
复制
[root@Node1 ~]# systemctl restart zabbix-agent.service

 5、在zabbix servere服务器上测试,是否能正常获取数据

复制代码
复制代码
代码语言:javascript
复制
[root@Node3 zabbix3.4.5]# zabbix_get -s 172.17.21.206 -p 10050 -k nginx.status[ping]   
1
[root@Node3 zabbix3.4.5]# zabbix_get -s 172.17.21.206 -p 10050 -k nginx.status[accepts]
306
[root@Node3 zabbix3.4.5]# zabbix_get -s 172.17.21.206 -p 10050 -k nginx.status[handled]
307
[root@Node3 zabbix3.4.5]# zabbix_get -s 172.17.21.206 -p 10050 -k nginx.status[requests]
311
[root@Node3 zabbix3.4.5]#
复制代码
复制代码

三、WEB界面配置

1、创建模板:Configuration-->Templates-->Greate template,创建模板名称:Template App NGINX,单击Add即可

2、给模板依次添加相应Item、Trigger、Graphs,如下图所示

3、关联模板,Configuration-->Hosts-->Node1--Templates,选择模板,点击Updtae即可

4、查看Nginx状态:Monitoring-->Graphs-->Host(Node1)-->Grahp(nginx status connections与nginx status server)

   备注:若相关数据比较小的话,可以使用ab进行简单压测,然后再看数值变化

代码语言:javascript
复制
[root@Node1 zabbix_agentd.d]# ab -n 10000 -c 1000 http://Node1.contoso.com/

 附模板:Template_Nginx_Status.xml

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/10/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档