使用zabbix去监控php-fpm

开启状态统计

nginx有一个status来获取nginx处理信息的总览情况,php-fpm也有一个状态统计。要打开这个状态统计,需要先打开php-fpm.conf,将pm.status_path = /status前面的注释去掉。

然后跑到nginx里,在nginx.conf里添加一个location:

1
2
3
4
5
6
7
   location ~ ^/(status|ping) {	
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
access_log off;
allow 127.0.0.1;
deny all;
}

然后重启一下php-fpm和nginx,在命令行里输入curl -s http://127.0.0.1:80/status,就会看到php的状态统计,如下图:
paradin

php-fpm status详解

pool - fpm池子名称,大多数为www
process manager – 进程管理方式,值:static, dynamic
start time– 启动日期,如果reload了php-fpm,时间会更新
start since – 运行时长
accepted conn – 当前池子接受的请求数
listen queue – 请求等待队列,如果这个值不为0,那么要增加FPM的进程数量
max listen queue – 请求等待队列最高的数量
listen queue len – socket等待队列长度
idle processes – 空闲进程数量
active processes – 活跃进程数量
total processes – 总进程数量
max active processes – 最大的活跃进程数量(FPM启动开始算)
max children reached - 大道进程最大数量限制的次数,如果这个数量不为0,那说明你的最大进程数量太小了,请改大一点。
slow requests – 启用了php-fpm slow-log,缓慢请求的数量

配置监控

跑到zabbix-agentd.conf里添加一个自定义监控项,如下:

1
UserParameter=php-fpm.status[*],/usr/bin/curl -s "http://127.0.0.1/php-fpm_status?xml" | grep "<$1>" | awk -F'>|<' '{ print $$3}'

然后重启一下zabbix-agent,模板就是https://gitee.com/careyjike_173/zabbix/tree/master/template 里的zbx_php-fpm_templates.xml,直接导入即可!

效果如下图:
paradin

没有监控到进程?

zabbix有时候会在监控进程出现不太准的情况,比如我这个机器的php。配置了proc.num[php-fpm,,,]这个key,但是在zabbix-server死活都取不到值,如图:
paradin

但是在被监控机器里,进程是明明存在的:
paradin

这特么的是为啥?

这就是因为proc.num[进程名,,,]里面的进程名是在/proc/进程PID/status里的name一栏获得的,比如我这个机器的php情况:
paradin

name里写的是php-fpm56,所以key也要改成proc.num[php-fpm56,,,],这个时候在zabbix-server就成功取值了,如图:
paradin

注意!/proc/进程PID/status的name会被截断为15个字符。所以在配置时要事前检查一下。

paradin

感谢您请我喝咖啡~O(∩_∩)O,如果要联系请直接发我邮箱chenx1242@163.com,我会回复你的
-------------本文结束感谢您的阅读-------------