Zabbix 5.2由淺入深之監(jiān)控php-fpm
關(guān)于php-fpm的內(nèi)容在互聯(lián)網(wǎng)上有很多的解釋和描述,這里不再贅述,想要了解其原理和使用場景,可以自行搜索,而zabbix本身也是應(yīng)用了php-fpm,在5.2版本之前需要通過其他手段去監(jiān)控,5.2版本是推出了官方模板,方便大家使用。
官方自帶模板
正文
Zabbix監(jiān)控php-fpm是通過調(diào)用了php-fpm的狀態(tài)頁得以實現(xiàn),而這個狀態(tài)頁實現(xiàn)的配置文件叫做www.conf,這個配置文件是php-fpm進程服務(wù)的擴展文件,由于每個人的環(huán)境不一樣,建議直接查詢www.conf的位置,默認(rèn)在安裝目錄下(實現(xiàn)監(jiān)控的前提是具備Nginx環(huán)境)。
find / -name www.conf得出
修改該配置文件
如果需要監(jiān)控該進程需要開啟兩個配置,修改完成后重啟服務(wù)
1.pm.status_path = /status,這個配置在240行(環(huán)境不同可能有差異),需要去掉注釋(前面的;)
2.ping.path = /ping,這個配置在252行,需要去除掉注釋
pm.status_path = /status
ping.path = /ping
修改完成后
- ####檢查配置是否OK####
- php-fpm -t
- ####重新加載配置####
- systemctl reload php-fpm
修改Nginx配置
由于此篇監(jiān)控為Zabbix前端,所以需要在zabbix的nginx配置文件操作,這里需要注意的是fastcgi_pass,由于zabbix官方采用的server和普通不一致(如下第一張圖),需要改成圖中的路徑,否則會出現(xiàn)502
- vim /etc/nginx/conf.d/zabbix.conf
- location ~ ^/(status|ping)$ {
- allow 127.0.0.1;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- fastcgi_index index.php;
- include fastcgi_params;
- fastcgi_pass unix:/run/php-fpm/www.sock;
- }
server路徑
添加路由
效果圖
前端操作
添加模板
宏這里需要注意的是{$PHP_FPM.HOST},{$PHP_FPM.PING.PAGE},{$PHP_FPM.PORT},{$PHP_FPM.STATUS.PAGE}這幾個,如果非本地,HOST不能填localhost,而是對應(yīng)IP,其他也一樣,根據(jù)自己的實際情況來看待。
宏詳情
但實際用上會有一些問題,php-fpm出現(xiàn)down的情況
出現(xiàn)down
原因其實在curl該頁面的時候,得到的數(shù)據(jù)如下圖。
如果采用官方模板里的正則表達式,就無法匹配
官方正則表達式
工具測試
需要改成|\n即可
改成這樣子
測試正常
數(shù)據(jù)正常
附錄
pool – fpm池子名稱,大多數(shù)為www
process manager – 進程管理方式:static, dynamic or ondemand. dynamicstart time – 啟動日期,如果reload了php-fpm,時間會更新start since – 運行時長accepted conn – 當(dāng)前池子接受的請求數(shù)listen queue – 請求等待隊列,如果這個值不為0,那么要增加FPM的進程數(shù)量max listen queue – 請求等待隊列最高的數(shù)量listen queue len – socket等待隊列長度idle processes – 空閑進程數(shù)量active processes – 活躍進程數(shù)量total processes – 總進程數(shù)量max active processes – 最大的活躍進程數(shù)量(FPM啟動開始算)max children reached - 進程最大數(shù)量限制的次數(shù),如果這個數(shù)量不為0,那說明你的最大進程數(shù)量太小了,請改大一點。slow requests – 啟用了php-fpm slow-log,緩慢請求的數(shù)量
總結(jié)
整體監(jiān)控下來主要是官方模板對環(huán)境的適配有一定的問題,不過找到問題的根因,就很好解決了。