运维自动化之使用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程序的images目錄里,運行數據視圖化腳本,生成各省監控的數據資源圖; 4、用戶可以通過web來瀏覽監控服務與資源的數據、資源的監控數據圖。
?由于本文文章與代碼描述過多,所以分成7篇文章,下面是文章網頁地圖。
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(一)
http://dl528888.blog.51cto.com/2382721/1034992
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(二)
http://dl528888.blog.51cto.com/2382721/1035131
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(三)
http://dl528888.blog.51cto.com/2382721/1035142
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(四)
http://dl528888.blog.51cto.com/2382721/1035145
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(五)
http://dl528888.blog.51cto.com/2382721/1035252
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(六)
http://dl528888.blog.51cto.com/2382721/1035297
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(七)
http://dl528888.blog.51cto.com/2382721/1035335
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硬件錯誤信息報警C、load負載報警
D、內存報警
E、swap報警
由于本文文字與腳本內容過多,超過每篇8萬字的限制,所以不得不分成多篇博文,盡請見諒。
下一篇文章地址:
運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(二)
http://dl528888.blog.51cto.com/2382721/1035131
BTW:如果大家認為我寫的不錯,希望能給我的博客投個票,謝謝!
http://blog.51cto.com/contest2012/2382721
?本文轉自 reinxu 51CTO博客,原文鏈接:http://blog.51cto.com/dl528888/1034992,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java猿面试_猿灯塔:关于Java面试
- 下一篇: java中如何设置浏览器宽度_[Java