php fpm 测试,zabbix4.2 监控PHP-FPM运行状态的数据
監(jiān)控PHP-FPM
PHP-FPM監(jiān)控原理
PHP-FPM程序提供了其運(yùn)行狀態(tài)的數(shù)據(jù),通過修改配置文件即可獲取數(shù)據(jù)。
PHP-FPM狀態(tài)數(shù)據(jù)配置的開啟
開啟PHP-FPM狀態(tài)數(shù)據(jù)配置,需要修改/etc/php-fpm.conf的配置
vim /etc/php-fpm.d/www.conf
pm.status_path = /phpfpmstatus
重啟php服務(wù)
systemctl restart php-fpm.service
修改/etc/nginx/nginx.conf配置文件
通過Nginx訪問PHP-FPM的狀態(tài)。
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監(jiān)控腳本的實(shí)現(xiàn)
1.PHP-FPM監(jiān)控腳本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監(jiān)控腳本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
添加執(zhí)行權(quán)限
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狀態(tài)解釋
pool
fpm池子名稱,大多數(shù)為www
process manager
進(jìn)程管理方式,值:static, dynamic or ondemand. dynamic
start time
啟動(dòng)日期,如果reload了php-fpm,時(shí)間會(huì)更新
start since
運(yùn)行時(shí)長
accepted conn
當(dāng)前池子接受的請(qǐng)求數(shù)
listen queue
請(qǐng)求等待隊(duì)列,如果這個(gè)值不為0,那么要增加FPM的進(jìn)程數(shù)量
max listen queue
請(qǐng)求等待隊(duì)列最高的數(shù)量
listen queue len
socket等待隊(duì)列長度
idle processes
空閑進(jìn)程數(shù)量
active processes
活躍進(jìn)程數(shù)量
total processes
總進(jìn)程數(shù)量
max active processes
最大的活躍進(jìn)程數(shù)量(FPM啟動(dòng)開始算)
max children reached
大道進(jìn)程最大數(shù)量限制的次數(shù),如果這個(gè)數(shù)量不為0,那說明你的最大進(jìn)程數(shù)量太小了,請(qǐng)改大一點(diǎn)。
slow requests
啟用了php-fpm slow-log,緩慢請(qǐng)求的數(shù)量
PHP-FPM監(jiān)控key的配置
zabbix-server端測試獲取key
zabbix_get -s 192.168.6.134 -k php-fpm.status[listen_queue_len]
最新數(shù)據(jù)
總結(jié)
以上是生活随笔為你收集整理的php fpm 测试,zabbix4.2 监控PHP-FPM运行状态的数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 生成正弦波声音_如何生成一个正
- 下一篇: php server 域名,php 关于