1 監控在微服務架構的地位

2 為何需要調用鍊監控?
- 在初期的單體應用,應用都打在一個包中,無分布式概念,監控也隻需對一些埋點監控。
但是微服務時代下,很多服務在各自的包,一旦出現問題,沒有調用鍊監控就很難定位問題!
3 沒有應用監控可能帶來的坑點
- 線上釋出了服務,怎麼知道一切正常?
- 大量報錯,到底哪裡産生的,誰才是根因?
- 人工配置錯誤,上線前通宵排錯,結婚了還得來修 bug!
- 應用程式有性能問題,怎麼盡早發現問題?
- 資料庫問題,在出問題之前能洞察嗎?
最後誰都查不出問題,全部甩鍋網絡問題~
可能出錯的事總會出錯!!!(墨菲定律)
微服務需要應用監控!!!
4 DevOps 實踐
-
要提升先測量
開爾文曾經曰過:If you can’t measure it, you can’t improve it.
知道系統的目前性能名額,才知道該如何優化。
- 研發自主監控所負責的系統
5 Open Tracing
為了這些監控軟體而規範,支援很多語言無縫切換。
監控演進史
eBay的老員工跳槽到點評後開發了 CAT。
開源産品對比
調用鍊監控主要适用于同步場景。異步調用一般不建議,因為異步多線程沒有明确調用先後時序關系。實際有些場景(比如異步消息追蹤)确實需要的話,也是可以做到的,原理就是在跨越線程邊界的時候(類似跨越程序邊界),需要把trace上下文向異步線程傳遞,具體做法一般需要定制。Skywalking的異步支援做的比較好,它提供的一些plugin有些已經支援異步追蹤,如果你了解原理,也可以自己實作埋點,參考:
https://github.com/apache/skywalking/blob/master/docs/en/setup/service-agent/java-agent/Application-toolkit-trace-cross-thread.md參考