運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(一)

 

前言
記得剛來這家公司的時候,我部門就我一個運維工程師,然後就是經理,剛開始公司平臺什麼監控都沒有,在我與經理的努力下,先搭建nagios+cacti監控平臺,後來隨着公司業務的增加,平臺的功能與服務也不斷的擴展,nagios+cacti監控不太適合平臺的需要,爲了解決此問題我就使用shell來搭建了腳本監控系統,根據平臺的應用服務需求與領導要求,使用shell的腳本監控系統監控整個平臺的運行情況,但隨着公司業務的擴大,平臺數量的增加,服務器的數量也隨之增加,從以前的30臺變爲現在的120臺左右,之前的shell腳本監控系統雖然能夠順利的監控平臺的運行情況,但在日常服務器巡檢的時候沒有什麼便利,我這裏管理很嚴格,每天9、13、17都需要對平臺進行一下巡檢,服務器少的時候還好說,但120臺巡檢就是個噩夢,爲了美好的生活,我決定使用自己設計一個新的監控系統,主要是能在服務器端,使用shell腳本監控繼續的監控平臺運氣情況,使用mysql數據庫記錄監控數據,使用php設計一個web平臺,能在web裏展示這些服務器的監控數據,經過2個月的努力,我獨自一人的完成了這項任務,經過3個月的試運行與生產環境的測試,成功的完成了我之前的需求,使我的時間變的更充裕,不必把時間浪費到日常巡檢裏,當然也有副作用,就是每天什麼事都沒有,實在太閒了(主要是我在搭建shell監控的時候,如果發現有服務宕掉,就根據錯誤代碼自動的解決這個問題並重啓服務,所以每天實在很閒)。
由於本監控系統我本人獨立自主開發,所以具有決定本監控系統是否開源的權利,爲了發展開源精神,我決定把本分佈式監控系統open source,藉此向開源致敬。其中php程序與shell腳本已經放到最後一頁,也就是第七頁,希望本文對各位如何的搭建分佈式私有監控系統能有更多的啓發,也希望各位同仁能多提意見,謝謝!
閒話不說,下面是我的“運維自動化之PHP+MYSQL+SHELL監控系統”的界面展示。
爲了方便大家的理解,我畫了一個php+mysql+shell的流程圖
 
 本監控系統的流程爲(部署的順序是從右到左):
1、需要在各省的機房裏的所有服務器安裝shell監控腳本,然後把監控服務與資源的數據寫入到mysql數據庫裏;
2、mysql收到各省服務器發送的監控數據,把他們按照先前定義的數據表分別的存儲起來;
3、php程序按照之前編輯好的顯示方式,從mysql數據庫裏提前相應的數據,在web端顯示,同時在部署php程序的p_w_picpaths目錄裏,運行數據視圖化腳本,生成各省監控的數據資源圖;
4、用戶可以通過web來瀏覽監控服務與資源的數據、資源的監控數據圖。

 由於本文文章與代碼描述過多,所以分成7篇文章,下面是文章網頁地圖。
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(一)
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(二)
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(三)
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(四)
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(五)
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(六)
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(七)
1、先查看資產管理
資產管理下面有2個功能,一個是新增的設備,一個是瀏覽設備
新增設備
可以增加以上的內容
瀏覽設備
可以展示之前添加的內容,是從數據庫的device表裏獲得數據
2、監控詳情
此頁面裏展示了所以的監控省份
比如我監控的省份就有甘肅、天津、廣西、貴州、海南、河北、湖南、青海、新疆、河南、西藏、包頭、湖北、江西、寧夏、陝西工16個省份,每個省份5臺服務器,共計80個服務器,目前還在繼續添加服務器,預計半個月後,監控的服務器會增加到105個。
下面我們以天津爲例
A、應用服務監控詳情
 
以上監控,顯示的是應用服務的監控主要顯示的內容是通過shell腳本監控的,通過shell寫入到mysql,然後php通過設置好的表單來進行展示來自mysql的數據。
B、硬盤使用率監控詳情
C、cpu使用率監控詳情
D、硬件信息錯誤監控詳情
E、I/O使用率監控詳情
F、15分鐘內的負載
G、內存使用率監控詳情
H、日誌錯誤信息監控詳情
I、用戶登錄數監控詳情
3、當日報警
以天津爲例
可以看到天津今天只有內存報警
4、監控視圖
可以看到監控視圖有3種,分別有日、月、年的,下面我們分別的查看一下
A、當日報警,以新疆數據庫爲例
(1)新疆數據庫的硬盤使用率
(2)新疆數據庫的cpu使用率
(3)新疆數據庫的io使用率
(4)新疆數據庫的load使用率
(5)新疆數據庫的內存使用率
(6)新疆數據庫的用戶登錄數
以上爲什麼在hour爲13,是因爲我設置的hour爲當前時間的,比如當前爲2012年10月23日13:49分,那麼當前的hour爲13.而右上角的2行文字內容是:
2012年10月23日,database數據庫的用戶登錄不正常的使用紅色線表示
 
2012年10月23日,database數據庫的用戶登錄正常的使用綠色線表示
 
B、當月報警,以湖南引擎爲例
(1)湖南引擎的硬盤使用率
(2)湖南引擎的cpu使用率
 
(3)湖南引擎的io使用率
(4)湖南引擎的load使用率
(5)湖南引擎的內存使用率
(6)湖南引擎的用戶登錄數
注意,month(31)是本月有多少天,通過shell腳本進行計算的。
C、當年報警,以貴州引擎爲例
(1)貴州引擎的cpu使用率
(2)貴州引擎的cpu使用率
(3)貴州引擎的io使用率
(4)貴州引擎的load使用率
(5)貴州引擎的內存使用率
(6)貴州引擎的用戶登錄數
5、郵件接收的shell報警截圖
挑選幾個真實的服務器報警給大家展示一下shell腳本監控服務器的報警系統。
A、服務宕掉的報警
 
B、hardware硬件錯誤信息報警

 

Cload負載報警

 

D、內存報警

 

Eswap報警
由於本文文字與腳本內容過多,超過每篇8萬字的限制,所以不得不分成多篇博文,盡請見諒。
下一篇文章地址:
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(二)
BTW:如果大家認爲我寫的不錯,希望能給我的博客投個票,謝謝!
本文出自 “吟—技術交流” 博客,請務必保留此出處http://dl528888.blog.51cto.com/2382721/1034992
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章