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