快速構建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日誌跟蹤平臺

快速構建spring-cloud + sleuth + rabbit + zipkin + es + kibana + grafana日誌跟蹤平臺

簡介

Spring-Cloud-Sleuth

Spring-Cloud-Sleuth是Spring Cloud的組成部分之一,爲SpringCloud應用實現了一種分佈式追蹤解決方案,其兼容了Zipkin, HTrace和log-based追蹤

  • 術語(Terminology)

Span: 基本工作單元,例如,在一個新建的span中發送一個RPC等同於發送一個迴應請求給RPC,span通過一個64位ID唯一標識,trace以另一個64位ID表示,span還有其他數據信息,比如摘要、時間戳事件、關鍵值註釋(tags)、span的ID、以及進度ID(通常是IP地址)

span在不斷的啓動和停止,同時記錄了時間信息,當你創建了一個span,你必須在未來的某個時刻停止它。

Trace: 一系列spans組成的一個樹狀結構,例如,如果你正在跑一個分佈式大數據工程,你可能需要創建一個trace。

Annotation: 用來及時記錄一個事件的存在,一些核心annotations用來定義一個請求的開始和結束

cs - Client Sent -客戶端發起一個請求,這個annotion描述了這個span的開始
sr - Server Received -服務端獲得請求並準備開始處理它,如果將其sr減去cs時間戳便可得到網絡延遲
ss - Server Sent -註解表明請求處理的完成(當請求返回客戶端),如果ss減去sr時間戳便可得到服務端需要的處理請求時間
cr - Client Received -表明span的結束,客戶端成功接收到服務端的回覆,如果cr減去cs時間戳便可得到客戶端從服務端獲取回覆的所有所需時間

將Span和Trace在一個系統中使用Zipkin註解的過程圖形化:

https://gitee.com/toopoo/Spri...
clipboard.png

Rabbitmq:

消息隊列,主要用於傳輸日誌

Zipkin:

服務調用鏈路追蹤系統,聚合各業務系統調用延遲數據,達到鏈路調用監控與跟蹤。

服務調用鏈路
https://gitee.com/toopoo/Spri...
clipboard.png

服務調用鏈路詳情
https://gitee.com/toopoo/Spri...
clipboard.png

服務間的調用關係
https://gitee.com/toopoo/Spri...
clipboard.png

ES + Kibana:

提供搜索、查看和與存儲在 Elasticsearch 索引中的數據進行交互的功能。開發者或運維人員可以輕鬆地執行高級數據分析,並在各種圖表、表格和地圖中可視化數據。

https://gitee.com/toopoo/Spri...
clipboard.png

Grafana:

可視化圖表監控工具

https://gitee.com/toopoo/Spri...
clipboard.png

zipkin-server搭建與使用

version: '3'
services:
  rabbitmq:
    image: rabbitmq:alpine
    container_name: sc-rabbitmq
    restart: always
    volumes:
      - ./data/rabbitmq:/var/lib/rabbitmq
    networks:
      - sc-net
    ports:
      - 5672:5672
      
  zipkin-server:
    image: openzipkin/zipkin
    container_name: sc-zipkin-server
    restart: always
    volumes:
      - ./data/logs/zipkin-server:/logs
    networks:
      - sc-net
    ports:
      - 9411:9411
    environment:
      - RABBIT_ADDRESSES=rabbitmq:5672
      - RABBIT_MQ_PORT=5672
      - RABBIT_PASSWORD=guest
      - RABBIT_USER=guest
    depends_on:
      - rabbitmq
networks:
  sc-net:
    external: false

搭建ES + Grafana

version: '3'
services:
  elasticsearch:
    image: elasticsearch:alpine
    container_name: sc-elasticsearch
    restart: always
    volumes:
      - ./data/elasticsearch/logs:/var/logs/elasticsearch
    networks:
      - sc-net
    ports:
      - 9200:9200

  kibana:
    image: kibana
    container_name: sc-kibana
    restart: always
    volumes:
      - ./data/kibana/logs:/var/logs/kibana
    networks:
      - sc-net
    ports:
      - 5601:5601
    environment:
      - ELASTICSEARCH_URL=http://elasticsearch:9200
    depends_on:
      - elasticsearch

  grafana:
    image: grafana/grafana
    container_name: sc-grafana
    restart: always
    volumes:
      - ./data/grafana/logs:/var/logs/grafana
    networks:
      - sc-net
    ports:
      - 3000:3000

測試

啓動服務

將以上docker-compose腳本保存爲docker-compose.yml,並在當時目錄下執行docker-compose up -d

spring-cloud集成

請參考:https://github.com/zhoutaoo/S... 例子

應用集成開發好後,請求應用的接口

查看日誌

zipkin訪問地址:http://localhost:9411,可以看到請求的耗時與路徑

kibana訪問地址:http://localhost:5601,可以看到請求打印的日誌

grafana訪問地址:http://localhost:3000,可以新增es數據源,出可視化的圖表和監控

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章