【运维知识进阶篇】zabbix5.0稳定版详解3(监控Nginx+PHP服务状态信息)

news/2024/10/17 18:20:10/

这篇文章继续给大家介绍zabbix监控,监控Nginx、PHP等服务,其实非常简单,难点在于如何去取这个值,包括监控业务,难点在于思路是否清晰,思维是否活跃,如何去进行判断是否有这个业务,并且业务正常运行。

目录

监控Nginx服务状态信息

1、开启Nginx状态模块

2、配置监控项 

3、创建模板

4、用默认键值添加Nginx-status端口监控项,并配置触发器

5、基于模板创建图形

5、模板创建完毕后关联被监控的主机

监控PHP服务状态信息

1、安装PHP服务配置

2、配置PHP状态信息

3、修改Nginx配置文件

4、自定义监控项

5、创建自定义PHP模板(监控项+触发器+图形)

6、关联模板到监控主机

7、测试PHP访问


监控Nginx服务状态信息

通过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 连接数随着来自客户端的请求增加而增加时,可能需要考虑优化配置以确保足够的性能水平和稳定性。

1、开启Nginx状态模块

[root@Web01 ~]# cat /etc/nginx/conf.d/status.conf
server {listen 88;location /nginx_status {stub_status;}
}
[root@Web01 ~]# systemctl restart nginx

2、配置监控项 

[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

3、创建模板

基于模板创建监控项,也可以先添加监控项在复制到模板

其他六项也同理,不再截图

4、用默认键值添加Nginx-status端口监控项,并配置触发器

配置触发器

5、基于模板创建图形

5、模板创建完毕后关联被监控的主机

Web02同理

监控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模板(监控项+触发器+图形)

1)基于模板添加监控项

 

依次添加其他配置项,除自定义的外再多添加个端口监控,zabbix自带的

2)基于模板配置触发器

3分钟之内受到限制次数的最大数等于5则报警 

3)基于模板配置图形

 

6、关联模板到监控主机

7、测试PHP访问

[root@Web02 ~]# for i in `seq 100`;do ab -n2000 -c20 127.0.0.1:88/status;done

发现fpm连接数上涨 


我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!


http://www.ppmy.cn/news/479513.html

相关文章

前端Vue自定义服务说明弹窗弹框 自下而上底部弹框

前端Vue自定义服务说明弹窗弹框 自下而上底部弹框&#xff0c; 请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13108 效果图如下&#xff1a; # cc-serviceDialog 自定义服务说明弹窗 自下而上 底部弹窗 #### 使用方法 使用方法 <!-- 服务…

深度学习代码中的希腊字母对应

代码中的希腊字母对应 论文和代码中的常见希腊字母读音&#xff0c;方便写代码时候的命名和文章中的参数对应起来 Α α&#xff1a;阿尔法 Alpha   Β β&#xff1a;贝塔 Beta   Γ γ&#xff1a;伽玛 Gamma   Δ δ&#xff1a;德尔塔 Delte Ε ε&#xff1a;艾…

Matlab画图,希腊字母怎么敲出来?

Matlab画图&#xff0c;希腊字母怎么敲出来&#xff1f; 在希腊字母开头加斜杠 “\” \alpha \beta \gamma \delta \mu \sigma希腊字母对应的英文及读音如下 α Α alpha /alpha/ h表示送气音&#xff0c;在古希腊语中尚没有音位/f/&#xff0c;所以/pha/的发音类似普通话…

达人篇:3.1.3)FAI 首件检验

本章目的&#xff1a;了解FAI。 1&#xff09;定义&#xff1a; FAI: First Article Inspection Report . 汉语译作:首件全尺寸检验报告. 2&#xff09;目的 制作FAI报告是为了检查成型后的产品尺寸是否在设计公差之内。 3&#xff09;步骤 4)FAI检测流程图&#xff1a; 5)FA…

路由器无服务器无响应是怎么回事啊,wifi服务器无响应怎么解决(图文)

摘 要 【导读】wifi服务器无响应怎么解决&#xff0c;下面就是路由器之家整理的网络知识百科&#xff0c;来看看吧&#xff01;大家好&#xff0c;我是191路由器网小编&#xff0c;上述问题将由我为大家讲解。wifi服务器无响应解决的方法是&#xff1a;1、请登录WIFI后 亲,以下…

概率论与数理统计学习笔记——6.4正态总体统计量的分布

标准正态分布函数Φ(x)很重要&#xff0c;所以用Φ(x)来代表这个函数&#xff0c;也就是说如果问你标准正态函数是多少&#xff0c;你就可以说是Φ(x)。 定理6.4.1 定理6.4.2 定理6.4.3 定理6.4.4 定理6.4.1: 定理6.4.2&#xff1a; 注意&#xff0c;样本方差不是均值方…

ajax failed啥意思,使用jQuery在失败时重试AJAX请求的最佳方法是什么?

拉丁的传说 一种方法是使用包装函数&#xff1a;(function runAjax(retries, delay){ delay delay || 1000; $.ajax({ type : GET, url : , dataType : json, contentType : application/json }) .fail(function(){ console.log(retries…