長假過完,相信無緣支付寶中國錦鯉的你必定已經回來工做了。雖然輕輕鬆鬆與全球免單大禮包失之交臂,但不要喪氣,小編悄悄爲你準備了一份祕籍,助你在2018年最後不到三個月的時間裏成功逆襲,斬獲年終獎的大錦鯉! 本月小編將帶你們一塊兒瞭解UAVStack的調用鏈技術,講述調用鏈技術的源起、實現、應用以及關鍵技術。好好研習本月的每篇推送,說不定年終獎的錦鯉就是你哦~~~趕快進入正文吧html
近年來,Observability一詞開始在監控社區流行。筆者將Observability視爲一種理念,一種監控的超集,涵蓋監控、日誌聚合和分佈式跟蹤,可以更加深刻地實時觀察系統。本文將就日誌聚合、分佈式跟蹤及兩者的關聯運用展開說明。前端
微服務、雲和容器化架構的出現,改變了咱們構建系統的方式。應用程序是分佈式的,並且瞬息萬變;底層基礎設施和網絡服務越發健壯。平常系統運維的大部分工做將集中於應用程序層或不一樣應用程序之間的複雜交互調用。git
對於複雜的跨系統調用,一次請求可能須要後臺幾臺或上百臺節點的支持。此時,單純依靠人力已經很難追蹤到一次請求的完整調用流程,而最能反映每次請求處理過程的應該是分佈式追蹤調用鏈(下文簡稱「調用鏈」)。github
調用鏈着眼於一次請求的完整調用流程,當細粒到具體節點時,應用系統自身打印的日誌最能說明當前節點的處理邏輯。服務器
下圖呈現了調用鏈和日誌聚合的關聯方式:網絡
調用鏈的做用是記錄並彙總展現一次請求所通過的全部節點和關鍵操做,如圖中綠色箭頭,從全局的層面展現一次請求的完整調用流程。架構
日誌聚合的做用是彙總整理全部節點和系統產生的日誌,併爲用戶提供友好有效的查詢能力。框架
傳統的處理方式每每須要在調用鏈和日誌聚合之間反覆切換,即在調用鏈上發現問題後,須要切換到日誌聚合,根據特定屬性查詢對應的日誌信息,排查日誌信息後再次返回調用鏈,查詢與日誌信息關聯的調用鏈信息……如此往返屢次。運維
對於這種經典場景,日誌與調用鏈的關聯式跟蹤查詢提供了一種全新的閉環處理模式:分佈式
在應用集羣中的機器上部署代理程序(Agent),用於數據收集和上送;將探針內嵌在容器(Tomcat等)中,用於應用畫像和應用信息收集。
Agent經過MQ將處理過的日誌上送到監控服務器。
監控服務器對採集的數據進行處理,並將其存入ES,方便用戶經過特定特徵快速定位。
將數據進行可視化展現,並提供方便的可視化自定義查詢服務。
在介紹調用鏈和日誌聚合的具體實現以前須要先明確幾個概念:
在中間件啓動時動態地將本身的代碼行爲植入中間件的各類行爲中的技術。例如,在Tomcat啓動時,在Tomcat處理請求的開始位置動態地添加代碼劫持,從而在Tomcat執行處理請求邏輯以前實現服務調用畫像等功能。更多能力及實現方式請參考JAVA服務治理實踐之無侵入的應用服務監控。
經過中間件劫持技術在服務調用的最前端產生可以惟一肯定一條調用鏈的ID。
調用鏈部分:模型設計、服務端信息收集(輕/重)、方法級信息收集(輕/重)、客戶端信息收集(輕/重)、調用鏈協議設計(輕/重)、調用鏈上下文傳遞、調用信息記錄及傳遞、調用數據統計處理幾個關鍵過程。
關鍵技術:中間件劫持加強框架、調用模型設計和調用鏈上下文傳遞。
詳情參見:架構文檔
應用日誌部分:日誌歸集,日誌內容處理傳輸,服務端日誌處理及存儲等幾個關鍵步驟。
關鍵技術:服務畫像技術、日誌歸集。
詳情參見:架構文檔
歡迎下載UAVStack的源碼或AllInOne開發演示版體驗。
調用鏈入口:
以上就是對調用鏈概念、功能及實現策略的介紹,下期文章咱們將繼續介紹調用鏈的模型設計與模型時序圖,歡迎繼續關注~
UAVStack已在Github上開放源碼,並提供了安裝部署、架構說明和用戶指南等雙語文檔,歡迎訪問-給星-拉取~~~
掃一掃下方二維碼,關注一個不會讓你失望的公衆號
你們好,我是李崇,宜信架構師,宜信集團級監控項目monitor、apm及ServiceGovern領域負責人。我。同時也是開源項目UAVStack核心開發人員,本週六(10月20日)我會作客掘金技術沙龍爲你們作一場《多技術棧下的APM系統-UAVStack》的分享,歡迎你們能夠現場交流。
點擊圖片瞭解詳情: