zabbix4.2监控nginx
项目环境:
| 操作系统 | 主机名 | IP地址 |
| Centos7.6 x86_64 | zabbix-server | 192.168.1.18 |
| Centos7.6 x86_64 | zabbix-client | 192.168.1.20 |
在zabbix-servre安装配置完好的前提下,进行如下操作
配置操作如下:
1. 客户端安装nginx软件
[root@Zabbix-Agent ~]# yum -y install nginx
2. 编辑主配置文件server标签下添加一个location
[root@Zabbix-Agent ~]# vim /etc/nginx/nginx.conf
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
3. 启动nginx服务
[root@Zabbix-Agent ~]# systemctl start nginx
[root@Zabbix-Agent ~]# systemctl enable nginx
4. 本地访问Nginx Status
[root@Zabbix-Agent ~]# curl -s http://127.0.0.1/nginx_status
Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0
Nginx状态解释:
Active connections Nginx正处理的活动链接数1个
server Nginx启动到现在共处理了1个连接。
accepts Nginx启动到现在共成功创建1次握手。
handled requests Nginx总共处理了1次请求。
Reading Nginx读取到客户端的 Header 信息数。
Writing Nginx返回给客户端的 Header 信息数。
Waiting Nginx已经处理完正在等候下一次请求指令的驻留链接,开启。
Keepalive的情况下,这个值等于active-(reading + writing)。
请求丢失数=(握手数-连接数)可以看出,本次状态显示没有丢失请求。
5. 编写nginx_status脚本
[root@Zabbix-Agent ~]# mkdir -p /server/scripts/
[root@Zabbix-Agent ~]# vim /server/scripts/zabbix_status.sh
#!/bin/bash
############################################################
# $Name: nginx_status.sh
# $Version: V1.1
# $Function: Nginx_Status
# $Author: Happy峰
# $organization: blog.chenjiangfeng.com
# $Create Date: 2019-05-23
# $Description: Monitor Nginx Service Status
############################################################
#!/bin/bash
NGINX_HOST=127.0.0.1
NGINX_PORT=80 #如果端口不同仅需要修改脚本即可,否则修改xml很麻烦
NGINX_URI=/nginx_status
NGINX_COMMAND=$1
nginx_active(){
/usr/bin/curl -s "http://${NGINX_HOST}:${NGINX_PORT}${NGINX_URI}" |awk '/Active/ {print $NF}'
}
nginx_reading(){
/usr/bin/curl -s "http://${NGINX_HOST}:${NGINX_PORT}${NGINX_URI}" |awk '/Reading/ {print $2}'
}
nginx_writing(){
/usr/bin/curl -s "http://${NGINX_HOST}:${NGINX_PORT}${NGINX_URI}" |awk '/Writing/ {print $4}'
}
nginx_waiting(){
/usr/bin/curl -s "http://${NGINX_HOST}:${NGINX_PORT}${NGINX_URI}" |awk '/Waiting/ {print $6}'
}
nginx_accepts(){
/usr/bin/curl -s "http://${NGINX_HOST}:${NGINX_PORT}${NGINX_URI}" |awk 'NR==3 {print $1}'
}
nginx_handled(){
/usr/bin/curl -s "http://${NGINX_HOST}:${NGINX_PORT}${NGINX_URI}" |awk 'NR==3 {print $2}'
}
nginx_requests(){
/usr/bin/curl -s "http://${NGINX_HOST}:${NGINX_PORT}${NGINX_URI}" |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
6. 给脚本授予执行权限
[root@Zabbix-Agent ~]# chmod a+x /server/scripts/zabbix_status.sh
7. zabbix-agent端本地测试脚本是否能获取到数据
[root@Zabbix-Agent ~]# sh /server/scripts/zabbix_status.sh active
1
[root@Zabbix-Agent ~]# sh /server/scripts/zabbix_status.sh reading
0
[root@Zabbix-Agent ~]# sh /server/scripts/zabbix_status.sh writing
1
[root@Zabbix-Agent ~]# sh /server/scripts/zabbix_status.sh waiting
0
[root@Zabbix-Agent ~]# sh /server/scripts/zabbix_status.sh accepts
15
[root@Zabbix-Agent ~]# sh /server/scripts/zabbix_status.sh handled
16
[root@Zabbix-Agent ~]# sh /server/scripts/zabbix_status.sh requests
17
[root@Zabbix-Agent ~]# sh/server/scripts/zabbix_status.sh nginx
USAGE/etc/zabbix/scripts/zabbix_status.sh {active|reading|writing|waiting|accepts|handled|requests}
7. 在zabbix-agent配置文件添加一个自定义key
[root@Zabbix-Agent ~]# vim /etc/zabbix/zabbix_agent.d/zabbix_nginx_status.conf
UserParameter=nginx_status[*],/bin/bash /server/scripts/zabbix_status.sh "$1"
8. 重启zabbix-agent服务
[root@Zabbix-Agent ~]# systemctl restart zabbix-agent
9. zabbix server 测试agent-key是否能获取到响应值
[root@Zabbix-Server ~]# zabbix_get -s 192.168.1.20 -k nginx_status[active]
1
[root@Zabbix-Server ~]# zabbix_get -s 192.168.1.20 -k nginx_status[reading]
0
[root@Zabbix-Server ~]# zabbix_get -s 192.168.1.20 -k nginx_status[writing]
1
[root@Zabbix-Server ~]# zabbix_get -s 192.168.1.20 -k nginx_status[accepts]
30
[root@Zabbix-Server ~]# zabbix_get -s 192.168.1.20 -k nginx_status[handled]
31
[root@Zabbix-Server ~]# zabbix_get -s 192.168.1.20 -k nginx_status[requests]
32
10. zabbix-web端添加监控主机


11. 添加监控项










12. 创建一张汇总数据的图形





zabbix4.2监控nginx的更多相关文章
- zabbix4.2学习笔记--监控nginx
图解一个客户端连接开源版本的Nginx情况 Accepts(接受).Handled(已处理).Requests(请求数)是一直在增加的计数器.Active(活跃).Waiting(等待).Readin ...
- zabbix4.2配置监控nginx服务
1.监控原理 通过status模块监控(--with-http_stub_status_module) 2.修改nginx配置(/etc/nginx/conf.d/default.conf) 在被监 ...
- 使用Zabbix监控Nginx服务实战案例
使用Zabbix监控Nginx服务实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编译安装nginx步骤详解并开启状态页 博主推荐阅读: https://www.cn ...
- Zabbix 监控 Nginx(四)
简介: 如何使用 Zabbix 监控 Nginx 状态 ? 1.获取 Nginx 状态( HTTP Stub Status ) [root@localhost ~]# /apps/product/ng ...
- Python 监控nginx服务是否正常
Python 监控nginx服务是否正常 #!/usr/bin/env python import os, sys, time from time import strftime while True ...
- 让keepalived监控NginX的状态
经过前面的配置,如果主服务器的keepalived停止服务,从服务器会自动接管VIP对外服务:一旦主服务器的keepalived恢复,会重新接管VIP. 但这并不是我们需要的,我们需要的是当NginX ...
- ngxtop:在命令行实时监控 Nginx 的神器
Nginx网站服务器在生产环境中运行的时候需要进行实时监控.实际上,诸如Nagios, Zabbix, Munin 的网络监控软件是支持 Nginx 监控的. 如果你不需要以上软件提供的综合性报告或者 ...
- PHP实现简单的监控nginx日志文件功能
此功能是为了实现,定时监控nginx生成的日志数据,并将新增的数据提交到一个接口(比如大数据的接口,让大数据来进行分析) define("MAX_SHOW", 8192*5); / ...
- Zabbix 监控 Nginx 状态
简介: 如何使用 Zabbix 监控 Nginx 状态 ? 1.获取 Nginx 状态( HTTP Stub Status ) shell > /usr/local/nginx/sbin/ngi ...
随机推荐
- C#对泛型实例化对像的方法
最近在搞一个小东东,用到了泛型的处理,用到了对泛型的实例化问题.下面来讲讲对泛型的实例化,以代码为例,如: public class A { } public class B<T> { p ...
- Dotmemory 内存分析工具
Dotmemory 内存分析工具 教程一.开始学习dotmemory 在本教程中,我们将学习如何运行dotMemory内存快照.此外,我们将简要地看看dotMemory的用户界面和基本分析的概念.考虑 ...
- C# 编译器 和 反编译器,你要哪个(歪头)? 我全都要(捏拳)!
前言 从 C# 6.0 开始,C# 编译器就从以前由 C++ 实现的 csc.exe 换成了用 C# 重新实现的开放式 API 式编译服务 Roslyn.这个编译器到现在已经替代了老式编译器,从前 W ...
- Echartjs axis.getAxesOnZeroOf is not a function
该问题已经解决,下面是解决思路! 问题描述: axis.getAxesOnZeroOf is not a function 使用echart 出现报这句错误,请求解决方案! 问题原因: 我给坐标设置了 ...
- Python Tkinter 文本框(Entry)
Python Tkinter 文本框用来让用户输入一行文本字符串. 你如果需要输入多行文本,可以使用 Text 组件. 你如果需要显示一行或多行文本且不允许用户修改,你可以使用 Label 组件. 语 ...
- 【转】Axure RP9.0.0.3661Team Edition激活码
被授权人:Axure 授权密码:ydiJnG8quHEhHLu/MWonjkeul5LYB1+tX9fyPVnpdmU0cb/NJzVs45uD7z5Iswmi 转载于:http://menvscod ...
- ActiveMQ学习教程
一.activemq安装 官网地址:https://activemq.apache.org/ 具体安装过程不赘述,解压即安装, 二.使用 activemq有queue和topic两种模式, 我们以qu ...
- leetcode 55 Jump Game 三种方法,回溯、动态规划、贪心
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- Knockout.js之初印象
最近在学Knockout.js,想要把看到的东西用blog记录下来. Knockout.js是一个MVVM的框架,突然想起之前有人问我哪些是MVVM框架?我回答了angular.js和bootstra ...
- java enum类探索
参考网址1, 参考网址2 一直对枚举有点迷惑,现在试着理解枚举. 1.首先,普通类与枚举 的区别.拿两个例子比较吧 普通类: /** * 一个普通类 * @author Administrator * ...