Prometheus监控PHP-FPM
一、概述
启用php-fpm状态功能
php-fpm
和nginx
一样内建了一个状态页,对于想了解php-fpm的状态以及监控php-fpm非常有帮助。为了后续的Prometheus监控,我们需要先了解php-fpm状态页是怎么回事。
在上一篇文章中,已经开启了php-fpm状态,链接 如下:
https://www.cnblogs.com/xiao987334176/p/12918413.html
pm.status_path = /fpm_status
nginx配置
上篇文章中,也对nginx默认主机添加了配置
location ~ ^/(fpm_status|health)$ { fastcgi_pass 192.168.31.34:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
访问php-fpm状态页面
http://192.168.31.34/fpm_status
效果如下:
php-fpm status详解
- pool-fpm 池子名称,大多数为www
- process manager – 进程管理方式,值:static, dynamic or ondemand. 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,缓慢请求的数量
二、安装php-fpm-exporter
封装docker
由于在dockerhub里面找的一些php-fpm-exporter都不好使,docker如何使用都没有说明。
所以我决定自己封装一个docker
下载php-fpm-exporter
https://github.com/bakins/php-fpm-exporter/releases
下载二进制文件
注意:不要下载zip文件,需要自己手动用go环境编译。对于go语言不熟悉的人,会编译失败。
所以,下载已经编译好的文件,是比较稳妥的办法。
创建目录/opt/php-fpm-exporter,结构如下:
./ ├── dockerfile ├── php-fpm-exporter.linux.amd64 └── run.sh
说明:
php-fpm-exporter.linux.amd64 就是我们下载的二进制文件
run.sh 就是php-fpm-exporter的启动命令。
dockerfile
FROM alpine:3.10 ADD php-fpm-exporter.linux.amd64 /php-fpm-exporter ADD run.sh / RUN chmod 755 /php-fpm-exporter /run.sh EXPOSE 9190 ENTRYPOINT [ "/run.sh" ]
run.sh
#!/bin/sh /php-fpm-exporter --addr 0.0.0.0:9190 --endpoint $endpoint
生成镜像
docker build -t php-fpm-exporter:v1 .
运行镜像
说明:这里只需要传入一个环境变量即可。确保url可以正常访问。
docker run -d -it --restart=always --name php-fpm-exporter -e endpoint=http://192.168.31.34/fpm_status -p 9190:9190 php-fpm-exporter:v1
访问metrics
http://192.168.31.34:9191/metrics
三、配置Prometheus
修改你的Prometheus配置文件,最后一行增加
- job_name: PHP-FPM static_configs: - targets: ['192.168.31.34:9190'] labels: instance: localhost
访问targets
确保状态为UP
四、grafana导入dashboards
模板地址如下:
https://grafana.com/dashboards/3901
等待一段时候后,效果如下:
本文参考链接:
https://blog.csdn.net/u012599988/article/details/103179946