您的位置 首页 php

Zabbix监控PHP-FPM操作实战

php-fpm和nginx一样内建了一个状态页,对于想了解php-fpm的状态以及监控php-fpm非常有帮助

  • 启用php-fpm状态功能

修改php-fpm配置文件,确保如下配置是打开状态

pm.status_path = /status,具体操作如下

在Zabbix-server端操作如下

cd /usr/local/php/etc

ls

sed -n ‘360p’ php-fpm.conf

vim php-fpm.conf +360

sed -n ‘360p’ php-fpm.conf

重启php-fpm服务

netstat -antup | grep php-fpm

pkill php-fpm

netstat -antup | grep php-fpm

/usr/local/php/sbin/php-fpm

netstat -antup | grep php-fpm

  • nginx配置php-fpm状态页面

配置php-fpm状态页面

vim /usr/local/nginx/conf/nginx.conf

cat /usr/local/nginx/conf/nginx.conf

1. worker_processes 1;

2. events {

3. worker_connections 1024;

4. }

5. http {

6. include mime.types;

7. default_type application/octet-stream;

8. sendfile on;

9. keepalive_timeout 65;

10. server {

11. listen 80;

12. server_name localhost;

13. location / {

14. root html;

15. index index.php index.html index.htm;

16. }

17. location = /nginx-status {

18. stub_status on;

19. access_log off;

20. }

21. location = /status { #添加此location

22. include fastcgi_params;

23. fastcgi_pass 127.0.0.1:9000;

24. fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;

25. }

26. location ~ \.php$ {

27. fastcgi_pass 127.0.0.1:9000;

28. fastcgi_index index.php;

29. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

30. include fastcgi_params;

31. }

32. }

33. }

重启动nginx服务

/usr/local/nginx/sbin/nginx -t

/usr/local/nginx/sbin/nginx -s reload

  • 状态页浏览器访问测试

php-fpm状态页比较个性化的一个地方是它可以带参数,可以带的参数有json、xml、html,使用zabbix或者nagios监控可以考虑使用xml或者默认方式。

具体含义说明如下

curl 127.0.0.1/status

1. pool: www #fpm进程池名称,大多数为www

2. process manager: dynamic #进程管理方式(static,dynamic or nodemand.dynamic)

3. start time: 12/Dec/2018:07:35:24 +0800 #启动日期

4. start since: 1137 #运行时长

5. accepted conn: 142 #当前FPM进程池接受的请求数

6. listen queue: 0 #请求等待队列,如果值不是0,那么要增加FPM的进程数

7. max listen queue: 0 #请求等待队列最高的数量

8. listen queue len: 128 #socket等待队列长度

9. idle processes: 1 #空闲进程数量

10. active processes: 1 #活跃进程数量

11. total processes: 2 #总进程数量

12. max active processes: 2 #最大的活跃进程数量(FPM启动开始算)

13. max children reached: 0 #达到最大子进程的次数,如果值不为0,那么需要调高最大进程数

14. slow requests: 0 #当启用了php-fpm的slow-log功能时,如果出现php-fpm慢请求这个计数器会增加,一般不当的MySQL查询会触发这个值

其他状态参数显示形式的数据(json,xml,html)

以xml的格式输出PHP-fpm状态页

curl 127.0.0.1/status?xml

1. <?xml version=”1.0″ ?>

2. <status>

3. <pool>www</pool>

4. <process-manager>dynamic</process-manager>

5. <start-time>1516953418</start-time>

6. <start-since>3731</start-since>

7. <accepted-conn>647</accepted-conn>

8. <listen-queue>0</listen-queue>

9. <max-listen-queue>4</max-listen-queue>

10. <listen-queue-len>128</listen-queue-len>

11. <idle-processes>2</idle-processes>

12. <active-processes>1</active-processes>

13. <total-processes>3</total-processes>

14. <max-active-processes>3</max-active-processes>

15. <max-children-reached>0</max-children-reached>

16. <slow-requests>0</slow-requests>

以json的格式输出PHP-fpm的状态页

curl 127.0.0.1/status?json

1. {“pool”:”www”,”process manager”:”dynamic”,”start time”:1516953418,”start since”:3736,”accepted conn”:648,”listen queue”:0,”max listen queue”:4,”listen queue len”:128,”idle processes”:2,”active processes”:1,”total processes”:3,”max active processes”:3,”max children reached”:0,”slow requests”:0}[root@Zabbix_Server nginx]#

以html的格式输出PHP-fpm的状态页

curl 127.0.0.1/status?html

1. <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “#34;>

2. <html xmlns=”#34; xml:lang=”en” lang=”en”>

3. <head><title>PHP-FPM Status Page</title></head>

4. <body>

5. <table>

6. <tr><th>pool</th><td>www</td></tr>

7. <tr><th>process manager</th><td>dynamic</td></tr>

8. <tr><th>start time</th><td>26/Jan/2018:02:56:58 -0500</td></tr>

9. <tr><th>start since</th><td>3748</td></tr>

10. <tr><th>accepted conn</th><td>650</td></tr>

11. <tr><th>listen queue</th><td>0</td></tr>

12. <tr><th>max listen queue</th><td>4</td></tr>

13. <tr><th>listen queue len</th><td>128</td></tr>

14. <tr><th>idle processes</th><td>2</td></tr>

15. <tr><th>active processes</th><td>1</td></tr>

16. <tr><th>total processes</th><td>3</td></tr>

17. <tr><th>max active processes</th><td>3</td></tr>

18. <tr><th>max children reached</th><td>0</td></tr>

19. <tr><th>slow requests</th><td>0</td></tr>

20. </table>

21. </body></html>

  • 在Zabbix agent端修改配置

在创建Zabbix的agent端键值配置文件的时候,我们可以考虑利用PHP-fpm状态页的不同输出格式来抓取数据。例如我们利用xml格式获取数据,操作如下:

查看xml格式PHP-fpm状态页数据

curl 127.0.0.1/status?xml

1. <?xml version=”1.0″ ?>

2. <status>

3. <pool>www</pool>

4. <process-manager>dynamic</process-manager>

5. <start-time>1516953418</start-time>

6. <start-since>3731</start-since>

7. <accepted-conn>647</accepted-conn>

8. <listen-queue>0</listen-queue>

9. <max-listen-queue>4</max-listen-queue>

10. <listen-queue-len>128</listen-queue-len>

11. <idle-processes>2</idle-processes>

12. <active-processes>1</active-processes>

13. <total-processes>3</total-processes>

14. <max-active-processes>3</max-active-processes>

15. <max-children-reached>0</max-children-reached>

16. <slow-requests>0</slow-requests>

创建zabbix监控的agent端键值配置文件

cd /etc/zabbix/zabbix_agentd.d/

vim userparameter_php-fpm.conf

cat userparameter_php-fpm.conf

1. UserParameter=php-fpm.status[*],/usr/bin/curl -s “#34; | grep “<$1>” | awk -F “[>|<]” ‘{print $$3}’

2.

3. 这里需要注意在脚本里如果写成$3的话,脚本会认识是一个变量,因此我们需要用$$3

重启动agent客户端

/etc/init.d/zabbix-agent restart

  • 进行键值配置文件测试

zabbix_get -s 192.168.200.69 -p 10050 -k “php-fpm.status[process-manager]”

zabbix_get -s 192.168.200.69 -p 10050 -k “php-fpm.status[start-since]”

zabbix_get -s 192.168.200.69 -p 10050 -k “php-fpm.status[active-processes]”

  • Zabbix图形界面导入我们的监控 模版 (上边有模板下载链接)

文章来源:智云一二三科技

文章标题:Zabbix监控PHP-FPM操作实战

文章地址:https://www.zhihuclub.com/77925.shtml

关于作者: 智云科技

热门文章

网站地图