每一個企業都意識到監控工做的重要性,但80%企業的監控工做仍然處在監控的初級階段。html
什麼事高級階段呢? 我認爲高級階段是監控與災備系統打通融合一體。除此以外監控與開發密切相關,在開發階段須要爲監控數據採集作鋪墊,每開發一個新功能就要想到將來這個功能是否須要監控,怎樣監控。數據前期採集與數據挖掘很是重要,監控不只能作軟件與硬件的性能分析,還能提供決策支持。ios
除了監控,另外一個息息相關的是自動故障轉移,有興趣能夠看看個人其餘文章 http://netkiller.github.io/journal/git
你在百度上搜索監控多半是一些開源或商業軟件的安裝配置指南。這些文章中會告訴你怎樣監控CPU、內存、硬盤空間以及網絡IP地址與端口號碼。github
開源軟件無非是 Nagios, Cacti, Mrtg, Zibbix ..... 這些軟件在個人電子出書《Netkiller Monitoring 手札》中都有詳細說明安裝與配置方法。web
商業軟件也有不少如 SolarWinds, Whit's Up,PRTG ......redis
全部的服務器,網絡設備,監控你都作了,那麼按照我上面的監控分級,你處於監控的那個階段?服務器
監控都有哪些手段跟方式呢?網絡
一般是經過IP地址訪問遠程主機,實施監控,經常使用方法是SNMP,SSH,以及各類Agent(代理),方式是請求而後接收返回結果,經過結果判斷主機狀態。運維
Monitor Server | ------------------------------- | | | [Web] [Mail] [Database]
以監控服務器爲中心,星型散射鏈接其餘監控節點,沒有什麼優勢,缺點是Web跟Mail節點的通訊沒有監控工具
這個詞是我想出來的,不知道是否確切,一級一級的向下探測,尋找故障點
Monitor Server | ------------------------------- | | | V V V | | | [Web] ---> [Cache] ---> [Database] \ ^ `------------------------|
首先監控服務器跟星型拓撲同樣監控,再讓Web節點去訪問Cache節點而後返回監控結果,以此類推,讓Cache節點訪問Database, 讓Web訪問Database節點。
將全部業務邏輯都逐一模擬一次,任何一個環節出現問題,當即發出警告。
這裏主要監控服務是否可用,能夠檢查軟件的工做狀況,涉及測試環節。
經過自動化測試工具輔助監控,例如模擬鼠標點擊,鍵盤輸入,能夠監控圖形界面程序與網頁程序。
Windows 監控能夠經過 Windows Automation API實現,經過程序控制,可以模擬人工操做軟件,實現操做匹配返回結果實現自動化監控
Web頁面監控的方案就太多了,比較經典的是Webdriver衍生出的各類工具Selenium - Web Browser Automation最爲出名。我經過這個工具模擬用戶操做,例如用戶註冊,登錄,發帖,下單等等,而後匹配返回結果實現自動化監控與報警
經過數據分析,將故障消滅在故障發生前。舉一個例子,開發人員忘記設置redis 時間,雖然程序一直無缺工做,但redis內存不斷增加,總一天會出現故障。
咱們經過採集redis狀態信息,分析一段時間內數據變化發現了這個問題。
談到監控不少人認爲這是運維的事情,實則否則,不懂運維的測試不是好開發。
開發過程當中須要考慮到監控,例如Nginx的status模塊, MySQL的show status命令, Redis的info命令,都是爲監控預留的。那麼你開發的程序是否考慮到了監控這塊呢?
你能夠經過日誌形式或者管道,再或者Socket將程序的運行狀態提供給監控採集程序。
好的監控的能讓你對系統瞭如指掌,作到內心有數。有數據纔好說話。
http://netkiller-github-com.iteye.com/blog/2190593