zabbix监控nginx指标

使用nginx作为web服务器,我们需要清晰知道:

1.nginx的工作状态

2.请求数有多少,多少是已经响应完成的,多少是响应失败的

3.nginx服务以及端口监听情况是否处于运行状态

当出现服务停止或者大量请求响应失败时,我们需要第一时间知道,因此我使用了zabbix通过内置的运行状态模块进行一系列的监控

一.zabbix agent

1. 查看当前Nginx是否已安装内置性能统计模块

注:若是没有就选择源码编译

2.开启运行状态模块

nginx -t

systemctl restart nginx

浏览器访问运行状态页面

Active connections:1
server accepts handled requests 1 1 1

Reading:0 Writing:1 Waiting:0


Active connections:当前活动的客户端连接数有多少(包括在等待阶段的)

accepts:接受的客户端连接总数
handled:已处理的连接总数(通常与accepts数量一致,但存在某些资源限制的情况
导致数量不一致)
requests:客户端请求总数(包括接受请求或拒绝请求的)

Reading:nginxi正在读取请求标头的当前连接数。
Writing:nginx正在将响应写回到客户端的当前连接数。

Waiting:当前等待请求的空闲客户端连接数。

3.编写监控脚本并安装zabbix agent

3.1.安装agent2

[root@zabbixnginx local]# yum install https://mirrors.huaweicloud.com/zabbix/zabbix/6.2/rhel/8/x86_64/zabbix-release-6.2-3.el8.noarch.rpm
[root@zabbixnginx local]# sed -i 's#https://repo.zabbix.com#https://mirrors.huaweicloud.com/zabbix#' /etc/yum.repos.d/zabbix.repo[root@zabbixnginx local]# systemctl restart zabbix-agent2
[root@zabbixnginx local]# systemctl enable zabbix-agent2

3.2.编写监控脚本

mkdir /etc/zabbix/script  //脚本存放的默认位置
vim /etc/zabbix/script/ngx_status.sh
#!/bin/bash#定义Nginx status页面
ngx_status="http://192.168.32.190/status"#判断status页面是否存活
ngx_status_code() {http_code=`curl -o /dev/null -s -w %{http_code} ${ngx_status}`if [ ${http_code} == "200" ];thenreturn 1elseecho "Nginx status is not running."fi
}#获取当前活动的客户端连接数
active() {ngx_status_code || curl -s ${ngx_status} | grep "Active" | awk '{print $NF}'
}#获取接收客户端连接的总数量
accepts() {ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $1}'
}#获取已处理的连接总数量
handled() {ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $2}'
}#获取客户端请求总数量
requests() {ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $3}'
}#获取正在读取请求标头的当前连接数量
reading() {ngx_status_code || curl -s ${ngx_status} | grep "Reading" | awk '{print $2}'
}#获取正在将响应写回到客户端的当前连接数量
writing() {ngx_status_code || curl -s ${ngx_status} | grep "Writing" | awk '{print $2}'
}#获取当前正在等待响应的客户端连接数量
waiting() {ngx_status_code || curl -s ${ngx_status} | grep "Waiting" | awk '{print $2}'
}#使用位置变量控制脚本输出
case $1 inactive)active;;accepts)accepts;;handled)handled;;requests)requests;;reading)reading;;writing)writing;;waiting)waiting;;*)echo "Unknown options"
esac

4.配置zabbix agent

[root@zabbixnginx zabbix]# cp /etc/zabbix/zabbix_agent2.conf{,.bak}
[root@zabbixnginx zabbix]# vim /etc/zabbix/zabbix_agent2.conf

注意:要开启允许访问自定义脚本或者外部命令

5.配置自定义监控项

[root@zabbixnginx zabbix]# vim /etc/zabbix/zabbix_agent2.d/userparameter_nginx.conf
添加以下内容
UserParameter=nginx.active,bash /etc/zabbix/script/ngx_status.sh active
UserParameter=nginx.accepts,bash /etc/zabbix/script/ngx_status.sh accepts
UserParameter=nginx.handled,bash /etc/zabbix/script/ngx_status.sh handled
UserParameter=nginx.requests,bash /etc/zabbix/script/ngx_status.sh requests
UserParameter=nginx.reading,bash /etc/zabbix/script/ngx_status.sh reading
UserParameter=nginx.writing,bash /etc/zabbix/script/ngx_status.sh writing
UserParameter=nginx.waiting,bash /etc/zabbix/script/ngx_status.sh waiting[root@zabbixnginx zabbix]# systemctl restart zabbix-agent2

 6.zabbix主机使用zabbix——get进行测试

[root@node1 ~]# zabbix_get -s 192.168.32.190 -k nginx.active
1

二.zabbix server声音告警

2.1.进入zabbix web界面创建模版

2.2.创建主机,添加自定义的监控项

在模版中添加监控项,若是在主机中添加监控项,可用性有局限

声音告警不需要创建触发器的动作,只需要开启声音设置,同时创建触发器即可

2.3.创建触发器,开启声音告警

2.3.查看告警情况

同时发出了声音,注意没有在主机中创建触发器,则需要主机关联模版

2.4.压力测试工具

哈哈哈哈,突然想到了这个工具,就顺手用了一下,跟本次实验无多大关系

吞吐率:服务器并发处理能力的量化描述,指某个并发用户数下单位时间内处理的请求数
并发连接数:某个时刻服务器所接受的请求数目
并发用户数:注意一个用户也可能产生多个连接数,也就是会话
用户平均请求等待时间:处理完所有请求所花费的时间/(总请求数/并发用户数)
服务器平均请求等待时间:处理完所有请求数所花费的时间/总请求数
[root@zabbixnginx ~]# yum whatprovides ab
[root@zabbixnginx ~]# yum install httpd-tools-2.4.51-21.oe2203.x86_64
[root@zabbixnginx ~]# ab
[root@zabbixnginx ~]# ab -n 100 -c 50 http://192.168.32.190/status

三.zabbix server 邮件告警

3.1.配置mail媒介

3.2.测试媒介是否成功设置

 

3.3.设置报警媒介

3.4.创建触发器(已创建),创建触发器动作 ,并启用

4.5.验证邮件告警

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/70655.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当Axure遇见DeepSeek:设计工具的革命性进化

从传统的平面设计软件到如今的交互原型工具,设计工具经历了多次革命性的进化。然而,随着人工智能技术的不断发展,设计工具正面临又一次重大的变革。Axure,作为设计界知名的原型设计工具,以其强大的功能和灵活的操作性&…

麒麟系统编译安装git

有些版本的麒麟系统上没有git,官网又找不到现成的安装包,只好下载编译进行编译安装 1、下载源码 下载源码,地址:https://git-scm.com/downloads/linux。 2、解压 直接鼠标右键解压,或者用命令行: tar …

【Matlab优化算法-第15期】基于NSGA-II算法的铁路物流园区功能区布局优化

基于NSGA-II算法的铁路物流园区功能区布局优化 一、前言 铁路物流园区的合理布局对于提高物流效率、降低运营成本具有重要意义。随着铁路物流的快速发展,传统的铁路货场需要升级为综合物流园区,以满足多式联运和综合物流服务的需求。本文将介绍一种基于…

SpringSecurity高级用法

SpringSecurity的高级用法,包括自定义loginUrl携带参数,自定义认证校验逻辑,自定义权限校验逻辑。 示例项目 https://github.com/qihaiyan/springcamp/tree/master/spring-advanced-security 一、概述 在项目实际开发过程中,Spr…

【韩顺平linux】部分上课笔记整理

整理一下一些韩顺平老师上课时候的笔记 课程:【小白入门 通俗易懂】韩顺平 一周学会Linux linux环境:使用阿里云服务器 笔记参考 : [学习笔记]2021韩顺平一周学会Linux 一、自定义函数 基本语法 应用实例: 计算两个参数的和…

k8s证书过期怎么更新?

在 Kubernetes 集群中,证书过期可能导致集群不可用,尤其是 API Server、Controller Manager、Scheduler 等组件所使用的证书。为了恢复集群的正常运行,您需要更新这些证书。以下是更新 Kubernetes 证书的基本步骤: 1. 检查证书状…

DeepSeek-R1 本地电脑部署 Windows系统 【轻松简易】

本文分享在自己的本地电脑部署 DeepSeek,而且轻松简易,快速上手。 这里借助Ollama工具,在Windows系统中进行大模型部署~ 1、安装Ollama 来到官网地址:Download Ollama on macOS 点击“Download for Windows”下载安装包&#x…

新站如何快速被搜索引擎收录?

本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/106.html 新站快速被搜索引擎收录是一个综合性的任务,涉及多个方面的优化工作。以下是一些关键步骤和策略,有助于新站快速被搜索引擎收录: 一、提交网站…

推荐一款 免费的SSL,自动续期

支持自动续期 、泛域名 、可视化所有证书时效性 、可配置CDN 的一款工具。免费5个泛域名和1个自动更新。 链接 支持:nginx、通配符证书、七牛云、腾讯云、阿里云、CDN、OSS、LB(负载均衡) 执行自动部署脚本 提示系统过缺少crontab 安装cro…

HiveQL命令(三)- Hive函数

文章目录 前言一、Hive内置函数1. 数值函数2. 字符串函数3. 日期与时间函数4. 条件函数5. 聚合函数6. 集合函数7. 类型转换函数8. 表生成函数 (UDTF) 前言 在大数据处理和分析的过程中,数据的转换和处理是至关重要的环节。Apache Hive作为一种流行的数据仓库工具&a…

UE5--浅析委托原理(Delegate)

委托概述 委托是一种用于事件处理的机制。通过使用委托,可以将一个或多个函数绑定到一个事件上,在事件触发时自动调用这些函数。代理也叫做委托,比如:跳,跑,开枪,伤害等响应,就是注…

ABP框架9——自定义拦截器的实现与使用

一、AOP编程 AOP定义:面向切片编程,着重强调功能,将功能从业务逻辑分离出来。AOP使用场景:处理通用的、与业务逻辑无关的功能(如日志记录、性能监控、事务管理等)拦截器:拦截方法调用并添加额外的行为,比如…

【JavaScript】this 指向由入门到精通

this 的概念 this 在JavaScript 及其其他面向对象的编程语言中,存在的目的是为了提供一种在对象方法中引用当前对象的方式。 它为方法提供了对当前实例的引用,使得方法能够访问或者修改实例的成员变量。 注意点: this 的绑定和定位的位置…

JavaScript完整版知识体系(持续更新~~)

一、Variables变量 (1)变量的声明方式。 在 JavaScript 中,let、const 和 var 是用于声明变量的关键字,但它们在作用域、可变性、以及提升(Hoisting)行为上有所不同。下面是对这三者的详细解释: 1. var: 作用域&…

OpenStack-Train版-Allinone自动化部署脚本

一、环境准备 操作系统:CentOS 7 或以上版本 建议配置: CPU:8 核或以上 内存:16 GB 或以上 磁盘:500 GB 或以上 网络配置: 确保虚拟机已配置静态 IP 地址 确保虚拟机可以正常访问外部网络 二、自动…

【0403】Postgres内核 检查(procArray )给定 db 是否有其他 backend process 正在运行

文章目录 1. 给定 db 是否有其他 backend 正在运行1.1 获取 allPgXact[] 索引1.1.1 MyProc 中 databaseId 初始化实现1.2 allProcs[] 中各 databaseId 判断1. 给定 db 是否有其他 backend 正在运行 CREATE DATABASE 语句创建用户指定 数据库名(database-name)时候, 会通过 …

git fetch和git pull 的区别

git pull 实际上就是 fetch merge 的缩写, git pull 唯一关注的是提交最终合并到哪里(也就是为 git fetch 所提供的 destination 参数) git fetch 从远程仓库下载本地仓库中缺失的提交记录,并更新远程分支指针 git pull抓取更新再合并到本地分支,相当于…

详解在Pytest中忽略测试目录的三种方法

关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 你是否曾因无关或过时的代码导致测试失败? 这可能会增加调试和故障排除…

SQL Server查询计划操作符(7.3)——查询计划相关操作符(6)

7.3. 查询计划相关操作符 48)Key Lookup:该操作符对一个有簇索引的表进行书签查找。参数列包含簇索引的名字和用于查找簇索引中数据行的簇键。该操作符总是伴随一个Nested Loops操作符。如果其参数列中出现WITH PREFETCH子句,则查询处理器已决定使用异步预取(预读,read-ah…

Python Pandas(5):Pandas Excel 文件操作

Pandas 提供了丰富的 Excel 文件操作功能,帮助我们方便地读取和写入 .xls 和 .xlsx 文件,支持多表单、索引、列选择等复杂操作,是数据分析中必备的工具。 操作方法说明读取 Excel 文件pd.read_excel()读取 Excel 文件,返回 DataF…