2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > php fpm 测试 zabbix4.2 监控PHP-FPM运行状态的数据

php fpm 测试 zabbix4.2 监控PHP-FPM运行状态的数据

时间:2019-10-01 18:16:41

相关推荐

php fpm 测试 zabbix4.2 监控PHP-FPM运行状态的数据

监控PHP-FPM

PHP-FPM监控原理

PHP-FPM程序提供了其运行状态的数据,通过修改配置文件即可获取数据。

PHP-FPM状态数据配置的开启

开启PHP-FPM状态数据配置,需要修改/etc/php-fpm.conf的配置

vim /etc/php-fpm.d/www.conf

pm.status_path = /phpfpmstatus

重启php服务

systemctl restart php-fpm.service

修改/etc/nginx/nginx.conf配置文件

通过Nginx访问PHP-FPM的状态。

vim /etc/nginx/conf.d/monitor.conf

server {

listen 127.0.0.1:80;

server_name 127.0.01;

location /nginxstatus {

stub_status on;

access_log off;

allow 127.0.0.1;

deny all;

}

location ~ ^/ (phpfpmstatus)$ {

include fastcgi_params;

fastcgi_pass 127.0.0.1:9000;

fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;

}

}

PHP-FPM监控脚本的实现

1.PHP-FPM监控脚本1

vim /etc/zabbix/monitor_phpfpm_status.sh

#!/bin/bash

source /etc/bashrc >/dev/null 2>&1

source /etc/profile >/dev/null 2>&1

PHPFPM_FILE=/var/log/zabbix/phpfpmstatus.tmp

CMD () {

curl http://127.0.0.1/phpfpmstatus >${PHPFPM_FILE} 2>&1

}

if [ -e ${PHPFPM_FILE} ];then

TIMEFROM='stat -c %Y ${TMP_MYSQL_STATUS}'

TIMENOW='data +%s'

if [ 'expr $TIMENOW - $TIMEFROM' -gt 60 ];then

rm -f ${PHPFPM_FILE}

CMD

fi

else

CMD

fi

pool() {

awk '/pool/ {print $NF}' ${PHPFPM_FILE}

}

process_manager() {

awk '/process manager/ {print $NF}' ${PHPFPM_FILE}

}

start() {

awk '/^start since:/ {print $NF}' ${PHPFPM_FILE}

}

accepted_conn() {

awk '/^accepted conn:/ {print $NF}' ${PHPFPM_FILE}

}

listen_queue() {

awk '/^listen queue:/ {print $NF}' ${PHPFPM_FILE}

}

max_listen_queue() {

awk '/^max listen queue:/ {print $NF}' ${PHPFPM_FILE}

}

listen_queue_len() {

awk '/^listen queue len:/ {print $NF}' ${PHPFPM_FILE}

}

idle_processes() {

awk '/^idle processes:/ {print $NF}' ${PHPFPM_FILE}

}

active_processes() {

awk '/^active processes:/ {print $NF}' ${PHPFPM_FILE}

}

total_processes() {

awk '/^total processes:/ {print $NF}' ${PHPFPM_FILE}

}

max_active_processes() {

awk '/^max active processes:/ {print $NF}' ${PHPFPM_FILE}

}

max_children_reached() {

awk '/^max children reached:/ {print $NF}' ${PHPFPM_FILE}

}

case "$1" in

pool)

pool

;;

process_manager)

process_manager

;;

start_since)

start_since

;;

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

;;

*)

echo "Usage: $0 {pool|process_manager|start_since|max_listen_queue|listen_queue_len|idle_processes|active_processes|total_processes|max_active_processes|max_children_reached}"

esac

PHP-FPM监控脚本2

#!/bin/bash

PHPFPM_COMMAND=$1

PHPFPM_PORT=80

start_since(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^start since:/ {print $NF}'

}

accepted_conn(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^accepted conn:/ {print $NF}'

}

listen_queue(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^listen queue:/ {print $NF}'

}

max_listen_queue(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^max listen queue:/ {print $NF}'

}

listen_queue_len(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^listen queue len:/ {print $NF}'

}

idle_processes(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^idle processes:/ {print $NF}'

}

active_processes(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^active processes:/ {print $NF}'

}

total_processes(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^total processes:/ {print $NF}'

}

max_active_processes(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^max active processes:/ {print $NF}'

}

max_children_reached(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^max children reached:/ {print $NF}'

}

slow_requests(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |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

添加执行权限

cd /etc/zabbix/

chmod +x monitor_phpfpm_status.sh

更改脚本的所有者和所属组

[root@localhost zabbix]# chown zabbix:zabbix monitor_phpfpm_status.sh

编辑zabbix_agentd.conf的配置文件

vim /etc/zabbix/zabbix_agentd.conf

UserParameter=php-fpm.status[*],/bin/bash /etc/zabbix/monitor_phpfpm_status.sh "$1"

重启zabbix-agent修改配置文件必须重启

编译安装客户端重启命令

systemctl restart zabbix_agentd

yum源安装客户端重启命令

systemctl restart zabbix-agent.service

php-fpm状态解释

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监控key的配置

zabbix-server端测试获取key

zabbix_get -s 192.168.6.134 -k php-fpm.status[listen_queue_len]

最新数据

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。