zabbix監控php-fpm主要是經過nginx配置php-fpm的狀態輸出頁面,在正則取值.要nginx能輸出php-fpm的狀態首先要先修改php-fpm的配置,沒有開啓nginx是沒有法輸出php-fpm status。php
第一個里程:修改文件php-fpmnginx
vim /application/php-5.5.32/etc/php-fpm.conf文件web
第二個里程:修改nginx配置文件sql
vim vim /application/nginx/conf/extra/www.conf,在server 區塊下添加一行內容vim
重啓nginxapp
第三個里程:curl 127.0.0.1/php_status 咱們能夠看到php-fpm 的狀態信息curl
字段 | 含義 |
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查詢會觸發這個值 |
第四個里程:編寫監控腳本和監控文件php-fpm
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
;;
esacurl
vim /etc/zabbix/zabbix_agentd.d/test.conf
UserParameter=php_status[*],/bin/sh /server/scripts/php_fpm-status.sh $1
第六個里程:重啓服務
在服務端測試
第七個里程:在web端進行配置
這時候咱們再來看最新監控數據,就能夠看到咱們監控的內容了
配置到這,咱們PHP狀態監控基本完成,根據需求配置相應的觸發器,便可。
你要的模板
連接:https://pan.baidu.com/s/1bnoYn1gD7xdQTEUzFj44eA 提取碼:47sv