1. 程式人生 > >php-fpm 服務納入zabbix監控

php-fpm 服務納入zabbix監控

zabbix   php-fpm服務監控

前幾天弄了個Nginx 服務監控,今天再試試php服務的監控

操作系統: CentOS 7.2

PHP版本:5.6.30

zabbix版本:2.2.5

發現php-fpm和Nginx一樣都有自身就具備可提供查看的狀態頁面,所以我們就可以在配置檔案裏開啟它


首先查看你的php設定檔是否開啟了狀態頁面查看的功能

# cat  /data0/php/etc/php-fpm.conf | grep status_path 
;pm.status_path = /status


如果情況同上,那說明還沒有開啟,故我們就修改配置,讓它支持查看php-fpm status

# vim  /data0/php/etc/php-fpm.conf 
pm.status_path = /status   ---去掉;號註釋

保存退出


重啟php-fpm服務,讓查看status功能生效

# pkill -9 php-fpm
# /data0/php/sbin/php-fpm

在Nginx配置上添加支持獲取PHP status的設定

# vim  /data0/nginx/conf/nginx.conf
##在server模塊內添加即可
server {
    listen 80;
     server_name  www.sss.com;
     #20170701 php-fpm status for zabbix to fetch data
      location ~ ^/(status|ping)$ {
          include fastcgi_params;
          fastcgi_pass   172.17.0.2:9000;
          fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
          }
     #20170701 php-fpm status for zabbix to fetch data end
}

註:因為我的PHP是在docker內運行的,所以上面的fatstcgi_pass 要根據你自己的情況而定

設置完畢,保存退出,重啟Nginx服務,讓設定生效

# /data0/nginx/sbin/nginx -t
nginx: the configuration file /data0/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /data0/nginx/conf/nginx.conf test is successful
# /data0/nginx/sbin/nginx -s reload

至此,PHP、Nginx準備工作完畢,現在可以開始查看成效

查看你的status頁面

有兩種方式:

1.在本地訪問

curl http://網址/status

# curl http://www.sss.com/status
pool:                 www
process manager:      dynamic
start time:           30/Jun/2017:14:14:02 +0800
start since:          94540
accepted conn:        75834
listen queue:         0
max listen queue:     2
listen queue len:     128
idle processes:       99
active processes:     1
total processes:      100
max active processes: 9
max children reached: 0
slow requests:        122


2.打開瀏覽器訪問

http://網址/status

技術分享

內容解釋:

pool:         www --php-fpm池名
process manager:    dynamic  --進程管理方式
start time:      30/Jun/2017:14:14:02 +0800 --啟動日期,一旦你對php-fpm服務更新,它也同樣會更新
start since:      94540 --運行至現在的時長
accepted conn:     75834 --當前池所接受的請求數
listen queue:     0 --請求等待隊列數,若此值大於0,就要增加php-fpm進程數了
max listen queue:   2 --最高的請求等待隊列數
listen queue len:   128 --socket等待隊列長度
idle processes:    99 --空閑進程數
active processes:   1 --活動的進程數
total processes:    100 --總進程數
max active processes: 9 --最大活動進程數
max children reached: 0 --大道進程最大數限制次數,同樣若此值不為0,需要將最大進行時進程擴大來滿足需求
slow requests:     122 --緩慢請求數

php-fpm status 頁面非常友善的地方是在配合zabbix監控時,不在需要你編寫shell腳本來獲取數據了,不錯吧,又可以偷懶了!

不信,在你的被監控主機(即PHP-fpm主機)上試下下面的做法

1.訪問URL末尾添加?xml

curl http://www.sss.com/status?xml
<?xml version="1.0" ?>
<status>
<pool>www</pool>
<process-manager>dynamic</process-manager>
<start-time>1498803242</start-time>
<start-since>95730</start-since>
<accepted-conn>77180</accepted-conn>
<listen-queue>0</listen-queue>
<max-listen-queue>2</max-listen-queue>
<listen-queue-len>128</listen-queue-len>
<idle-processes>99</idle-processes>
<active-processes>1</active-processes>
<total-processes>100</total-processes>
<max-active-processes>9</max-active-processes>
<max-children-reached>0</max-children-reached>
<slow-requests>122</slow-requests>

技術分享

2.訪問URL末尾添加?html

curl http:/www.sss.com/devopsfjjerpstatus?html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><title>PHP-FPM Status Page</title></head>
<body>
<table>
<tr><th>pool</th><td>www</td></tr>
<tr><th>process manager</th><td>dynamic</td></tr>
<tr><th>start time</th><td>30/Jun/2017:14:14:02 +0800</td></tr>
<tr><th>start since</th><td>95954</td></tr>
<tr><th>accepted conn</th><td>77437</td></tr>
<tr><th>listen queue</th><td>0</td></tr>
<tr><th>max listen queue</th><td>2</td></tr>
<tr><th>listen queue len</th><td>128</td></tr>
<tr><th>idle processes</th><td>99</td></tr>
<tr><th>active processes</th><td>1</td></tr>
<tr><th>total processes</th><td>100</td></tr>
<tr><th>max active processes</th><td>9</td></tr>
<tr><th>max children reached</th><td>0</td></tr>
<tr><th>slow requests</th><td>122</td></tr>
</table>
</body></html>

技術分享

3.訪問URL末尾添加?json

# curl http://www.sss.com/status?json
{"pool":"www","process manager":"dynamic","start time":1498803242,"start since":96133,"accepted conn":77639,"listen queue":0,"max listen queue":2,"listen queue len":128,"idle processes":99,"active processes":1,"total processes":100,"max active processes":9,"max children reached":0,"slow requests":122}

技術分享

在被監控機的zabbix agent 的配置裏添加自定義的parameter

vim  /data0/zabbix/etc/zabbix_agentd.conf
##monitoring for php-fpm status
UserParameter=php-fpm.status[*],/usr/bin/curl -s "http://www.sss.com/devopsfjjerpstatus?xml" | grep "<$1>"| awk -F ‘>|<‘ ‘{ print $$3}‘

為了讓修改的配置生效,我們要重啟下zabbix_agentd服務

# pkill -9 zabbix_agentd
# /data0/zabbix/sbin/zabbix_agentd


目前在被監控機器上的設定已經基本結束,現在轉戰zabbix server,跟之前的操作一樣,只要在zabbix web管理界面上導入PHP-fpm監控模板

註:有需要的朋友,可以在本文章末尾下載我的zabbix php-fpm監控模板

技術分享

技術分享

技術分享

技術分享

出現上面的匯入成功後,在你的模板列表裏查找是否已經匯入

技術分享

從上面的圖中可以看出有個叫做Template App PHP-FPM的模板已經存在了。


查看監控項目內容

技術分享


查看監控觸發器

技術分享


查看監控圖形內容

技術分享


接下來將這個模板鏈接到你需要監控php-fpm服務的主機即可,最簡單的方法是把主機納入到監控模板內

技術分享


可以再到你的主機上看看,它是否已經被連接到你的主機上

技術分享

發現Template App PHP_FPM已經在主機的連結模板內了


如果模板不合適,可以自己一步一步建立監控模板,可能zabbix監控版本不同,但是大體是一樣的,根據自己的需求進行設定即可。

  1. 首先創建監控模板

技術分享

技術分享

選好群組模板,然後填入想要的模板名稱以及需要納入到監控模板內的主機

技術分享


2.配置好模板後,創建應用集

技術分享

技術分享


3.在應用集內添加監控項目

註:關於監控項目可以參考我在上面貼出監控項目內容裏的監控項目名稱和鍵值作為參考

技術分享

技術分享

技術分享

其他監控項目和上面內容,除了名稱、鍵值、備註描述信息,其他都是一樣的。


4.添加監控告警

技術分享

技術分享

上面的告警是當php-fpm進程為零時,進行嚴重告警


5.添加監控項目查看圖形

註:關於監控圖形可以參考我在上面貼出監控圖形內容裏的監控圖形名稱作為參考,主要根據你自己的需求進行設定會比較精準

技術分享

技術分享

在名稱上填入你想要的監控名稱,在監控項選擇你已經添加好的項目,反正就是根據你個人的需求進行設定即可


設定好上面的東西,那你就可以直接在監控內查看你的監控圖形是否有數據產生了

技術分享

技術分享

技術分享

至此所有創建動作結束,如果出圖,則說明設定成功啦!

本文出自 “10793382” 博客,請務必保留此出處http://10803382.blog.51cto.com/10793382/1944397

php-fpm 服務納入zabbix監控