开启状态统计
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的状态统计,如下图:
php-fpm status详解
pool
- fpm池子名称,大多数为wwwprocess manager
– 进程管理方式,值:static, dynamicstart 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
,直接导入即可!
效果如下图:
没有监控到进程?
zabbix有时候会在监控进程出现不太准的情况,比如我这个机器的php。配置了proc.num[php-fpm,,,]
这个key,但是在zabbix-server死活都取不到值,如图:
但是在被监控机器里,进程是明明存在的:
这特么的是为啥?
这就是因为proc.num[进程名,,,]
里面的进程名是在/proc/进程PID/status
里的name一栏获得的,比如我这个机器的php情况:
name里写的是php-fpm56,所以key也要改成proc.num[php-fpm56,,,]
,这个时候在zabbix-server就成功取值了,如图:
注意!/proc/进程PID/status
的name会被截断为15个字符。所以在配置时要事前检查一下。