概述
Jaeger是由Uber開源的分布式追蹤系統,一套完整的Jager追蹤系統包括Jaeger-client、Jaeger-agent、Jaeger-collector、Database和Jaeger-query UI等基本組件,如下圖架構圖所示,Jaeger客戶端支持多種語言,jaeger-agent與客戶端進行數據交互,並把數據push到Jaeger-collector組件,Jaeger-collector將數據持久化到數據庫,Jaeger-query是一個web服務,用於展示跟蹤鏈路。以下為Jaeger容器化部署的基本流程: 分為測試環境和正式環境兩種方式。
All-In-One測試環境部署
run.sh: 在某台服務器假設ip為10.11.0.10上運行腳本
#!/usr/bin/env bash docker run -d --name jaeger \ -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \ -p 5775:5775/udp \ -p 6831:6831/udp \ -p 6832:6832/udp \ -p 5778:5778 \ -p 16686:16686 \ -p 14268:14268 \ -p 9411:9411 \ --restart=always \ jaegertracing/all-in-one:1.15
Production環境部署
docker-compose.yml: 在某台服務器假設ip為10.11.0.10上,部署除Jaeger-agent以外的所有組件
version: '2' services: jaeger-collector: container_name: jaeger-collector image: jaegertracing/jaeger-collector command: ["--cassandra.keyspace=jaeger_v1_dc1", "--cassandra.servers=cassandra", "--collector.zipkin.http-port=9411"] ports: - "14269" - "14268:14268" - "14267" - "14250:14250" - "9411:9411" restart: always depends_on: - cassandra-schema jaeger-query: container_name: jaeger-query image: jaegertracing/jaeger-query command: ["--cassandra.keyspace=jaeger_v1_dc1", "--cassandra.servers=cassandra"] ports: - "16686:16686" - "16687" restart: always depends_on: - cassandra-schema cassandra: container_name: cassandra image: cassandra:3.11 volumes: - /data:/var/lib/cassandra restart: always cassandra-schema: container_name: cassandra-schema image: jaegertracing/jaeger-cassandra-schema depends_on: - cassandra
run_agent.sh: 在所有需要追蹤的服務所在的服務器部署Jaeger-agent
#!/usr/bin/env bash docker run -d --name jaeger-agent \ -p 5775:5775/udp \ -p 6831:6831/udp \ -p 6832:6832/udp \ -p 5778:5778 \ --restart=always \ jaegertracing/jaeger-agent --reporter.grpc.host-port=10.11.0.10:14250
訪問Jaeger web ui通過http://10.11.0.10:16686
參考文檔
https://www.jaegertracing.io/docs/1.16/