您现在的位置是:首页 > 技术教程 正文

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

admin 阅读: 2024-03-15
后台-插件-广告管理-内容页头部广告(手机)

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

目录

监控Nginx服务状态信息

一、开启Nginx状态模块

二、配置监控项 

三、创建模板

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

五、基于模板创建图形

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

监控PHP服务状态信息

一、安装PHP服务配置

二、配置PHP状态信息

三、修改Nginx配置文件

四、自定义监控项

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

六、关联模板到监控主机

七、测试PHP访问


监控Nginx服务状态信息

通过Nginx监控模块,监控Nginx的7种状态

  1. Nginx 的状态模块展示了七种不同的状态(四种计数器和三种状态)。以下是这七种状态的含义:
  2. 1. active:当前 Nginx 正在处理的连接数,包括等待请求处理或正在响应请求的连接数。
  3. 2. accepts:Nginx 启动后已经接受的连接总数。
  4. 3. handled:Nginx 工作进程已成功处理的连接总数。与 accepts 计数器不同,此计数器可能会多个小于 accepts 数量,在某些情况下,客户端可能已经断开了连接而无法正常处理。
  5. 4. requests:已经接收到、处理并响应的请求数量,该值通常应与 handled 值相等。
  6. 5. reading:当前正在读取客户端请求头部字段的连接数。
  7. 6. writing:当前正在向客户端发送响应数据的连接数。
  8. 7. waiting:空闲 keep-alive 连接,既没有读也没有写。可以处理下一个请求的连接。
  9. 通过理解这些状态可以帮助我们了解 Nginx 正在处理哪些连接,并且在调试和优化性能时非常有用。 当 active 连接数随着来自客户端的请求增加而增加时,可能需要考虑优化配置以确保足够的性能水平和稳定性。

一、开启Nginx状态模块

  1. [root@Web01 ~]# cat /etc/nginx/conf.d/status.conf
  2. server {
  3. listen 88;
  4. location /nginx_status {
  5. stub_status;
  6. }
  7. }
  8. [root@Web01 ~]# systemctl restart nginx

bb65e098ee4b4137a5f25c8f6abb63b3.png

二、配置监控项 

  1. [root@Web01 ~]# curl -s 127.0.0.1:88/nginx_status
  2. Active connections: 1
  3. server accepts handled requests
  4. 4 4 3
  5. Reading: 0 Writing: 1 Waiting: 0

用awk以此取值,并设置为key

  1. [root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx.conf
  2. UserParameter=nginx.connections,curl -s 127.0.0.1:88/nginx_status|awk 'NR==1{print $NF}'
  3. UserParameter=nginx.accepts,curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $1}'
  4. UserParameter=nginx.handled,curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $2}'
  5. UserParameter=nginx.requests,curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $3}'
  6. UserParameter=nginx.Reading,curl -s 127.0.0.1:88/nginx_status|awk 'NR==4{print $2}'
  7. UserParameter=nginx.Writing,curl -s 127.0.0.1:88/nginx_status|awk 'NR==4{print $4}'
  8. UserParameter=nginx.Waiting,curl -s 127.0.0.1:88/nginx_status|awk 'NR==4{print $6}'
  9. [root@Web01 ~]# systemctl restart zabbix-agent.service

 测试取值

  1. [root@Zabbix ~]# zabbix_get -s 172.16.1.7 -k nginx.connections
  2. 1

三、创建模板

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

cbf19316a9e7406da1afd7484e17dcfe.png

a5926b59b2fd4f419ed16d3730f85f7c.png

0d48b15163aa41d49535aabcfdeafa54.png

91844152041b424f9fabb93168d1b6fa.png

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

aca1a429a11c4813add01def118a6f11.png

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

2afe8df3c7404966b46a25d34c4d6e1e.png

配置触发器

644f35f2b8684376ae4a2b92bf59453d.png

1d2f92df4f994bfbbb9fb78b7a162da3.png

五、基于模板创建图形

a0aee6f3589645e39564e44a131dbeca.png

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

0bb3b4f3748e4c0b822bcd631ac33bc8.png

453b8fe3e64d4f1e8cbdccc494d1e07f.pngWeb02同理

89081234d6194a4d9e35ea8513f26cce.png

监控PHP服务状态信息

一、安装PHP服务配置

上传PHP RPM包,安装

二、配置PHP状态信息

  1. [root@Web01 ~]# cat /etc/php-fpm.d/www.conf|grep pm.status_path
  2. pm.status_path = /status
  3. [root@Web01 ~]# systemctl restart php-fpm

三、修改Nginx配置文件

  1. [root@Web01 ~]# cat /etc/nginx/conf.d/status.conf
  2. server {
  3. listen 88;
  4. location /nginx_status {
  5. stub_status;
  6. }
  7. location /status {
  8. fastcgi_pass 127.0.0.1:9000;
  9. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  10. include fastcgi_params;
  11. }
  12. }
  13. [root@Web01 ~]# systemctl restart nginx
  14. [root@Web01 ~]# curl 127.0.0.1:88/status
  15. pool: www #pool的名称
  16. process manager: dynamic #进程管理方式,现今大多都为dynamic,不要使用static
  17. start time: 16/May/2023:21:30:31 +0800 #php-fpm上次启动的时间
  18. start since: 133 #php-fpm已运行了多少秒
  19. accepted conn: 1 #pool接受到的请求数
  20. listen queue: 0 #处于等待状态中的连接数,如果不为0,需要增加php-fpm进程数
  21. max listen queue: 0 #从php-fpm启动到现在处于等待连接的最大数量
  22. listen queue len: 128 #处于等待连接队列的套接字大小
  23. idle processes: 4 #处于空闲状态的进程数
  24. active processes: 1 #处于活动状态的进程数
  25. total processes: 5 #进程总数
  26. max active processes: 1 #从php-fpm启动到现在最多有几个进程处于活动状态
  27. max children reached: 0 #当php-fpm试图启动更多的children进程时,却达到了进程数的限制,达到一次记录一次,如果不为0,需要增加php-fpm pool进程的最大数
  28. slow requests: 0 #当启用了php-fpm slow-log功能时,如果出现了php-fpm慢请求,这个计数器会增加,一般不当的mysql查询会触发这个值

725b65ba293041be848ac65326486e95.png

四、自定义监控项

  1. [root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.d/php.conf
  2. UserParameter=fpm.accepted,curl -s 127.0.0.1:88/status|grep accepted|awk '{print $NF}'
  3. UserParameter=fpm.idle,curl -s 127.0.0.1:88/status|grep idle|awk '{print $NF}'
  4. UserParameter=fpm.active,curl -s 127.0.0.1:88/status|grep ^active|awk '{print $NF}'
  5. UserParameter=fpm.total,curl -s 127.0.0.1:88/status|grep total|awk '{print $NF}'
  6. UserParameter=fpm.children,curl -s 127.0.0.1:88/status|grep children|awk '{print $NF}'
  7. [root@Web01 ~]# systemctl restart zabbix-agent
  8. [root@Web01 ~]# zabbix_agentd -p | grep ^fpm #客户端查看能否正常获取值
  9. zabbix_agentd [7902]: Warning: EnableRemoteCommands parameter is deprecated, use AllowKey=system.run[*] or DenyKey=system.run[*] instead
  10. fpm.accepted [t|56]
  11. fpm.idle [t|5]
  12. fpm.active [t|1]
  13. fpm.total [t|6]
  14. fpm.children [t|0]
  15. [root@Zabbix ~]# zabbix_get -s 172.16.1.7 -k fpm.accepted #服务端查看能否正常获取客户端的值
  16. 62

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

1dbcee6275ef438990e8a44e3d7d6cb8.png

1)基于模板添加监控项

9a08b7561a23434385e7bd8029f56b33.png

aee9a6716e9f465fb7e93ae14b9c6ff8.png 8796fa95ff6a433f9c9c215904d14326.png

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

3301b24d526c4c7494d302710ac9a637.png

962f1ae15038411cb3595236335305c3.png

2)基于模板配置触发器

22717c2e320d4ab48f2e23613054ba65.png

3fad3dfc88a143609aa4ae95e401e195.png

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

9813197d38b9402b964ef96b47f7430b.png

0c6f927d554144cca22964ca5fd3d40d.png

3)基于模板配置图形

3dc6db410f1949dd8c9b3445f6e73aca.png

 bea4ccb746c74c40beb70f103657aa0e.png

六、关联模板到监控主机

858dc1149d044f7dbcd199df15a5afd2.png

88f9d0ad4b6442b99a11a51a312373b8.png

七、测试PHP访问

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

发现fpm连接数上涨 

ff25b6cb4c4f4e01876cc6bd842466e7.png


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

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜