1. 程式人生 > >zabbix 如何監控php-fpm?

zabbix 如何監控php-fpm?

sage 添加 數值 nginx配置 case gin mage null 最大數

zabbix監控php-fpm主要是通過nginx配置php-fpm的狀態輸出頁面,在正則取值.要nginx能輸出php-fpm的狀態首先要先修改php-fpm的配置,沒有開啟nginx是沒有法輸出php-fpm status。

第一個裏程:修改文件php-fpm

vim /application/php-5.5.32/etc/php-fpm.conf文件

技術分享圖片

第二個裏程:修改nginx配置文件

vim vim /application/nginx/conf/extra/www.conf,在server 區塊下添加一行內容

技術分享圖片

重啟nginx

第三個裏程:curl 127.0.0.1/php_status 我們可以看到php-fpm 的狀態信息

技術分享圖片

pool php-fpm pool的名稱,大多數情況下為www process manager 進程管理方式,現今大多都為dynamic,不要使用 static start time php-fpm上次啟動的時間 start since php-fpm已運行了多少秒 accepted conn pool接收到的請求數 listen queue 處於等待狀態中的連接數,如果不為0,需要增加 php-fpm進程數 max listen queue php-fpm啟動到現在處於等待連接的最大數量 listen queue len 處於等待連接隊列的套接字大小 idle processes 處於空閑狀態的進程數 active processes 處於活動狀態的進程數 total processess 進程總數 max active process 從php-fpm啟動到現在最多有幾個進程處於活動狀態 max children reached 當pm試圖啟動更多的children進程時,卻達到了進程數的限制,達到一次記錄一次,如果不為0,需要增加 php-fpm pool進程的最大數 slow requests 當啟用了php-fpm slow-log功能時,如果出現php-fpm慢請求這個計數器會增加,一般不當的Mysql查詢會觸發這個值

第四個裏程:編寫監控腳本和監控文件

vim /server/scripts/php_fpm-status.sh

#!/bin/sh
#php-fpm status
case $1 in
ping) #檢測php-fpm進程是否存在
/sbin/pidof php-fpm | wc -l
;;
start_since) #提取status中的start since數值
/usr/bin/curl 127.0.0.1/php_status 2>/dev/null | awk ‘NR==4{print $3}‘
;;
conn) #提取status中的accepted conn數值
/usr/bin/curl 127.0.0.1/php_status 2>/dev/null | awk ‘NR==5{print $3}‘
;;
listen_queue) #提取status中的listen queue數值
/usr/bin/curl 127.0.0.1/php_status 2>/dev/null | awk ‘NR==6{print $3}‘
;;
max_listen_queue) #提取status中的max listen queue數值
/usr/bin/curl 127.0.0.1/php_status 2>/dev/null | awk ‘NR==7{print $4}‘
;;
listen_queue_len) #提取status中的listen queue len
/usr/bin/curl 127.0.0.1/php_status 2>/dev/null | awk ‘NR==8{print $4}‘
;;
idle_processes) #提取status中的idle processes數值
/usr/bin/curl 127.0.0.1/php_status 2>/dev/null | awk ‘NR==9{print $3}‘
;;
active_processes) #提取status中的active processes數值
/usr/bin/curl 127.0.0.1/php_status 2>/dev/null | awk ‘NR==10{print $3}‘
;;
total_processes) #提取status中的total processess數值
/usr/bin/curl 127.0.0.1/php_status 2>/dev/null | awk ‘NR==11{print $3}‘
;;
max_active_processes) #提取status中的max active processes數值
/usr/bin/curl 127.0.0.1/php_status 2>/dev/null | awk ‘NR==12{print $4}‘
;;
max_children_reached) #提取status中的max children reached數值
/usr/bin/curl 127.0.0.1/php_status 2>/dev/null | awk ‘NR==13{print $4}‘
;;
slow_requests) #提取status中的slow requests數值
/usr/bin/curl 127.0.0.1/php_status 2>/dev/null | awk ‘NR==14{print $3}‘
;;
*)
echo "Usage: $0 {conn|listen_queue|max_listen_queue|listen_queue_len|idle_processes|active_processess|total_processes|max_active_processes|max_children_reached|slow_requests}"
exit 1
;;
esac

vim /etc/zabbix/zabbix_agentd.d/test.conf

UserParameter=php_status[*],/bin/sh /server/scripts/php_fpm-status.sh $1

第六個裏程:重啟服務

技術分享圖片

在服務端測試

技術分享圖片

第七個裏程:在web端進行配置

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

這時候我們再來看最新監控數據,就可以看到我們監控的內容了技術分享圖片

配置到這,我們PHP狀態監控基本完成,根據需求配置相應的觸發器,即可。

zabbix 如何監控php-fpm?