1.開啟php的狀態頁功能
#基於php-fpm程序做的實驗
yum install php-fpm -y
修改配置檔案,開啟php,status功能即可,開啟如下引數即可
要求你訪問php狀態頁面的入口就是/status_php
[root@web-7 ~]#grep 'status_' /etc/php-fpm.d/www.conf
pm.status_path = /status_php
php-fpm,nginx轉發過去的
- 設定nginx轉發
[root@web-7 /etc/nginx/conf.d]#cat status.conf
server{
listen 80;
server_name localhost;
location /nginx_status {
stub_status on;
access_log off;
}
location /php_status {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME html$fastcgi_script_name;
include fastcgi_params;
}
}
重啟nginx,和php-fpm倆程序
[root@web-7 ~]#systemctl restart php-fpm.service nginx.service
訪問測試php_status
欄位解釋
[root@web-7 /etc/nginx/conf.d]#curl 127.0.0.1/php_status
pool: www
process manager: dynamic
start time: 04/Jul/2022:17:27:43 +0800
start since: 158
accepted conn: 2
listen queue: 0
max listen queue: 0
listen queue len: 128
idle processes: 4
active processes: 1
total processes: 5
max active processes: 1
max children reached: 0
slow requests: 0
[root@web-7 /etc/nginx/conf.d]#
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,緩慢請求的數量
自定義的key php_status[採集的關鍵字]
UserParameter=php_status[*],/etc/zabbix/zabbix_agentd.d/php_status.sh $1
寫指令碼簡單的監控php-fpm狀態值的指令碼
#!/bin/bash
# 這是一個簡單的監控php-fpm狀態值的指令碼
comm_para=$1
PHP_URL=$2
cmd="/usr/bin/curl $url"
cachefile=/tmp/php_status.txt
port=80
file_time=`stat -c %Y $cachefile`
now_time=`date +%s`
rm_file=$(($now_time-$file_time))
if [ -z $2 ];then
url=http://127.0.0.1:$port/status_php
else
url=$PHP_URL
fi
cmd="/usr/bin/curl $url"
if [ ! -e $cachefile ];then
$cmd > $cachefile 2>/dev/null
fi
if [ $rm_file -gt 60 ];then
rm -rf $cachefile
fi
if [ ! -f $cachefile ];then
$cmd > $cachefile 2>/dev/null
fi
start_since() {
#執行時長
cat $cachefile | awk '/since/{print $3}'
exit 0;
}
accepted_conn() {
cat $cachefile | awk '/accepted/{print $3}'
exit 0;
}
listen_queue(){
cat $cachefile | awk '{if(NR==6){print $3}}'
exit 0;
}
max_listen_queue(){
cat $cachefile | awk '{if(NR==7){print $4}}'
exit 0;
}
listen_queue_len() {
cat $cachefile | awk '{if(NR==8){print $4}}'
exit 0;
}
idle_processes() {
cat $cachefile | awk '/idle/{print $3}'
exit 0;
}
active_processes() {
cat $cachefile | awk '{if(NR==10){print $3}}'
exit 0;
}
total_processes() {
cat $cachefile | awk '{if(NR==11){print $3}}'
exit 0;
}
max_active_processes() {
cat $cachefile | awk '{if(NR==12){print $4}}'
exit 0;
}
max_children_reached() {
cat $cachefile | awk '{if(NR==13){print $4}}'
exit 0;
}
slow_requests() {
cat $cachefile | awk '{if(NR==14){print $3}}'
exit 0;
}
check() {
php_pro_count=`ss -tunlp|grep php-fpm|wc -l`
echo $php_pro_count
}
case "$comm_para" 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
;;
check)
check
;;
*)
echo "invalid status"
exit 2;
esac
改許可權
[root@web-7 /etc/zabbix/zabbix_agentd.d]#chmod +x php_status.sh
[root@web-7 /etc/zabbix/zabbix_agentd.d]#chown -R zabbix.zabbix ./*
[root@web-7 /etc/zabbix/zabbix_agentd.d]#ll
total 20
-rw-r--r-- 1 zabbix zabbix 87 Jul 4 13:44 nginx_status.conf
-rwxr-xr-x 1 zabbix zabbix 1706 Jul 4 13:51 nginx_status.sh
-rwxr-xr-x 1 zabbix zabbix 1095 Jul 4 17:33 php_status.sh
-rw-r--r-- 1 zabbix zabbix 52 Jun 29 19:06 tcp_status.conf
-rw-r--r-- 1 zabbix zabbix 1531 Jul 29 2019 userparameter_mysql.conf
3. 重啟agent
[root@web-7 /etc/zabbix/zabbix_agentd.d]#systemctl restart zabbix-agent.service
4.手動zabbix_get測資料
[root@zabbix-server-71 ~]#zabbix_get -s 10.0.0.7 -k php_status[total_processes]
5
配置zabbix-UI的模板
監控項克隆新增
關聯web7機器
新增圖形資料,給模板加
檢視web7的圖形資料即可
新增觸發器,判斷php如果掛了, 立即釘釘報警
判斷php-fpm程序掛了立即釘釘報警