運維自動化之使用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硬件錯誤信息報警

Cload負載報警

D、內存報警

Eswap報警

由于本文文字與腳本內容過多,超過每篇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,如需轉載請自行聯系原作者


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454583.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454583.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454583.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

面試風云錄(01) - 怎樣回答這兩個問題?

由于工作經歷的緣故,使我有一些面試別人的機會,所以應該還有一些經驗可以跟大家聊聊。 當我們提到“面試” 這個詞,總是讓人有種階級感,好像面試官就是高高在上,而面試者則是屈居于下,其實并非如此&#xf…

Redis Python

Python操作Redis 安裝Python使用Redis的庫 sudo pip install redis or sudo easy_install redis or 源碼安裝 詳見:https://github.com/WoLpH/redis-py 1.1 操作模式 redis-py提供兩個類Redis和StrictRedis用于實現Redis的命令,StrictRedis用于實現大…

android 代碼寫命令,monkey基本命令及腳本編寫(示例代碼)

Monkey 是Android自帶的黑盒測試工具,一般通過隨機觸發界面事件,來確定應用是否會發生異常,多用于android應用的穩定性、壓力測試基本命令:adb shell monkey [options] usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] .…

js更新數組對象_7 種Vue 數據已更新而頁面沒有更新的情況及深化總結(收藏)

作者:前端1943鏈接:https://segmentfault.com/a/1190000022772025如果你發現你自己需要在 Vue 中做一次強制更新,99.9% 的情況,是你在某個地方做錯了事。1. Vue 無法檢測實例被創建時不存在于 data 中的 property原因:…

從P560小型機B181201B故障代碼識別手把手詳解

背景:生產小型機發生宕機事件,現場發現液晶面板存在B181201B代碼,可是查看網絡,未見有權威的參考文章,通過管理口登錄HMC管理界面,發現錯誤代碼B181201B,同時提示可能是電源故障,后登…

Java反射中method.isBridge() 橋接方法

橋接方法是 JDK 1.5 引入泛型后&#xff0c;為了使Java的泛型方法生成的字節碼和 1.5 版本前的字節碼相兼容&#xff0c;由編譯器自動生成的方法。我們可以通過Method.isBridge()方法來判斷一個方法是否是橋接方法。 假定接口 public interface SuperClass<T> {void met…

python 利用pexpect進行多機遠程命令執行

在安裝之前&#xff0c;確認你的機器安裝了python,和easy_install.通常python是自動安裝的&#xff0c;如果沒有安裝easy_install&#xff0c;那么wget -q http://peak.telecommunity.com/dist/ez_setup.py 獲取一下python ez_setup.pypexpect是python一個模塊&#xff0c;可以…

Python 之 線程

進程 之前我們已經了解了操作系統中進程的概念&#xff0c;程序并不能單獨運行&#xff0c;只有將程序裝載到內存中&#xff0c;系統為它分配資源才能運行&#xff0c;而這種執行的程序就稱之為進程。程序和進程的區別就在于&#xff1a;程序是指令的集合&#xff0c;它是進程…

flymcu無法打開串口_西門子1200與其他PLC/組態軟件無線串口通訊(自由口)

一、控制系統原理圖1:控制系統原理二、硬件需求S7-1200 PLC目前有3種類型的CPU&#xff1a;1)S7-1211C CPU2)S7-1212C CPU3)S7-1214C CPU這三種類型的CPU都可以連接三個串口通信模版本例中使用的PLC硬件為&#xff1a;1)PM1207電源(6EP1 332-1SH71)2)S7-1214C(6ES7 214-1BE30-0…

android按鈕固定尺寸,如何在android中保持按鈕的固定寬高比

我正在改進你的XML.我沒有測試它,但它應該工作.建議的更改是,而不是將圖像設置為背景,將其設置為ImageButtons的src.此外,如果您堅持使用Button,則可以使用其他布局包裝每個按鈕,并將其重力屬性設置為“center”.看一下下面的XML.android:layout_width"fill_parent"a…

橫空出世,席卷互聯網--評微軟等公司數據結構和算法面試100題

橫空出世&#xff0c;席卷互聯網 ---評微軟數據結構算法面試100題 作者&#xff1a;July。 時間&#xff1a;2010年10月-11月。版權所有&#xff0c;侵權必究。 出處&#xff1a;http://blog.csdn.net/v_JULY_v。 說明&#xff1a;本文原題為&#xff1a;“橫空出世&#xff0c…

收銀管理系統怎樣幫助商家很好地經營服裝門店

收銀管理系統對于服裝門店的經營可以提供多方面的幫助&#xff0c;以下是一些具體的優勢和功能&#xff1a; 1. 快速準確的收銀&#xff1a;收銀管理系統可以實現快速、準確的收銀操作&#xff0c;通過條碼掃描或手動輸入商品信息&#xff0c;自動計算價格并生成收據。這樣可以…

BZOJ 1567: [JSOI2008]Blue Mary的戰役地圖

二次聯通門 : BZOJ 1567: [JSOI2008]Blue Mary的戰役地圖 /*BZOJ 1567: [JSOI2008]Blue Mary的戰役地圖社會我棟哥人慫P話多暴力能A題正解能WA0*/ #include <cstdio> #include <iostream>#define rg register inline void read (int &n) {rg char c getchar (…

python模擬輸入回車鍵_用Python模擬鍵盤輸入

import win32apiimport win32conwin32api.keybd_event(17,0,0,0) #ctrl鍵位碼是17win32api.keybd_event(86,0,0,0) #v鍵位碼是86win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0) #釋放按鍵win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)附個鍵位碼表&#xff…

Python 之 進程

目錄 理論知識 操作系統背景知識 進程 什么是進程 進程調度 進程的并行與并發 同步異步阻塞非阻塞 同步和異步 阻塞與非阻塞 同步/異步與阻塞/非阻塞 組合 進程的創建與結束 進程的創建 進程的結束 在python程序中的進程操作 multiprocess&#xff08;multiproc…

從全息投影到全息平臺,必須克服7個障礙

“每個科幻愛好者和癡迷技術的人兒都希望能擁有一個全息成像臺。不幸的是&#xff0c;制造全息平臺的技術還尚未被人類掌握。據說我們離這項技術可用之時還有大約10到15年的時間——這是 AMD 的專業人士 Phil Rogers 說的&#xff0c;他專攻 3D 技術工作已超過20年。在《今日宇…

android fragment fragmenttransaction,Android FragmentTransaction 常用方法總結

FragmentManage&#xff1a;FragmentManager能夠實現管理activity中fragment. 通過調用activity的getFragmentManager()取得它的實例.FragmentManager可以做如下一些事情:1、使用findFragmentById() (用于在activity ...public class Toolkit { /** * * Role:Telec…

IBM總架構師寇衛東:話說程序員的職業生涯-IT程序人生-職業生涯規劃

初級程序員和高級程序員時期&#xff0c;都屬于職業生涯發展的第一階段&#xff0c;我們可以稱之為黃金時期。這階段程序員的年齡在20~35歲之間&#xff0c;因為年輕&#xff0c;所以更善于學習&#xff0c;而且體力充沛&#xff0c;很多走過這個階段的程序員有過通宵工作的經歷…

metric learning -- 馬氏距離與歐氏距離

一 基本概念 方差&#xff1a;&#xff08;variance&#xff09;是在概率論和統計方差衡量隨機變量或一組數據時離散程度的度量。概率論中方差用來度量隨機變量和其數學期望&#xff08;即均值&#xff09;之間的偏離程度。統計中的方差&#xff08;樣本方差&#xff09;是每個…

深入理解 C# 協變和逆變

msdn 解釋如下&#xff1a; “協變”是指能夠使用與原始指定的派生類型相比&#xff0c;派生程度更大的類型。 “逆變”則是指能夠使用派生程度更小的類型。 解釋的很正確&#xff0c;大致就是這樣&#xff0c;不過不夠直白。 直白的理解&#xff1a; “協變”->”和諧的變”…