2023年9月21日 星期四

Zabbix monitor PHP-FPM Service

Zabbix monitor PHP-FPM Service

如果使用Apache+php-fpm建置網站,想要了解php-fpm運作狀態,可以使用Zabbix Server進行服務監控。

設備環境

以Zabbix Server 為示範,OS:Ubuntu Linux LTS 22.04,Apache-2.4.52,php-fpm8.1

PHP-FPM設定

建立PHP-FPM的監控頁面,在設定檔新增/status,/ping設定。
目錄為 /etc/php/8.1/fpm/pool.d/,設定目錄需確認php-fpm的安裝版本,版本會影響指令及程式目錄,如果不同請自行修正。
# sudo nano /etc/php/8.1/fpm/pool.d/www.conf
---
pm.status_path = /status
ping.path = /ping
---
01 php-fpm status


修改完成後,進行設定檔測試。
# sudo php-fpm8.1 -t
無問題後直接重新載入設定檔。
# sudo systemctl reload php8.1-fpm
02-setup php-fpm status

APACHE設定

在Apache的設定檔增加PHP-FPM監控頁面。設定檔案為/etc/apache2/sites-available/000-default.conf。
設定Require ip 127.0.0.1讓只有本機可以讀取監控頁面。如果需要其它ip讀取,請自行增加。
使用ProxyPass 功能去讀取sock,實際位置如果不同請自行修正。

# sudo vim /etc/apache2/sites-available/000-default.conf
---
    # add php8.1-fpm status
    <LocationMatch "/status">
        Require ip 127.0.0.1
        # Require ip 1.2.3.4    # Your IP here
        # Adjust the path to the socket if needed
        ProxyPass "unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/status"
    </LocationMatch>

    # add php8.1-fpm ping
    <LocationMatch "/ping">
        Require ip 127.0.0.1
        # Require ip 1.2.3.4    # Your IP here
        # Adjust the path to the socket if needed
        ProxyPass "unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/ping"
    </LocationMatch>
---
03-add apache php-fpm status

修改完成後,進行設定檔測試
# sudo apachectl configtest
無問題後直接重新載入設定檔
# sudo systemctl reload apache2
04 setup apapche php-fpm

在本機使用curl 連接/status,/ping進行測試
# curl -L 127.0.0.1/status
# curl -L 127.0.0.1/ping
05-curl php-fpm  status

測試成功會出現PHP-FPM訊息,可以進入Zabbix WEB設定


Zabbix WEB設定

Zabbix Server內建的Templates>Applications 有PHP-FPM by HTTP,PHP-FPM by Zabbix agent 2種。
06-templates php-fpm


PHP-FPM by HTTP


官方連結說明翻譯:
此範本是由 Zabbix 開發的,用於監控 FastCGI Process Manager (PHP-FPM),無需任何外部腳本即可運作。
由於 Zabbix 批量資料收集,大部分指標都是一次性收集的。
此範本PHP-FPM by Zabbix agent- 透過使用 HTTP 代理遠端輪詢 PHP-FPM 狀態頁面來收集指標。
請注意,此解決方案支援 HTTPS 和重定向。

新增頁面設定如下:
07-PHP-FPM by HTTP


依官網說明在Maros頁面新增7組參數,並填入對應的值。
{$PHP_FPM.PORT}
80
{$PHP_FPM.SCHEME}
http
{$PHP_FPM.HOST}
localhost
{$PHP_FPM.STATUS.PAGE}
status
{$PHP_FPM.PING.PAGE}
ping
{$PHP_FPM.PING.REPLY}
pong
{$PHP_FPM.QUEUE.WARN.MAX}
80
08-PHP-FPM by HTTP MACROS

PHP-FPM by Zabbix agent


官方連結說明翻譯:
此範本是為了透過 Zabbix 代理程式監控 FastCGI 進程管理器 (PHP-FPM) 而開發的,無需任何外部腳本即可運作。
由於 Zabbix 批量資料收集,大部分指標都是一次性收集的。
此範本PHP-FPM by Zabbix agent- 透過使用 Zabbix 代理在本地輪詢 PHP-FPM 狀態頁面來收集指標。
請注意,此模板不支援 HTTPS 和重定向(的限制web.page.get)。
它還使用Zabbix代理程式收集php-fpmLinux進程統計信息,例如CPU使用率、記憶體使用率以及進程是否正在運行。

新增頁面設定如下:
08-PHP-FPM by Zabbix agent


依官網說明在Maros頁面新增7組參數,並填入對應的值。
{$PHP_FPM.PORT}
80
{$PHP_FPM.HOST}
localhost
{$PHP_FPM.STATUS.PAGE}
status
{$PHP_FPM.PING.PAGE}
ping
{$PHP_FPM.PING.REPLY}
pong
{$PHP_FPM.QUEUE.WARN.MAX}
80
{$PHP_FPM.PROCESS_NAME}
php-fpm
09-PHP-FPM by Zabbix agent Macros



在Configuration > Host中新增2個Templates。
10-php-fpm

在資料Items中也可以看到PHP-FPM by Zabbix agent比PHP-FPM by HTTP 多收集 CPU使用率、記憶體使用率以及進程是否正在運行等3種資料。

Zabbix使用Zabbix agent2監控PHP-FPM Service,是由Zabbix Server透過監控主機的Zabbix agent2捉取資料,屬於被動模式。


沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。