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]
最新數據
總結
以上是生活随笔為你收集整理的php fpm 测试,zabbix4.2 监控PHP-FPM运行状态的数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 生成正弦波声音_如何生成一个正
- 下一篇: php server 域名,php 关于