Zabbix学习之路(七)之Nginx的状态监控
1、安装nginx
[root@linux-node2 ~]# yum install -y nginx
[root@linux-node2 ~]# mkdir /etc/zabbix/zabbix_agentd.d/scripts #创建脚本文件夹
[root@linux-node2 ~]# vim /etc/nginx/nginx.conf
在server内增加nginx状态监控,nginx的状态主要来自nginx的自带的模块
location /nginx_status {
stub_status on;
access_log off;
allow 192.168.56.0/;
allow 127.0.0.1;
deny all;
}
[root@linux-node2 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@linux-node2 ~]# systemctl restart nginx
[root@linux-node1 ~]# curl http://192.168.56.12/nginx_status
Active connections:
server accepts handled requests Reading: Writing: Waiting: Nginx状态解释:
Active connections Nginx正处理的活动链接数1个
server Nginx启动到现在共处理了9个连接。
accepts Nginx启动到现在共成功创建9次握手。
handled requests Nginx总共处理了7次请求。
Reading Nginx读取到客户端的 Header 信息数。
Writing Nginx返回给客户端的 Header 信息数。
Waiting Nginx已经处理完正在等候下一次请求指令的驻留链接,开启。
Keep-alive的情况下,Waiting这个值等于active-(reading + writing)。
请求丢失数=(握手数-连接数)可以看出,本次状态显示没有丢失请求。
2、添加agent的监控nginx状态配置
[root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.d/nginx_monitor.conf
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh "$1"
3、编写获取nginx状态的shell脚本
[root@linux-node2 ~]# vim nginx_monitor.sh
NGINX_PORT=
NGINX_COMMAND=$
nginx_active(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Active/ {print $NF}'
}
nginx_reading(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Reading/ {print $2}'
}
nginx_writing(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Writing/ {print $4}'
}
nginx_waiting(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Waiting/ {print $6}'
}
nginx_accepts(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $1}'
}
nginx_handled(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $2}'
}
nginx_requests(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {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;
;;
*)
echo $"USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}"
esac 给脚本添加执行权限
[root@linux-node2 scripts]# chmod +x nginx_status.sh
[root@linux-node2 ~]# systemctl restart zabbix-agent
测试一定使用Zabbix_get来获取值:
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k nginx_status[accepts]
4、创建监控模板以及添加监控项,并添加监控主机:
步骤和监控TCP状态一样:


总结:
添加自定义的监控有以下步骤:
(1)在/etc/zabbix/zabbix_agentd.d/目录下增加自定义监控项(item)
(2)在zabbix-server上测试使用自定义监控项是否能获取值
(3)创建监控模板
(4)创建监控主机并链接监控模板
(5)查看监控最新数据,是否生效
Zabbix学习之路(七)之Nginx的状态监控的更多相关文章
- Zabbix学习之路(六)TCP状态监控
TCP状态监控 Tcp的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB:或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了***,或是是time_wait值比 ...
- Zabbix学习之路(五)之MySQL监控
1.linux-node2节点安装数据库 [root@linux-node2 ~]# yum install -y mariadb-server [root@linux-node2 ~]# syste ...
- Zabbix学习之路(十)之分布式监控zabbix_proxy及交换机监控
1.Zabbix分布式监控 zabbix proxy 可以代替 zabbix server 检索客户端的数据,然后把数据汇报给 zabbix server,并且在一定程度上分担了zabbix serv ...
- Zabbix学习之路(八)之自动化监控网络发现和主动注册
1.网络发现 分两步走:创建发现规则(rule)和执行的动作(Action)(1)创建发现规则"Configuration"-->"Create discover ...
- Zabbix学习之路(四)之Web监控
1.Zabbix监控web服务器访问性能 zabbix 对 web 性能的监控,通过它可以了解 web 站点的可用性以及性能.最终将各项指标绘制到图形中,这样我们可以了解到一个站点的下载速度.响应速度 ...
- [原创] zabbix学习之旅七:如何远程操作被监控机器
虽然我们已经创建了一个报警系统,但在实际场景中,运维人员从得到报警到实际解决问题有一定的时差,若业务系统没有做高可用,那业务不得不中断,对于某些要求严格的企业级环境,这是不可容忍的,那有没有方法能让z ...
- Zabbix学习之路(九)之低级自动发现以及MySQL多实例
1.概述 Zabbix的网络发现是指zabbix server通过配置好的规则,自动添加host,group,template Zabbix的主动注册刚好和网络发现是相反的,功能基本一致.zabbix ...
- zigbee学习之路(七):定时器3(中断方式)
一.前言 上次我们学习了了用定时器3进行查询方式来进行溢出判断,今天我们来换一种方式,用中断方式来检测和查询定时器3的溢出. 二.原理与分析 要使用定时器3,我们必须先要配置的是T3CTL,来把定时器 ...
- Zabbix学习之路(二)之添加主机监控及自定义item监控
1.zabbix_get命令详解 安装zabbix-get命令 [root@linux-node1 ~]# yum install -y zabbix_get 参数说明: -s --host: 指定客 ...
随机推荐
- ajax几种请求几种类型
jquery向服务器发送一个ajax请求后,可以返回多种类型的数据格式,包括:html,xml,json,text等. 首先说一下jquery中ajax标准的格式. $.ajax({ url: &qu ...
- 新版剑指offer14 剪绳子
int maxProduct(int length){ ) ; ) ; ) ; ; == ) numof3 -= ; )/; ,numof3))*(,numof2)); }
- 《OpenGL编程指南第七版》学习——编译时提示“error C2381: “exit” : 重定义;__declspec(noreturn) 不同”错误的解决办法
解决办法一. #if defined(_WIN32) # ifndef GLUT_BUILDING_LIBextern _CRTIMP void __cdecl exit(int); 上面是glut. ...
- C#回调实现的一般过程
C#回调实现的一般过程 C#的方法回调机制,是建立在委托基础之上的,下面给出它的典型实现过程. (一) 定义.声明回调 Delegate void DoSomeCallBack(type para); ...
- disconf实践(四)基于注解的分布式配置文件管理,自动reload
上一篇讲解了基于xml的自动reload的分布式配置文件管理,这一篇讲解基于注解的自动reload的方式(基于disconf实践二). 1. 修改spring配置文件 <?xml version ...
- Order by排序
asc 升序(默认),desc 降序 order by 后面 可以加 列.表达式.别名.序号(从1开始) desc; --表达式 年薪 from emp order by 年薪 desc; --别名 ...
- node.js 基于cheerio的爬虫工具,需要登录权限的爬虫工具
公司有过一个需求,需要拿一个网页的的表格数据,数据量达到30w左右:为了提高工作效率. 结合自身经验和网上资料.写了一套符合自己需求的nodejs爬虫工具.也许也会适合你的. 先上代码.在做讲解 'u ...
- Java编程基础知识总结大全(Ⅰ)
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Java语言作为静态面向对象编程语言的代表 ...
- es6 入坑笔记(一)---let,const,解构,字符串模板
let 全面取代var 大概相似于C++的定义,一个变量必须得先定义后使用,没有预编译 注意let的作用域,一个{}就是一个作用域,上述规则须在一个作用于内 坑:for(let i =0;i < ...
- 偏前端 - ios下position:fixed失效的问题解决
如图,考虑到用户体验的问题,一般页面的下方提交按钮都会随着固定在页面上,方便用户点击. 有些人肯定就说了,这还不简单,position:fixed: 但是在ios这个坑货系统上这个position:f ...