您好,登錄后才能下訂單哦!
前幾天弄了個Nginx 服務(wù)監(jiān)控,今天再試試php服務(wù)的監(jiān)控
操作系統(tǒng): CentOS 7.2
PHP版本:5.6.30
zabbix版本:2.2.5
發(fā)現(xiàn)php-fpm和Nginx一樣都有自身就具備可提供查看的狀態(tài)頁面,所以我們就可以在配置檔案里開啟它
首先查看你的php設(shè)定檔是否開啟了狀態(tài)頁面查看的功能
# 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服務(wù),讓查看status功能生效
# pkill -9 php-fpm # /data0/php/sbin/php-fpm
在Nginx配置上添加支持獲取PHP status的設(shè)定
# vim /data0/nginx/conf/nginx.conf ##在server模塊內(nèi)添加即可 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內(nèi)運行的,所以上面的fatstcgi_pass 要根據(jù)你自己的情況而定
設(shè)置完畢,保存退出,重啟Nginx服務(wù),讓設(shè)定生效
# /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準(zhǔn)備工作完畢,現(xiàn)在可以開始查看成效
查看你的status頁面
有兩種方式:
1.在本地訪問
curl http://網(wǎng)址/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://網(wǎng)址/status
內(nèi)容解釋:
pool: www --php-fpm池名 process manager: dynamic --進(jìn)程管理方式 start time: 30/Jun/2017:14:14:02 +0800 --啟動日期,一旦你對php-fpm服務(wù)更新,它也同樣會更新 start since: 94540 --運行至現(xiàn)在的時長 accepted conn: 75834 --當(dāng)前池所接受的請求數(shù) listen queue: 0 --請求等待隊列數(shù),若此值大于0,就要增加php-fpm進(jìn)程數(shù)了 max listen queue: 2 --最高的請求等待隊列數(shù) listen queue len: 128 --socket等待隊列長度 idle processes: 99 --空閑進(jìn)程數(shù) active processes: 1 --活動的進(jìn)程數(shù) total processes: 100 --總進(jìn)程數(shù) max active processes: 9 --最大活動進(jìn)程數(shù) max children reached: 0 --大道進(jìn)程最大數(shù)限制次數(shù),同樣若此值不為0,需要將最大進(jìn)行時進(jìn)程擴(kuò)大來滿足需求 slow requests: 122 --緩慢請求數(shù)
php-fpm status 頁面非常友善的地方是在配合zabbix監(jiān)控時,不在需要你編寫shell腳本來獲取數(shù)據(jù)了,不錯吧,又可以偷懶了!
不信,在你的被監(jiān)控主機(jī)(即PHP-fpm主機(jī))上試下下面的做法
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}
在被監(jiān)控機(jī)的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服務(wù)
# pkill -9 zabbix_agentd # /data0/zabbix/sbin/zabbix_agentd
目前在被監(jiān)控機(jī)器上的設(shè)定已經(jīng)基本結(jié)束,現(xiàn)在轉(zhuǎn)戰(zhàn)zabbix server,跟之前的操作一樣,只要在zabbix web管理界面上導(dǎo)入PHP-fpm監(jiān)控模板
注:有需要的朋友,可以在本文章末尾下載我的zabbix php-fpm監(jiān)控模板
出現(xiàn)上面的匯入成功后,在你的模板列表里查找是否已經(jīng)匯入
從上面的圖中可以看出有個叫做Template App PHP-FPM的模板已經(jīng)存在了。
查看監(jiān)控項目內(nèi)容
查看監(jiān)控觸發(fā)器
查看監(jiān)控圖形內(nèi)容
接下來將這個模板鏈接到你需要監(jiān)控php-fpm服務(wù)的主機(jī)即可,最簡單的方法是把主機(jī)納入到監(jiān)控模板內(nèi)
可以再到你的主機(jī)上看看,它是否已經(jīng)被連接到你的主機(jī)上
發(fā)現(xiàn)Template App PHP_FPM已經(jīng)在主機(jī)的連結(jié)模板內(nèi)了
如果模板不合適,可以自己一步一步建立監(jiān)控模板,可能zabbix監(jiān)控版本不同,但是大體是一樣的,根據(jù)自己的需求進(jìn)行設(shè)定即可。
首先創(chuàng)建監(jiān)控模板
選好群組模板,然后填入想要的模板名稱以及需要納入到監(jiān)控模板內(nèi)的主機(jī)
2.配置好模板后,創(chuàng)建應(yīng)用集
3.在應(yīng)用集內(nèi)添加監(jiān)控項目
注:關(guān)于監(jiān)控項目可以參考我在上面貼出監(jiān)控項目內(nèi)容里的監(jiān)控項目名稱和鍵值作為參考
其他監(jiān)控項目和上面內(nèi)容,除了名稱、鍵值、備注描述信息,其他都是一樣的。
4.添加監(jiān)控告警
上面的告警是當(dāng)php-fpm進(jìn)程為零時,進(jìn)行嚴(yán)重告警
5.添加監(jiān)控項目查看圖形
注:關(guān)于監(jiān)控圖形可以參考我在上面貼出監(jiān)控圖形內(nèi)容里的監(jiān)控圖形名稱作為參考,主要根據(jù)你自己的需求進(jìn)行設(shè)定會比較精準(zhǔn)
在名稱上填入你想要的監(jiān)控名稱,在監(jiān)控項選擇你已經(jīng)添加好的項目,反正就是根據(jù)你個人的需求進(jìn)行設(shè)定即可
設(shè)定好上面的東西,那你就可以直接在監(jiān)控內(nèi)查看你的監(jiān)控圖形是否有數(shù)據(jù)產(chǎn)生了
至此所有創(chuàng)建動作結(jié)束,如果出圖,則說明設(shè)定成功啦!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。