1.配置所有Agent(標(biāo)準(zhǔn)化目錄結(jié)構(gòu))
[root@linux-node1 ~]# vim /etc/zabbix/zabbix_agentd.conf #編輯配置文件引用key
Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@linux-node1 ~]# mkdir /etc/zabbix/scripts #存放Shell腳本
2.PHP-FPM工作模式通常與Nginx結(jié)合使用,修改php-fpm.conf(找到自己的php-fpm.conf存放路徑)
[root@linux-node1 ~]# vim /usr/local/php/etc/php-fpm.conf? #我php-fpm存放路徑
pm.status_path = /phpfpm_status
3.修改nginx.conf的配置文件,通過Nginx訪問PHP-FPM狀態(tài)。
location ~ ^/(phpfpm_status)$ {
include fastcgi_params;
fastcgi_pass? ? 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
4.訪問測試phpfpm_status
[root@linux-node4 conf.d]# curl http://127.0.0.1/phpfpm_status
pool:? ? ? ? ? ? ? ? www
process manager:? ? ? dynamic
start time:? ? ? ? ? 05/Jul/2016:15:30:56 +0800
start since:? ? ? ? ? 409
accepted conn:? ? ? ? 22
listen queue:? ? ? ? 0
max listen queue:? ? 0
listen queue len:? ? 128
idle processes:? ? ? 4
active processes:? ? 1
total processes:? ? ? 5
max active processes: 2
max children reached: 0
#PHP-FPM狀態(tài)解釋:
pool #fpm池名稱,大多數(shù)為www
process manager #進(jìn)程管理方式dynamic或者static
start time #啟動日志,如果reload了fpm峡钓,時間會更新
start since #運(yùn)行時間
accepted conn #當(dāng)前池接受的請求數(shù)
listen queue #請求等待隊列,如果這個值不為0,那么需要增加FPM的進(jìn)程數(shù)量
max listen queue #請求等待隊列最高的數(shù)量
listen queue len #socket等待隊列長度
idle processes #空閑進(jìn)程數(shù)量
active processes #活躍進(jìn)程數(shù)量
total processes #總進(jìn)程數(shù)量
max active processes #最大的活躍進(jìn)程數(shù)量(FPM啟動開始計算)
max children reached #程最大數(shù)量限制的次數(shù)妓笙,如果這個數(shù)量不為0,那說明你的最大進(jìn)程數(shù)量過小,可以適當(dāng)調(diào)整椒楣。
5.編寫php-fpm的Shell腳本(如果端口不一致,只需要修改腳本端口即可)
[root@linux-node1 ~]# cd /etc/zabbix/scripts
[root@linux-node1 scripts]# vim phpfpm_status.sh
#!/bin/bash
############################################################
# $Name:? ? ? ? phpfpm_status.sh
# $Version:? ? ? v1.0
# $Function:? ? Nginx Status
# $Author:? ? ? Mr.HQ
# $organization: www.baidu.com
# $Create Date:? 2017-04-29
# $Description:? Monitor Nginx Service Status
############################################################
PHPFPM_COMMAND=$1
PHPFPM_PORT=80? #根據(jù)監(jiān)聽不同端口進(jìn)行調(diào)整
start_since(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^start since:/ {print $NF}'
}
accepted_conn(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^accepted conn:/ {print $NF}'
}
listen_queue(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^listen queue:/ {print $NF}'
}
max_listen_queue(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^max listen queue:/ {print $NF}'
}
listen_queue_len(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^listen queue len:/ {print $NF}'
}
idle_processes(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^idle processes:/ {print $NF}'
}
active_processes(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^active processes:/ {print $NF}'
}
total_processes(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^total processes:/ {print $NF}'
}
max_active_processes(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^max active processes:/ {print $NF}'
}
max_children_reached(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^max children reached:/ {print $NF}'
}
slow_requests(){
/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |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
6.給腳本添加執(zhí)行權(quán)限
[root@linux-node1 scripts]# chmod +x phpfpm_status.sh
7.key的phpfpm_status.conf的子配置文件如下:
[root@linux-node1 ~]# cat /etc/zabbix/zabbix_agentd.d/phpfpm_status.conf
UserParameter=phpfpm_status[*],/bin/bash /etc/zabbix/scripts/phpfpm_status.sh "$1"
8.重啟zabbix-agent
[root@linux-node1 ~]# systemctl restart? zabbix-agent
9.測試一定使用Zabbix_get來獲取值
[root@linux-node1 zabbix_agentd.d]# zabbix_get -s 192.168.90.11 -k phpfpm_status[accepted_conn]
聲明:轉(zhuǎn)載至互聯(lián)網(wǎng)