微服務架構雖然誕生的時間並不長,卻因為適應現今網際網路的高速發展和敏捷、devops等文化而受到很多企業的推崇。微服務架構在帶來靈活性、擴充套件性、伸縮性以及高可用性等優點的同時,其複雜性也給運維工作中最重要的監控環節帶來了很大的挑戰:海量日誌資料如何處理,服務如何追蹤,如何高效定位故障縮短故障時常……
infoq記者採訪了京東雲應用研發部門運維負責人,來談一談微服務架構下的監控應該注意哪些方面。
在京東雲運維專家看來,微服務架構給it系統和團隊帶來了以下顯著的變化:
在轉型到微服務架構以後,使用者在監控方面主要會面臨以下問題。
其次,第三方依賴越來越多。例如docker的可靠性很大程度上取決於宿主機,如果所在的宿主機發生資源爭用,網路異常,硬體故障,修改核心引數,作業系統補丁公升級等,都可能會讓docker莫名其妙地中招。
第三,服務故障的定位成本增加。假設故障是因為特定服務處理耗時增大導致的,那麼如何快速從106個服務以及眾多的第三方依賴中把它找出來,進一步,又如何確認是這個服務的單個例項還是部分例項的異常,這些都讓故障定位變得更複雜。
在微服務架構下,提高故障定位效率的常用方法有:基於各類日誌分析,通過儀錶盤展示核心指標:資料流,異常的監控策略,變更內容,線上登入和操作記錄,檔案修改等內容。
在微服務架構下,監控系統在報警時效性不可改變的前提下,採集的指標數量是傳統監控的三倍以上,如果是萬台以上的規模,監控系統整體都面臨非常大的壓力,在監控方面的挑戰主要**於:
首先,儲存功能的寫入壓力和可用性都面臨巨大挑戰。每秒寫入幾十萬採集項並且需要保證99.99%的可用性,對於任何儲存軟體來講,都不是一件輕鬆的事情。
對於寫入和可用性的壓力,業界常見的解決思路主要是基於如下方式的組合:
其次,監控的生效速度也面臨巨大挑戰。微服務架構下,基於彈性伸縮的加持,從服務擴容或者遷移完畢到接入流量的耗時降低到1min左右,且每時每刻都在不斷發生著。對於複雜監控系統來講,支援這樣的變更頻率絕非易事,而且例項變更如此頻繁,對監控系統自身來講,也會面臨可用性的風險。
常見的提高監控生效速度的思路主要有如下的幾種方式:
第三,基礎設施的故障可能導致報警風暴的發生。基礎設施如idc故障,可能會在瞬時產生海量報警,進而導致簡訊閘道器擁塞較長時間。
解決這類問題的思路主要是如下方式:
首先,應該監控哪些功能?建議將系統接入層的訪問日誌,top-10的url新增黑盒監控。那top-9的url是否一定需要監控?top-11的url是否一定不需要監控?這取決於其訪問量是否和前面的url在乙個數量級以及人工評估其介面的重要性程度,這裡提供的更多是乙個思路,而非可量化的方法。
第二,應該使用多少個樣本/節點對乙個功能進行黑盒監控?建議樣本應該覆蓋到對應模組的所有例項,這樣也能發現由少數例項導致的小規模故障。
從使用者的角度看,prometheus的整體架構設計參考了google borgmon,系統具有高度的靈活性,圍繞其開放性現在也慢慢形成了乙個生態系統。具體來說,prometheus 使用的是 pull 模型,prometheus server 通過 http 的 pull 方式到各個目標拉取監控資料。http協議的支援能夠更加方便的進行定製化開發,服務註冊、資訊採集和資料展示均支援多種形式/開源軟體。
結合目前國內正在興起的智慧型運維,也許不久的將來,上面提到的監控的各種問題也就迎刃而解了。監控策略不在需要人工定義,轉由機器學習負責,諸如策略新增,閾值設定,異常檢測,故障定位,自動止損等逐步由系統負責,運維人員不再是「救火隊長」。
京東雲運維平台為數萬台機器提供監控,部署,機器管理,許可權管理,安全管理,審計和運營分析等功能,為京東雲所有的業務在各類異構網路環境下提供標準和統一的運維支撐能力。
基於產品所處的發展階段,使用者規模的不同,報警頻率也不盡相同。理想情況下,報警頻率應該等同於故障頻率,這裡面體現了報警的準確度和召回率兩個指標,如果每個報警都對應乙個服務故障,則準確度為100%,同理,如果每次服務故障均有報警產生,則召回率為100%。大家可以基於上述兩個指標,來衡量自己團隊的現狀,並針對性的制定提公升計畫即可。
對於響應流程,京東雲有幾個做的好的地方可以給大家參考。
對於監控系統的未來發展,京東雲的運維專家認為長期來看,依託於kubernetes的發展,在基礎設施的各個領域,都會從百花齊放到幾家獨大,從而將標準化落地到基礎設施的各個領域,進而促進整個生態的繁榮。
在監控方向,prometheus在未來一段時間後,也許會是乙個很好的選擇。在prometheus等工具解決了通用的監控場景並標準化之後,在其上的各類應用場景,如容量規劃,流量監控,故障定位以及各種基於大資料和人工智慧場景的落地等,就會出現百花齊放之勢。
微服務架構下的監控問題
用一句話概括就是服務特別多,服務間的呼叫也變得非常複雜 我們其實是微服務的受害者,其實業內很多人做的架構只是服務化,並不夠 微 而我們做的比較徹底,我們線上很多服務都只有乙個 api,但這樣造成線上指標非常多,告警也非常多,讀和寫的壓力都非常大。第二個是智慧型化的監控和告警,運用合適的演算法並加上機...
高防伺服器租用需要注意哪些問題?
高防伺服器主要是針對企業使用者的,相對來說,這些企業使用者對於網路安全的要求更高,高防伺服器給使用者提供了更加安全的網路執行環境,為企業客戶提供安全的保證。在租用高防伺服器之前,都需要注意哪些內容?1.高防伺服器安全穩定性 高防伺服器本身對於安全防禦要求就比較高,所以一定要有乙個穩定而且軟硬體先進的...
學習Python,有哪些需要注意的地方?
python以其語法的簡單,成為不少小白的首選。在學習python的過程中,有哪些我們需要注意的地方?下面以個人的經歷為例,提供一些看法,希望對你有用。另外一種可能是你完全沉浸在做專案中,忽略了學習理論知識。做專案雖然充滿困難,但回報是強烈的成就感,很容易沉浸其中。我覺得這是極其錯誤的。首先半路出家...