自定义php-fpm zabbix监控模板
根据以上实验
在设备1、设备2基础上
设备1 192.168.70.10 zabbix-server
设备2 192.168.70.20 zabbix-agent
设备2:
安装php-rpm服务
[root@host-20]# yum -y install php-fpm
修改php-fpm配置文件开启状态页面功能(搜索:status)
[root@host-20]# vim /etc/php-fpm.d/www.conf
pm.status_path = /php_status #取消注释并改名php_status
启动php-fpm
[root@host-20]# systemctl start php-fpm
设置开机自启
[root@host-20]#systemctl enable php-fpm
修改nginx配置文件指定php配置 (Ctrl+v 下滑 出现可视块 取消注释)
[root@host-20]#vim /etc/nginx/conf.d/default.conf
……
location /php_status { #指定php页面 名称
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; #配置环境
include fastcgi_params;
}
重启nginx
[root@host-20]#systemctl restart nginx
测试访问php状态页面:http://192.168.70.20/php_status

php-fpm status状态值详解
pool:fpm池子名称,大多数为www
process manager:进程管理方式,值:static,dynamic or ondemand
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慢请求这个计数器会增加,一般不当的Mysql查 询会触发这个值
自定义phpfpm监控项 (监控以上状态)
[root@host-20 script]# vim/etc/zabbix/zabbix_agentd.d/phpfpm_status.conf UserParameter=phpfpm_status[*],/bin/bash /etc/zabbix/script/phpfpm_status.sh "$1"
上传脚本到/etc/zabbix/script路径并添加执行权限
[root@host-20 script]#/etc/zabbix/script
[root@host-20 script]#ls
phpfpm_status.sh
[root@host-20 script]# cat phpfpm_status.sh
#!/bin/bash
PHPFPM_COMMAND=$1
#根据监听不同端口进行调整
PHPFPM_PORT=80
start_since(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^start since:/ {print $NF}'
}
accepted_conn(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^accepted conn:/ {print $NF}'
}
listen_queue(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^listen queue:/ {print $NF}'
}
max_listen_queue(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^max listen queue:/ {print $NF}'
}
listen_queue_len(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^listen queue len:/ {print $NF}'
}
idle_processes(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^idle processes:/ {print $NF}'
}
active_processes(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^active processes:/ {print $NF}'
}
total_processes(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^total processes:/ {print $NF}'
}
max_active_processes(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^max active processes:/ {print $NF}'
}
max_children_reached(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^max children reached:/ {print $NF}'
}
slow_requests(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^slow requests:/ {print $NF}'
}
case $PHPFPM_COMMAND in
start_since)
start_since;
;;
accepted_conn)
accepted_conn;
;;
listen_queue)
listen_queue;
;;
max_listen_queue)
max_listen_queue;
;;
listen_queue_len)
listen_queue_len;
;;
idle_processes)
idle_processes;
;;
active_processes)
active_processes;
;;
total_processes)
total_processes;
;;
max_active_processes)
max_active_processes;
;;
max_children_reached)
max_children_reached;
;;
slow_requests)
slow_requests;
;;
*)
echo $"USAGE:$0 {start_since|accepted_conn|listen_queue|max_listen_queue|listen_queue_len|idle_processes|active_processes|total_processes|max_active_processes|max_children_reached}"
esac
脚本授权
[root@host-20 script]# chmod +x phpfpm_status.sh
重启zabbix agent服务监控项生效
[root@host-20 script]# systemctl restart zabbix-agent
开启php-rpm
[root@host-20 script]# systemctl restart php-fpm
查看服务端都
[root@host-20 script]# netstat -ntlp
设备1
解析
[root@zabbix-server]#vim /etc/hosts
192.168.70.20 host-20
zabbix server获取监控项数据
[root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[start_since] #php-fpm运行时 长
[root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[accepted_conn] #当前接收的连接数
[root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[listen_queue] #等待连接的请求数
[root@zabbix-server]# zabbix_get -s 192.168.0.111 -k phpfpm_status[max_listen_queue] #请求等待队列最高 的数量
[root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[listen_queue_len] #socket等待队列 长度
[root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[idle_processes] #空闲进程数量 `在这里插入代码片`
[root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[active_processes] #活跃进程数量
[root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[total_processes] #总进程数量
[root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[max_active_processes] #最大的活跃 进程数量
[root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[max_children_reached] #进程最大数 量限制的次数
[root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[slow_requests] #php-fpm慢 请求
配置 ——>模板——>创建模板

新创建模板内——>创建 应用集


在新模板——>创建 监控项

监控项名称:php-fpm运行时长
类型:客户端
键值:phpfpm_status[start_since](选择脚本里面的名称)
消息类型:数字(无正负) (涉及小数的为 浮点数)
更新间隔:1m (表示1分钟)
历史数据保留时长:7d(7天)
趋势存储时间:365d(365天)
应用集:PHP (我们新建的)
添加

脚本里面的其它数据依次添加
添加完成

完成