Zabbix5.0版本(监控Nginx+PHP服务状态信息)
目录
1.监控Nginx服务状态信息
(1)通过Nginx监控模块,监控Nginx的7种状态
(2)开启Nginx状态模块
(3)配置监控项
(4)创建模板
(5)用默认键值添加Nginx-status端口监控项,并配置触发器
(6)基于模板创建图形
(7)模板创建完毕后关联被监控的主机
2.监控PHP服务状态信息
(1)安装PHP服务配置
(2)配置PHP状态信息
(3)修改Nginx配置文件
(4)自定义监控项
(5)创建自定义PHP模板
(6)关联模板到监控主机
(7)测试PHP访问
这篇文章继续给大家介绍zabbix监控,监控Nginx、PHP等服务,其实非常简单,难点在于如何去取这个值,包括监控业务,难点在于思路是否清晰,思维是否活跃,如何去进行判断是否有这个业务,并且业务正常运行。
1.监控Nginx服务状态信息
(1)通过Nginx监控模块,监控Nginx的7种状态
Nginx 的状态模块展示了七种不同的状态(四种计数器和三种状态)。以下是这七种状态的含义:
1. active:当前 Nginx 正在处理的连接数,包括等待请求处理或正在响应请求的连接数。
2. accepts:Nginx 启动后已经接受的连接总数。
3. handled:Nginx 工作进程已成功处理的连接总数。与 accepts 计数器不同,此计数器可能会多个小于 accepts 数量,在某些情况下,客户端可能已经断开了连接而无法正常处理。
4. requests:已经接收到、处理并响应的请求数量,该值通常应与 handled 值相等。
5. reading:当前正在读取客户端请求头部字段的连接数。
6. writing:当前正在向客户端发送响应数据的连接数。
7. waiting:空闲 keep-alive 连接,既没有读也没有写。可以处理下一个请求的连接。
通过理解这些状态可以帮助我们了解 Nginx 正在处理哪些连接,并且在调试和优化性能时非常有用。 当 active 连接数随着来自客户端的请求增加而增加时,可能需要考虑优化配置以确保足够的性能水平和稳定性。
(2)开启Nginx状态模块
[root@Web01 ~]# cat /etc/nginx/conf.d/status.conf
server {listen 88;location /nginx_status {stub_status;}
}
[root@Web01 ~]# systemctl restart nginx
(3)配置监控项
[root@Web01 ~]# curl -s 127.0.0.1:88/nginx_status
Active connections: 1
server accepts handled requests4 4 3
Reading: 0 Writing: 1 Waiting: 0
用awk以此取值,并设置为key
[root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx.conf
UserParameter=nginx.connections,curl -s 127.0.0.1:88/nginx_status|awk 'NR==1{print $NF}'
UserParameter=nginx.accepts,curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $1}'
UserParameter=nginx.handled,curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $2}'
UserParameter=nginx.requests,curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $3}'
UserParameter=nginx.Reading,curl -s 127.0.0.1:88/nginx_status|awk 'NR==4{print $2}'
UserParameter=nginx.Writing,curl -s 127.0.0.1:88/nginx_status|awk 'NR==4{print $4}'
UserParameter=nginx.Waiting,curl -s 127.0.0.1:88/nginx_status|awk 'NR==4{print $6}'
[root@Web01 ~]# systemctl restart zabbix-agent.service
测试取值
[root@Zabbix ~]# zabbix_get -s 172.16.1.7 -k nginx.connections
1
(4)创建模板
基于模板创建监控项,也可以先添加监控项在复制到模板
其他六项也同理,不再截图
(5)用默认键值添加Nginx-status端口监控项,并配置触发器
配置触发器
(6)基于模板创建图形
(7)模板创建完毕后关联被监控的主机
Web02同理
2.监控PHP服务状态信息
(1)安装PHP服务配置
上传PHP RPM包,安装
(2)配置PHP状态信息
[root@Web01 ~]# cat /etc/php-fpm.d/www.conf|grep pm.status_path
pm.status_path = /status
[root@Web01 ~]# systemctl restart php-fpm
(3)修改Nginx配置文件
[root@Web01 ~]# cat /etc/nginx/conf.d/status.conf
server {listen 88;location /nginx_status {stub_status;}location /status {fastcgi_pass 127.0.0.1:9000;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}
[root@Web01 ~]# systemctl restart nginx
[root@Web01 ~]# curl 127.0.0.1:88/status
pool: www #pool的名称
process manager: dynamic #进程管理方式,现今大多都为dynamic,不要使用static
start time: 16/May/2023:21:30:31 +0800 #php-fpm上次启动的时间
start since: 133 #php-fpm已运行了多少秒
accepted conn: 1 #pool接受到的请求数
listen queue: 0 #处于等待状态中的连接数,如果不为0,需要增加php-fpm进程数
max listen queue: 0 #从php-fpm启动到现在处于等待连接的最大数量
listen queue len: 128 #处于等待连接队列的套接字大小
idle processes: 4 #处于空闲状态的进程数
active processes: 1 #处于活动状态的进程数
total processes: 5 #进程总数
max active processes: 1 #从php-fpm启动到现在最多有几个进程处于活动状态
max children reached: 0 #当php-fpm试图启动更多的children进程时,却达到了进程数的限制,达到一次记录一次,如果不为0,需要增加php-fpm pool进程的最大数
slow requests: 0 #当启用了php-fpm slow-log功能时,如果出现了php-fpm慢请求,这个计数器会增加,一般不当的mysql查询会触发这个值
(4)自定义监控项
[root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.d/php.conf
UserParameter=fpm.accepted,curl -s 127.0.0.1:88/status|grep accepted|awk '{print $NF}'
UserParameter=fpm.idle,curl -s 127.0.0.1:88/status|grep idle|awk '{print $NF}'
UserParameter=fpm.active,curl -s 127.0.0.1:88/status|grep ^active|awk '{print $NF}'
UserParameter=fpm.total,curl -s 127.0.0.1:88/status|grep total|awk '{print $NF}'
UserParameter=fpm.children,curl -s 127.0.0.1:88/status|grep children|awk '{print $NF}'
[root@Web01 ~]# systemctl restart zabbix-agent
[root@Web01 ~]# zabbix_agentd -p | grep ^fpm #客户端查看能否正常获取值
zabbix_agentd [7902]: Warning: EnableRemoteCommands parameter is deprecated, use AllowKey=system.run[*] or DenyKey=system.run[*] instead
fpm.accepted [t|56]
fpm.idle [t|5]
fpm.active [t|1]
fpm.total [t|6]
fpm.children [t|0][root@Zabbix ~]# zabbix_get -s 172.16.1.7 -k fpm.accepted #服务端查看能否正常获取客户端的值
62
(5)创建自定义PHP模板
基于模板添加监控项
依次添加其他配置项,除自定义的外再多添加个端口监控,zabbix自带的
基于模板配置触发器
3分钟之内受到限制次数的最大数等于5则报警
基于模板配置图形
(6)关联模板到监控主机
(7)测试PHP访问
[root@Web02 ~]# for i in `seq 100`;do ab -n2000 -c20 127.0.0.1:88/status;done
发现fpm连接数上涨
相关文章:

Zabbix5.0版本(监控Nginx+PHP服务状态信息)
目录 1.监控Nginx服务状态信息 (1)通过Nginx监控模块,监控Nginx的7种状态 (2)开启Nginx状态模块 (3)配置监控项 (4)创建模板 (5)用默认键值…...
C# 设计模式概况
什么是设计模式 大家熟知的GOF23种设计模式,源自《Design Patterns: Elements of Reusable Object-Oriented Software》一书,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著,四人组Gang of Four简称GOF。总结了在面向…...

Nginx 配置 SSL(HTTPS)详解
Nginx作为一款高性能的HTTP和反向代理服务器,自然支持SSL/TLS加密通信。本文将详细介绍如何在Nginx中配置SSL,实现HTTPS的访问。 随着互联网安全性的日益重要,HTTPS协议逐渐成为网站加密通信的标配。Nginx作为一款高性能的HTTP和反向代理服务…...

论文解读之Generative Dense Retrieval: Memory Can Be a Burden
本次论文解读,博主带来生成式稠密检索:记忆可能成为一种负担的论文分享 一、简介 生成式检索根据给定的查询,自回归地检索相关的文档标识符,在小规模的文档库中表现不错,通过使用模型参数记忆文档库,生成…...

RTC:实时时钟
RTC:实时时钟 1、实时时钟2、闹钟中断3、秒中断4、输出功能5、BKP的读写6、BKP的侵入事件 1、实时时钟 ①RTC.c #include "RTC.h"/*** brief:RTC初始化函数*/ RCC_PeriphCLKInitTypeDef RTCPeriphClkInit; //RTC时钟配置结构体 RTC_HandleT…...

mqtt python rtsp拉流图传测试
GitHub - robmarkcole/mqtt-camera-streamer: Stream images from a connected camera over MQTT, view using Streamlit, record to file and sqlite 用这个项目,按照readme配置,把config里面的ip配置成接收端的ip地址。 该装的包装完之后,…...

win32汇编环境,对话框程序中通过资源显示bmp图像
;运行效果 ;win32汇编环境,对话框程序中通过资源显示bmp图像 ;通过资源的方式,会把图像固定在exe文件里,会变大。通过读取文件的方式,没有固定在exe文件里,也可以随时换图像文件,所以exe文件较小 ;直接抄进RadAsm可编译…...
《探索人工智能的多元学派:符号主义、连接主义与行为主义》
在人工智能发展的进程中,不同学派从各自的角度诠释着智能的本质。其中符号主义、连接主义和行为主义学派占据着重要地位,它们以独特的方式推动着人工智能的发展。 符号主义学派:逻辑推理的核心 符号主义学派认为人工智能源于对逻辑符号的处…...
2024年终总结及计划
24年收获不少,早就想总结下,但是有的问题不想去思考,也不想去面对,就晚了几天,趁着加班总结反思下。 一、计划完成情况 1、生活 ①运动:继续坚持每周慢跑15公里,这是必须要做的。另外&#x…...

数据挖掘——关联规则挖掘
数据挖掘——关联数据挖掘 关联数据挖掘关联规则关联规则挖掘问题:具体挖掘过程Apriori 产生关联规则 关联数据挖掘 关联分析用于发现隐藏在大型数据集中的令人感兴趣的联系,所发现的模式通常用关联规则或频繁项集的形式表示。 关联规则反映一个事物与…...

JVM实战—9.线上FGC的几种案例
大纲 1.如何优化每秒十万QPS的社交APP的JVM性能(增加S区大小 优化内存碎片) 2.如何对垂直电商APP后台系统的FGC进行深度优化(定制JVM参数模版) 3.不合理设置JVM参数可能导致频繁FGC(优化反射的软引用被每次YGC回收) 4.线上系统每天数十次FGC导致频繁卡顿的优化(大对象问题…...
STM32-BKP备份寄存器RTC实时时钟
一、原理 Unix: 一些系统是使用32bit有符号数存储,实际范围为-2,147,483,648到2,147,483,647即~ 经过计算int32数据会在2038年1月19日溢出,可以看到转换的为北京时间。 STM32的时间戳为无符号时间戳。 我们需要把秒计数器的时间通过计算…...
HTML-文本标签
历史上,网页的主要功能是文本展示。所以,HTML 提供了大量的文本处理标签。 1.<div> <div>是一个通用标签,表示一个区块(division)。它没有语义,如果网页需要一个块级元素容器,又没…...

香橙派5plus单独编译并安装linux内核无法启动的原因分析与解决记录
1 说明 我依照官方手册编译单独编译linux内核,安装后重启出现内核启动失败的问题,编译和安装步骤如下:# 1. 克隆源码 git clone --depth1 -b orange-pi-6.1-rk35xx https://github.com/orangepi-xunlong/linux-orangepi# 2 配置源码 make rockchip_linu…...
嵌入式应用软件开发中C语言方向面试题
嵌入式应用软件开发中C语言方向面试题随笔 前言一、C语言基础二、嵌入式开发相关三、硬件相关知识五、实际编程问题前言 做嵌入式开发这么多年了,简单记录下C语言方向常见面试题,这里是应用软件方向的。 一、C语言基础 C语言的指针与数组的区别是什么?指针:指针是一个变量…...
linux 系统配置ip
最常见的配置方法是通过 DHCP 获取动态 IP 地址,或者手动配置一个静态 IP 地址。下面我将详细说明这两种常见的配置方法。 通过 DHCP 自动获取 IP 地址 如果你的开发板连接到网络(比如通过网线或者 Wi-Fi),并且网络环境支持 DHCP…...

低代码开发:开启企业数智化转型“快捷键”
一、低代码开发浪潮来袭,企业转型正当时 在当今数字化飞速发展的时代,低代码开发已如汹涌浪潮,席卷全球。从国际市场来看,诸多企业巨头纷纷布局低代码领域,像微软的 PowerApps、OutSystems 等平台,凭借强大…...
Tailwind CSS 实战:性能优化最佳实践
在现代网页开发中,性能优化就像是一场精心策划的马拉松。记得在一个电商项目中,我们通过一系列的性能优化措施,让页面加载时间减少了 60%,转化率提升了 25%。今天,我想和大家分享如何使用 Tailwind CSS 进行性能优化。 优化理念 性能优化就像是在打磨一块璞玉。我们需要通过各…...

[redux] useDispatch的两种用法
先重写2个方法先, 方便ts类型推导,如果你看不懂为什么这么写, 先看我这篇 [redux] ts声明useSelector和useDispatch-CSDN博客 export type RootState ReturnType<typeof store.getState>; export type AppDispatch typeof store.dispatch; export const useAppDispat…...

Postgresql 命令还原数据库
因为PgAdmin打不开,但是数据库已经安装成功了,这里借助Pg命令来还原数据库 C:\Program Files\PostgreSQL\15\bin\psql.exe #链接数据库 psql -U postgres -p 5432#创建数据库 CREATE DATABASE "数据库名称"WITHOWNER postgresENCODING UTF8…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...

Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...