1. 程式人生 > >使用zabbix監控nginx和php-fpm效能

使用zabbix監控nginx和php-fpm效能

1.系統環境

1.1 軟體及其版本

軟體版本

1.2 軟體安裝路徑

zabbix安裝在/usr/local/zabbix路徑下,其相關配置檔案及二進位制執行程式都放置其中。
nginx安裝在/usr/local/nginx下,其相關配置檔案及二進位制執行程式都放置其中。
php安裝在/usr/local/php下,其相關配置檔案及二進位制執行程式都放置其中。
繼續後面的操作前,請確認nginx和php-fpm的服務埠都處於監聽狀態。

2.配置nginx的status

2.1 確認nginx的status已編譯到程式包中

使用nginx -V可以檢視nginx是否將模組·http_stub_status_module`編譯進包中:

nginx

2.2 啟用nginx的status模組

  • 修改nginx.conf檔案
    一般在預設主機中增加如下location即可:

status模組

  • 檢視nginx status
    nginx配置檔案修改完成以後,使用nginx -t測試配置檔案是否有明顯邏輯及語法錯誤,沒有問題則過載配置檔案。

  • 然後使用瀏覽器或者curl指令檢視nginx status:

nginx status

2.3 nginx status數值的含義說明

nginx status

php-fpm自帶的有用於查詢其工作狀態的頁面,需要進行如下 兩步,以啟用這一功能。

3.配置php-fpm的status

3.1 啟用php-fpm status頁面

修改php-fpm.conf檔案,去掉status頁面的註釋,並可以根據需要將其改名。操作如下:

3.2 檢視php-fpm的status

修改完php-fpm.conf後,使用service php-fpm reload重新載入配置檔案,然後在瀏覽器或者使用curl指令檢視php-fpm的status。操作如下:

php-fpm的status可以檢視彙總資訊和詳細資訊,詳細資訊比彙總資訊要多出每一個php-fpm程序的相關資訊,同時支援多種格式輸出,如xml、html和json,預設情況下分別使用如果指令即可:

xamples for summary status page:
http://example.com/status
http://example.com/status?json
http://example.com/status?html
http://example.com/status?xml
Example for detailed status page:
http://example.com/status?full
http://example.com/status?json&full
http://example.com/status?html&full
http://example.com/status?xml&full

使用何種格式檢視status決定了後續使用zabbix進行監控獲取status數值的方式。本文以上述curl localhost/php_fpm-status的輸出為例。

3.3 php-fpm status的含義

4.編寫status資料提取指令碼

在適當的位置,一般是/usr/local/zabbix/bin裡準備指令碼用於提取status裡每個欄位的數值。

4.1 nginx的status數值提取指令碼

此指令碼為/usr/local/zabbix/bin/nginx_status.sh,其內容如下:

4.2 php-fpm status數值提取指令碼

php-fpm status數值提取指令碼為/usr/local/zabbix/bin/php_fpm_status.sh,內容如下:

5.建立zabbix_agentd的子配置檔案

/usr/local/zabbix/etc/zabbix_agentd.d/中建立關聯nginx status和php-fpm status的子配置檔案,建立一個,或者在已有的某配置檔案中增加也可以,我這裡分別為它們建立配置檔案,檔名可自定義,只要確保此資料夾全部內容在zabbix_agentd.conf中包含(include)了。

5.1 userparameter_nginx.conf

5.2 userparameter_php-fpm.conf

5.3 確認子配置檔案被zabbix_agentd配置檔案包含

確認在/usr/local/zabbix/etc/zabbix_agentd.conf中包含:Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/且沒有被註釋。

6.重啟zabbix_agentd服務

service zabbix_agentd restart 讓zabbix_agentd載入新的配置檔案。

7.測試zabbix_get能否取到資料

在zabbix server上使用如下指令測試能否獲取到nginx和php-fpm status數值。

注意:

  • zabbix_get指令在zabbix server上執行。
  • userparameter_*.conf檔案位於zabbix_agentd端。
  • nginx_status.sh和php_fpm_status.sh位於zabbix_agentd端。
  • zabbix-get-s指定的ip為zabbix-agentd的監聽ip。

8.zabbix server上配置相應的模板

這裡的模板包含對nginx status和php-fpm status要監控的itemtriggerGraphs等一系列內容。對於在zabbix server上新增要監控的內容,最好的辦法就是從模板開始,然後按照順序依次配置相應內容,無需去網上找現成的模板匯入,對於系統的監控按需配置是最好的。下面是相應的操作過程。

8.1 新增nginx status監控模板

新建nginx status模板

定義nginx status模板

定義nginx status items,這裡我使用的是被動臨控

增加nginx status狀態碼對映

nginx trigger定義

定義nginx監控檢視

8.2 新增php-fpm status監控模板

php-fpm status的模板新增步驟和上述方法一樣,此處不在贅述。

8.3 選擇相應的主機或主機組關聯上相應的模板

給主機或主機組關聯模板

9.實際監控效果展示

檢視監控效果可以通過檢視Monitoring—->Latest data,過濾出相應的主機及應用名進行檢視,最新收集的各item的監控結果,凡是監控到資料的item會顯示資料,出現灰色的表示沒有監控到資料,需要排查原因。如下所示:

nginx的監控資料

也可以通過定義的Graphs檢視監控效果:

nginx statur監控檢視

10.小結

abbix中要實現對使用者自定義的item的監控,大致過程如下:

  • 啟用相應軟體的效能統計功能
  • 編寫效能統計資料提取指令碼
  • 配置自定義的userparameter conf檔案
  • 重啟zabbix_agentd服務
  • zabbix server web上新增相應的模板
  • 給主機或主機組呼叫模板

文章來自微信公眾號:馬哥Linux運維