微服務監控zipkin+asp.net core

0、目錄


總體架構目錄:ASP.NET Core分佈式項目實戰-目錄html

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

1、zipkin介紹


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

以下圖:微服務調用狀況深度。(官方文檔圖)github

 

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

 

2、zipkin做用


 一、全鏈路追蹤工具(查看依賴關係)docker

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

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

 結構圖:瀏覽器

 

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

 

 

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


 

3、asp.net core 部署zipkin

一、須要在每一個微服務框架中加入zipkin分佈式跟蹤系統

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

二、nuget包安裝:

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

三、項目中的 Startup.cs 裏面Configure方法中註冊中間件

 

 四、配置startup.cs以後還須要配置RPCTraceHandler

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

 

 五、上面部署的的只是demo1 服務,所以一樣的方式部署demo2項目。

 

六、如今docker部署zipkin

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

 部署成功後 在瀏覽器中打開 ,這邊我採用的是虛擬機,所以打開地址爲 192.168.216.135:9411 

 

七、至此部署完成

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

追蹤在zipkinUI 上面呈現以下:

圖一、

圖二、

圖3:依賴分析

八、此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技術交流羣: 歡迎加羣

                

相關文章
相關標籤/搜索