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

ZABBIX 3.4 (一) 监测Nginx状态及脚本

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

安装了zabbix用来监测agent端的lnmp环境,先整理了一下配置nginx监测的步骤。

1.修改nginx配置文件

/etc/nginx/nginx.conf,可以新写一个server或者在旧的server里面新增一个localtion。保存之后重启nginx。

代码语言:javascript
复制
  1. location /nginx_status {
  2. stub_status on;
  3. access_log off;
  4. allow 127.0.0.1;
  5. allow 192.168.*.*;
  6. #zabbix服务器的IP地址,一般是内网地址
  7. deny all;
  8. }
  9. systemctl restart nginx

stub_status模块主要用于查看Nginx的一些状态信息,zabbix监测的就是status里面的一些基本数据。

使用allow可以运行该ip访问,用deny all 禁止其他机器访问地址,便于测试。我的zabbix分在两个机子上部署了,使用完毕可以把deny注释掉。

2.访问nginx_status

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

server accepts:处理的连接数;

handled:成功创建的握手次数;

requests:总共处理的请求数。

Reading:读取客户端的header数;

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

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

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

 3.zabbix-agent配置文件开始自定义参数

代码语言:javascript
复制
  1. vi /etc/zabbix/zabbix_agentd.conf
  2. Include=/etc/zabbix/zabbix_agentd.d/*.conf
  3. UnsafeUserParameters=1

4.新增脚本配置文件

agent配置文件中已经说明脚本存在于/etc/zabbix/zabbix_agentd.d/目录。

代码语言:javascript
复制
  1. cd /etc/zabbix/zabbix_agentd.d/
  2. vi nginx_status.conf
  3. UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh $1

5.编写脚本

代码语言:javascript
复制
  1. #!/bin/bash
  2. #Script to fetch nginx statuses for monitoring systems
  3. HOST="127.0.0.1"
  4. PORT="80"
  5. function ping {
  6. /sbin/pidof nginx | wc -l
  7. }
  8. function active {
  9. /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
  10. }
  11. function reading {
  12. /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
  13. }
  14. function writing {
  15. /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
  16. }
  17. function waiting {
  18. /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
  19. }
  20. function accepts {
  21. /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
  22. }
  23. function handled {
  24. /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
  25. }
  26. function requests {
  27. /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
  28. }
  29. $1

 6.赋权

代码语言:javascript
复制
chmod a+x nginx_status.sh

 7.重启zabbix-agent服务

代码语言:javascript
复制
systemctl restart zabbix-agent

8.在zabbix-server端测试连接

代码语言:javascript
复制
  1. zabbix_get -s 192.168.236.130 -p 10050 -k nginx.status[accepts]
  2. zabbix_get -s 192.168.236.130 -p 10050 -k nginx.status[handled]
  3. zabbix_get -s 192.168.236.130 -p 10050 -k nginx.status[requests]

9.zabbix-web端创建模板 

10.创建应用集

11.创建监控项

创建监控项时,键值要手动输入,选择里面是找不到的。网上好多文章没有说明是手输的。nginx.status[*]就是上面nginx_status.conf里面的参数,*是脚本里面的function名称。

12.创建图形

13.关联模板。

选择需要配置的主机,点击模板。切记要点击添加,然后点击更新。

 14.查看动态

监测中—>图形—>选择主机—>图形

如果数据量比较小,可以通过ab进行测试。

代码语言:javascript
复制
ab -n 10000 -c 1000 http://ip

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档