PHP-FPM Agent 服務
記錄 PHP-FPM 設定方式
- 下載 SNMP 套件
wget https://github.com/librenms/librenms-agent/raw/master/snmp/phpfpmsp -O /etc/snmp/phpfpmsp
設定可執行
chmod +x /etc/snmp/phpfpmsp
- 到 SNMP 下新增 PHP-FPM 套件服務
vim /etc/snmp/snmpd.conf
extend phpfpmsp /etc/snmp/phpfpmsp
重啟 SNMP 服務
systecmctl restart snmpd
- 啟用 PHP-FPM 即時監控功能 PHP-FPM 這個功能預設是沒有啟用的,需先手動設定 PHP-FPM 裡的設定檔
vim /etc/php-fpm.d/www.conf
pm.status_path 修改成自己想要命名的名稱
pm.status_path = /status or /php_fpm_status
ping.path 修改成自己想要命名的名稱
ping.path = /ping or /php_fpm_status
ping 回應內容
ping.response = pong or hello
:wq
存檔後重啟 php-fpm 服務
systemctl restart php-fpm
- Nginx 設定檔
location ~ ^/(status|php_fpm_ping)$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm.sock;
#如果是端口请用 fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
啟重 nginx
systemctl restart nginx or systemctl nginx relaod
- 用網址連線看是否成功
http://ip/status
http://ip/php_fpm_ping
- 如果設定成功畫面會如下
status
- ping 成功畫面,會回傳剛剛在 php-fpm 設定檔裡面的值
- php-fpm status 詳解
訊息 | 說明 |
---|---|
pool | pool 名稱,通常是 www 。 |
process manager | static 、dynamic 或 ondemand |
start time | FPM 啟動的時間點。若重新載入(reload )也會改變這個時間 |
start since | FPM 啟動後所經過的秒數。 |
accepted conn | 已接收到的連線數量。 |
listen queue | 目前正在等待處理的連線數量,若這個值不是 0 ,就代表 FPM 的行程數量可能不夠,要考慮增加行程數量。 |
max listen queue | FPM 啟動後,等待處理連線數量的最大紀錄。 |
listen queue len | 等待處理連線佇列的長度。 |
idle processes | 閒置的 FPM 行程數量。 |
active processes | 工作中的 FPM 行程數量。 |
total processes | 所有的 FPM 行程數量。 |
max active processes | FPM 啟動後,工作中 FPM 行程數量的最大紀錄。 |
max children reached | FPM 啟動後,FPM 行程達到上限值的次數,若這個值不是 0 ,代表 PHP-FPM 的上限值設定太低,要考慮增加上限值。 |
slow requests | 處理過慢的連線數,若這個值不是 0 ,代表某些 PHP 程式的處理速度太慢,最常見的因素就是 MySQL 資料庫查詢過慢。 |
- full 詳解
訊息 | 說明 |
---|---|
pid | FPM 的行程 ID。 |
state | 行程狀態,Idle 代表閒置,Running 代表工作中。 |
start time | 行程啟動的時間點。 |
start since | 行程啟動後所經過的秒數。 |
requests | 處理過的連線數。 |
request duration | 連線時間(µs)。 |
request method | 連線方式(GET 、POST 等)。 |
request URI | 連線的網址。 |
content length | POST 的資料長度。 |
user | 認證的使用者名稱(PHP_AUTH_USER )。 |
script | 主要執行的 PHP 指令稿。 |
last request cpu | 上一個連線所耗費的 CPU 百分比(只有閒置的行程才會顯示)。 |
last request memory | 上一個連線所耗費的最大記憶體(只有閒置的行程才會顯示)。 |
建議在設定完每個 Agent 服務的,最好先到 /etc/snmp/ 下手動運行一次服務的 Agent 看是否有正確回報數值