概述
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