开启 php-fpm 状态页面
vim /etc/php-fpm.d/www.conf
#配置状态页面访问路径
pm.status_path = /php_status
Nginx 代理 php-fpm 状态页面
location /php_status {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
配置 php-fpm 监控脚本
[root@php-fpm ~]# cat /etc/zabbix/zabbix_agentd.d/php-fpm-params.conf
UserParameter=php-fpm[*],/bin/bash /opt/script/php-fpm-check.sh "$1" "$2"
重启 zabbix-agent
[root@php-fpm ~]# systemctl restart zabbix-agent
监控脚本如下:
PS:这些脚本和模板也是我从GitHub上下载的
#!/bin/bash
##################################
# Zabbix monitoring script
#
# php-fpm:
# - anything available via FPM status page
#
##################################
# Contact:
# vincent.viallet@gmail.com
##################################
# ChangeLog:
# 20100922 VV initial creation
##################################
# Zabbix requested parameter
ZBX_REQ_DATA="$1"
ZBX_REQ_DATA_URL="$2"
# Nginx defaults
NGINX_STATUS_DEFAULT_URL="http://localhost:80/php-fpm_status"
WGET_BIN="/usr/bin/wget"
#
# Error handling:
# - need to be displayable in Zabbix (avoid NOT_SUPPORTED)
# - items need to be of type "float" (allow negative + float)
#
ERROR_NO_ACCESS_FILE="-0.9900"
ERROR_NO_ACCESS="-0.9901"
ERROR_WRONG_PARAM="-0.9902"
ERROR_DATA="-0.9903" # either can not connect / bad host / bad port
# Handle host and port if non-default
if [ ! -z "$ZBX_REQ_DATA_URL" ]; then
URL="$ZBX_REQ_DATA_URL"
else
URL="$NGINX_STATUS_DEFAULT_URL"
fi
# save the nginx stats in a variable for future parsing
NGINX_STATS=$($WGET_BIN -q $URL -O - 2> /dev/null)
# error during retrieve
if [ $? -ne 0 -o -z "$NGINX_STATS" ]; then
echo $ERROR_DATA
exit 1
fi
#
# Extract data from nginx stats
#
RESULT=$(echo "$NGINX_STATS" | awk 'match($0, "^'"$ZBX_REQ_DATA"':[[:space:]]+(.*)", a) { print a[1] }')
if [ $? -ne 0 -o -z "$RESULT" ]; then
echo $ERROR_WRONG_PARAM
exit 1
fi
echo $RESULT
exit 0
在 Zabbix server 上测试是否能拿到数据
[root@zabbix-server ~]# zabbix_get -s 192.168.1.253 -k php-fpm["idle processes",http://192.168.1.251/php_status]
4
测试时所需要的参数通过简单的阅读监控脚本都可以知道
导入 php-fpm 监控模板
我也上传了一份资源,可以免费下载我的。
导入模板
查看模板的监控项
为php-fpm监控模板配置宏(变量赋值)
为主机添加监控模板
查看监控状态