微服務監控zipkin+asp.net core


0、目錄


整體架構目錄:ASP.NET Core分布式項目實戰-目錄

監控目錄:微服務監控zipkin、skywalking以及日志ELK監控系列

一、zipkin介紹


 zipkin是一種分布式跟蹤系統,有助於收集微服務架構中的延遲問題所需要的時序數據(收集查找),收集微服務之間的調用情況,然后處理調用之間數據延遲等問題。

如下圖:微服務調用情況深度。(官方文檔圖)

 

以及依賴圖分析,會展示出微服務之間的調用關系。當然下圖展示的是我案例中的圖片

 

二、zipkin作用


 1、全鏈路追蹤工具(查看依賴關系)

2、查看每個接口、每個service的執行速度(定位問題發生點或者尋找性能瓶頸)

zipkin包含:
         收集器(Collector):主要是收集微服務所產生的數據(收集器有:http、kafka、rabbitmq)
   UI(界面):主要是展示數據的界面
   Storage(存儲):存儲數據(es、mysql、內存、cassandra)
        in-memory:僅供測試
        JDBC(mysql):數據采集量很大,查詢速度會比較慢。
        Cassandra:zipkin最初始內建的存儲(擴展性好、schema靈活)
        (推薦)Elasticsearch:被用於大規模,數據量大的,存儲形式json。
  API:查看/檢索 數據的接口,主要用於WebUI中

 結構圖:

 

流程解釋:
1、transport作用:收集trace的services的spans,並將它們轉化為zipkin common span
2、zipkin核心數據結構
Annotation:用於定位一個request的開始和結束,計算調用延遲。
cs:Client Start,表示客戶端發起請求,一個span的開始
sr:Server Receive,表示服務端收到請求
ss:Server Send,表示服務端完成處理,並將結果發送給客戶端
cr:Client Received,表示客戶端獲取到服務端返回信息

 

 

注意:時間點計算
sr-cs:網絡延遲
ss-sr:邏輯處理時間
cr-cs:整個流程時間


 

三、asp.net core 部署zipkin

1、需要在每個微服務框架中加入zipkin分布式跟蹤系統

此項目會新建兩個項目一個是 demo1,一個是demo2

2、nuget包安裝:

zipkin4net(追蹤器)
zipkin4net.middleware.aspnetcore(aspnetcore 中間件)

3、項目中的 Startup.cs 里面Configure方法中注冊中間件

 

 4、配置startup.cs之后還需要配置RPCTraceHandler

即在發送Get/Post請求的HttpClient中添加追蹤處理者,至此 asp.net core部署完成。

 

 5、上面部署的的只是demo1 服務,因此同樣的方式部署demo2項目。

 

6、現在docker部署zipkin

數據存儲方式:內存(僅測試)
docker 命令: docker run -d -p 9411:9411 --name zipkin openzipkin/zipkin

 部署成功后 在瀏覽器中打開 ,這邊我采用的是虛擬機,因此打開地址為 192.168.216.135:9411 

 

7、至此部署完成

我們在 asp.net core項目的控制其中寫上調用demo2   api/values 的接口地址

追蹤在zipkinUI 上面呈現如下:

圖1、

圖2、

圖3:依賴分析

8、此zipkin 部署是存在內存中的,不適合正式環境

注:一旦數據量上去后,zipkin容易被壓崩掉。
因此需要其他解決方案代替。

目前樓主我采用的解決方案是kafka+zipkin+es。如果有更好的解決方案可以嘗試。


 

項目demo代碼:

 github: zipkinTraceDemo

參考資料:
官網文檔:https://zipkin.io/pages/architecture.html
ZIPKIN API 接口:https://zipkin.io/zipkin-api/#/


 

asp.net Core 交流群:787464275 歡迎加群交流
如果您認為這篇文章還不錯或者有所收獲,您可以點擊右下角的【推薦】按鈕精神支持,因為這種支持是我繼續寫作,分享的最大動力!

作者:LouieGuo
聲明:原創博客請在轉載時保留原文鏈接或者在文章開頭加上本人博客地址,如發現錯誤,歡迎批評指正。凡是轉載於本人的文章,不能設置打賞功能,如有特殊需求請與本人聯系!

微信公眾號:歡迎關注                                                 QQ技術交流群: 歡迎加群

                


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM