版權聲明
轉載請與作者聯繫,轉載時請務必標明文章原始出處和作者信息及本聲明。
|
|
|
微信掃瞄二維碼進入 Netkiller 微信訂閲號 QQ群:128659835 請註明“讀者” |
2017-06-16
2015-03-16 第一版
每個企業都意識到監控工作的重要性,但80%企業的監控工作仍然處在監控的初級階段。
監控從初級向中繼再到高級,是轉被動到主動,從人工到自動化。
監控不應該侷限在硬件與服務,還應該延伸到業務領域。
你在百度上搜索監控多半是一些開源或商業軟件的安裝配置指南。這些文章中會告訴你怎樣監控CPU、內存、硬碟空間以及網絡IP地址與連接埠號碼。
開源軟件無非是 Nagios, Cacti, Mrtg, Zibbix ..... 這些軟件在我的電子出書《Netkiller Monitoring 手札》中都有詳細說明安裝與配置方法。
商業軟件也有很多如 SolarWinds, Whit's Up,PRTG ......
所有的伺服器,網絡設備,監控你都做了,那麼按照我上面的監控分級,你處于監控的那個階段?
監控都有哪些手段跟方式呢?
中心衛星站為中心站點向外放射,通常是通過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將程序的運行狀態提供給監控採集程序。
好的監控的能讓你對系統瞭如指掌,做到心裡有數。有數據才好說話。