我想本身搞一些知足zipkin格式的日誌,入庫es,而後讓zipkin僅作展現
1.須要瞭解zipkin組件
2,學習zipkin設計原理,什麼時候何地產生日誌 日誌如何聚合存儲
3.zipkin的自身apihtml
(1)Trace:它是由一組有相同Trace ID的Span串聯造成一個樹狀結構。爲了實現請求跟蹤,當請求請求到分佈式系統的入口端點時,只須要服務跟蹤框架爲該請求建立一個惟一的跟蹤標識(即前文提到的Trace ID),同時在分佈式系統內部流轉的時候,框架始終保持傳遞該惟一標識,直到返回請求爲止,咱們經過它將全部請求過程當中的日誌關聯起來;
(2)Span:它表明了一個基礎的工做單元,例如服務調用。爲了統計各處理單元的時間延遲,當前請求到達各個服務組件時,也經過一個惟一標識(即前文提到的Span ID)來標記它的開始、具體過程以及結束。經過span的開始和結束的時間戳,就能統計該span的時間延遲,除此以外,咱們還能夠獲取如事件名稱、請求信息等元數據。
(3)Annotation:它用於記錄一段時間內的事件。內部使用的最重要的註釋是:java
cs - Client Sent - 客戶端發送一個請求,這個註解描述了這個Span的開始。 sr - Server Received - 服務端得到請求並準備開始處理它,其中(sr – cs) 時間戳即可獲得網絡傳輸的時間。 ss - Server Sent (服務端發送響應)– 該註解代表請求處理的完成(當請求返回客戶端), (ss – sr)時間戳就能夠獲得服務器請求的時間。 cr - Client Received (客戶端接收響應)- 代表此時Span的結束,(cr – cs)時間戳即可以獲得整個請求所消耗的時間。
經過http header方式傳輸traceid spanid等segmentfault
注意:時間點計算 sr-cs:網絡延遲 ss-sr:邏輯處理時間 cr-cs:整個流程時間
上圖表示一請求鏈路,一條鏈路經過Trace Id惟一標識,Span標識發起的請求信息,各span經過parent id 關聯起來,如圖
整個鏈路的依賴關係以下:
api
sr-cs 獲得請求發出延遲 ss-sr 獲得服務端處理延遲 cr-cs 獲得真個鏈路完成延遲 注意:時間點計算 sr-cs:網絡延遲 ss-sr:邏輯處理時間 cr-cs:整個流程時間
官網翻譯服務器
Instrumented client:被裝配的客戶端 Non-Instrumented server:沒被裝配的服務端 Instrumented server:被裝配的服務端
你所在平臺是否已經有現成的裝配庫,能夠查看:現有的裝配庫網絡
┌─────────────┐ ┌───────────────────────┐ ┌─────────────┐ ┌──────────────────┐ │ User Code │ │ Trace Instrumentation │ │ Http Client │ │ Zipkin Collector │ └─────────────┘ └───────────────────────┘ └─────────────┘ └──────────────────┘ │ │ │ │ ┌─────────┐ │ ──┤GET /foo ├─▶ │ ────┐ │ │ └─────────┘ │ record tags │ │ ◀───┘ │ │ ────┐ │ │ │ add trace headers │ │ ◀───┘ │ │ ────┐ │ │ │ record timestamp │ │ ◀───┘ │ │ ┌─────────────────┐ │ │ ──┤GET /foo ├─▶ │ │ │X-B3-TraceId: aa │ ────┐ │ │ │X-B3-SpanId: 6b │ │ │ │ └─────────────────┘ │ invoke │ │ │ │ request │ │ │ │ │ │ │ ┌────────┐ ◀───┘ │ │ ◀─────┤200 OK ├─────── │ │ ────┐ └────────┘ │ │ │ record duration │ │ ┌────────┐ ◀───┘ │ ◀──┤200 OK ├── │ │ │ └────────┘ ┌────────────────────────────────┐ │ │ ──┤ asynchronously report span ├────▶ │ │ │ │{ │ │ "traceId": "aa", │ │ "id": "6b", │ │ "name": "get", │ │ "timestamp": 1483945573944000,│ │ "duration": 386000, │ │ "annotations": [ │ │--snip-- │ └────────────────────────────────┘