- A+
监控节点压缩zabbix目录并复制到Redis服务器上
安装zabbix-agent2客户端
cd /usr/local
tar -czvf zabbix.tar.gz zabbix-6.0.36 --exclude=/usr/local/zabbix/logs/*
scp zabbix.tar.gz 192.168.22.135:~
PHP安装zabbix-agent2客户端
tar xvf /root/zabbix.tar.gz -C /usr/local/
ln -s /usr/local/zabbix-6.0.36/ /usr/local/zabbix
vim /usr/local/zabbix/etc/zabbix_agent2.conf
Server=192.168.18.10
ServerActive=192.168.18.10
Hostname=Zabbix php
创建用户用授权
useradd -s /sbin/nologin -M zabbix
chown -R zabbix:zabbix /usr/local/zabbix*
配置开机自启动文件
cat >/usr/lib/systemd/system/zabbix-agent2.service <<EOF
[Unit]
Description=Zabbix Agent 2
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_agent2.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-agent2
Type=simple
Restart=on-failure
PIDFile=/usr/local/zabbix/logs/zabbix_agent2.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_agent2 -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
EOF
开机自启并启动Zabbix-agent2
systemctl daemon-reload
systemctl enable --now zabbix-agent2.service
PHP-FPM 状态页配置
启用 PHP-FPM 状态页,编辑 PHP-FPM 配置文件
vim /usr/local/php/etc/php-fpm.d/www.conf //把一下内容取消注释
pm.status_path = /status
ping.path = /ping
ping.response = pong
重启 PHP-FPM
systemctl restart php-fpm.service
编辑 Nginx 配置文件
vim /usr/local/nginx/conf/status
# php - fpm - status
server {
listen 9999; # 监听端口,可根据实际需求调整,和你现有 Nginx 状态页端口区分开或共用都行,只要不冲突
server_name _; # 域名,为无效域名,可匹配任意域名,优先级最低
# 定位 PHP - FPM 状态页请求
location /status {
# 转发请求到 PHP - FPM 处理
fastcgi_pass 127.0.0.1:9000; # 假设 PHP - FPM 监听 9000 端口,若用 Unix Socket 则改为 unix:/path/to/php - fpm.sock 形式
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
# 访问控制,可根据实际情况调整,比如只允许内网 IP 访问
allow 127.0.0.1;
allow 192.168.22.0/24; # 示例开放内网网段,根据实际环境改
deny all;
# 关闭访问日志(可选,减少日志冗余)
access_log off;
}
# 可选的 PHP - FPM 健康检查路径,简单返回 pong 表示存活
location /ping {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
access_log off;
}
}
重载 Nginx
systemctl reload nginx.service
验证状态页
curl http://localhost:9999/status
curl http://localhost:9999/ping

配置 Zabbix Agent 自定义监控项
创建 Zabbix Agent 配置文件
vim /usr/local/zabbix/etc/zabbix_agent2.d/plugins.d/php-fpm.conf
# 获取php-fpm状态信息
# UserParameter=phpfpm.pool[*],/usr/bin/curl -s "http://127.0.0.1:9999/status" | grep "$1" | awk '{print $2}'
UserParameter=phpfpm.pool[*],/usr/bin/curl -s "http://localhost:9999/status" | grep -E "^$1" | awk '{print $NF}'
# 获取当前正在处理请求的 PHP-FPM 进程数量
UserParameter=phpfpm.active_processes,/usr/bin/curl -s "http://localhost:9999/status" | grep "active processes" | awk '{print $NF}'
# 获取 PHP-FPM 进程池的总进程数量(包括活跃和空闲进程)
UserParameter=phpfpm.total_processes,/usr/bin/curl -s "http://localhost:9999/status" | grep "total processes" | awk '{print $NF}'
# 获取PHP-FPM慢请求数(从状态页提取)
UserParameter=phpfpm.slow_requests,/usr/bin/curl -s "http://localhost:9999/status" | grep "slow requests" | awk '{print $NF}'
# 获取php-fpm进程数
UserParameter=phpfpm.processes,pgrep -c php-fpm
重启 Zabbix Agent 使配置生效
systemctl restart zabbix-agent
测试自定义监控项
zabbix_get -s 192.168.22.135 -k phpfpm.pool[active\ processes]
active processes: 1
max active processes: 1
zabbix_get -s 192.168.22.135 -k phpfpm.processes
3

Zabbix Web 界面配置监控项
登录 Zabbix Web 界面 --> 进入主机配置页面(点击左侧菜单配置→主机,找到被监控的主机) --> 创建监控项(在主机配置页面,点击监控项→创建监控项)
按照以下信息填写监控项内容
名称 | 键值 | 类型 | 信息类型 | 更新间隔 |
PHP-FPM 活跃进程数 | phpfpm.pool[active processes] | Zabbix Agent | 数字(无符号) | 60s |
PHP-FPM 总进程数 | phpfpm.pool[total processes] | Zabbix Agent | 数字(无符号) | 60s |
PHP-FPM 慢请求数 | phpfpm.pool[slow requests] | Zabbix Agent | 数字(无符号) | 60s |
PHP-FPM 进程总数 | phpfpm.processes | Zabbix Agent | 数字(无符号) | 60s |




创建图形(可选)
在主机配置页面,点击图形→创建图形,输入图形名称,如 “PHP-FPM 进程监控,在 “监控项” 部分,点击添加,选择前面创建的监控项,添加到图形中,点击添加保存图形

为 PHP-FPM 监控项配置触发器
在主机配置页面,点击触发器→创建触发器
1. PHP-FPM 活跃进程数触发器(高负载告警)
- 名称:PHP-FPM 活跃进程数过高
- 表达式示例:{被监控主机名:phpfpm.pool[active processes].avg(5m)}>15
- 含义:当 5 分钟内活跃进程数平均值超过 15 时触发告警(阈值可根据实际业务调整)
- 严重性:平均
- 备注:表达式 --> 添加 --> 监控项(结果大于15) --> 选择 PHP-FPM 活跃进程数
示例:



2. PHP-FPM 总进程数触发器(异常波动告警)
- 名称:PHP-FPM 总进程数异常波动
- 表达式:{被监控主机名:phpfpm.pool[total processes].diff(10m)}>8
- 含义:10 分钟内总进程数变化超过 8 个时触发告警
- 严重性:警告
3. PHP-FPM 慢请求数触发器(性能告警)
- 名称:PHP-FPM 出现慢请求
- 表达式:{被监控主机名:phpfpm.pool[slow requests].last()}>0
- 含义:只要存在慢请求就触发告警
- 严重性:平均
- 进阶配置:可设置{被监控主机名:phpfpm.pool[slow requests].increase(5m)}>3,表示 5 分钟内慢请求数增加超过 3 个时告警
4. PHP-FPM 进程总数触发器(服务崩溃告警)
- 名称:PHP-FPM 进程崩溃
- 表达式:{被监控主机名:phpfpm.processes.last()}=0
- 含义:当 PHP-FPM 进程数为 0 时触发告警
- 严重性:高
- 恢复表达式:{被监控主机名:phpfpm.processes.last()}>0
- 含义:当进程数恢复为正数时,告警自动恢复
查看 PHP-FPM 相关指标的示例
1. 查看 PHP-FPM 活跃进程数
活跃进程数指的是当前正在处理 HTTP 请求的 PHP-FPM worker 进程数量
若活跃进程数长期接近或达到 pm.max_children
(PHP-FPM 配置的最大进程数),说明服务器处于高负载状态,可能需要扩容或优化代码
若活跃进程数持续为 0,可能表示 PHP-FPM 服务未运行或网站无访问流量
zabbix_get -s 192.168.22.135 -k phpfpm.active_processes
- 预期输出:纯数值(如
1
),表示当前活跃的 PHP-FPM 进程数量。
2. 查看 PHP-FPM 总进程数
仅统计 worker 进程(处理 HTTP 请求的子进程),包括活跃和空闲进程
反映 PHP-FPM 进程池的负载状态,判断是否需要调整 pm.max_children
参数
zabbix_get -s 192.168.22.135 -k phpfpm.total_processes
- 预期输出:纯数值(如
2
),表示 PHP-FPM 所有进程的总数(活跃 + 空闲)。
3. 查看 PHP-FPM 慢请求数
慢请求数指的是执行时间超过 request_slowlog_timeout
配置的请求数量
慢请求会阻塞 PHP-FPM 进程,导致服务响应变慢甚至不可用。通过监控慢请求数,可及时发现性能瓶颈并优化代码
zabbix_get -s 192.168.22.135 -k phpfpm.slow_requests
- 预期输出:纯数值(如
0
),表示处理时间超过request_slowlog_timeout
配置的请求数量。
4. 查看 PHP-FPM 进程总数(通过进程 ID 统计)
包括 master 进程(1 个,负责管理 worker 进程)和 所有 worker 进程
验证 PHP-FPM 服务是否正常运行,检测进程崩溃或异常创建的情况
zabbix_get -s 192.168.22.135 -k phpfpm.processes