基于open tracing和uber/jaeger,展示整个分布式系统的调用链,实现微服务性能的实时监控。
docker 安装
jaeger-query:
docker run -it --rm --name jaeger-query -e SPAN_STORAGE_TYPE=elasticsearch -e ES_SERVER_URLS=http://ip:port -e ES_USERNAME=elastic -e ES_PASSWORD=xxxxxx -p 16686:16686/tcp jaegertracing/jaeger-query
jaeger-collector:
docker run -it --rm --name jaeger-collector -e SPAN_STORAGE_TYPE=elasticsearch -e ES_SERVER_URLS=http://ip:port -e ES_USERNAME=elastic -e ES_PASSWORD=xxxxxx -p 14267:14267 -p 14268:14268 -p 9411:9411 jaegertracing/jaeger-collector
jaeger-agent:
docker run -it --rm --name jaeger-agent -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778/tcp jaegertracing/jaeger-agent --collector.host-port=collector ip:14267
docker compose编排
docker-compose.yml:
version: '2'
services:
jaeger-collector:
build:
context: jaeger-collector/
environment:
SPAN_STORAGE_TYPE: elasticsearch
ES_SERVER_URLS: http://elasticsearch680:9200
ports:
- "14267:14267"
- "14268:14268"
- "9411:9411"
jaeger-query:
build:
context: jaeger-query/
environment:
SPAN_STORAGE_TYPE: elasticsearch
ES_SERVER_URLS: http://elasticsearch680:9200
ports:
- "16686:16686"
networks:
default:
external:
name: alibaba_es_ejaeger
数据持久化
采用es对jaeger收到的数据进行持久化处理。
由于es和jaege部署在同一台物理主机上,此时需要保证es和jaeger处于同一个docker network中,否则jaeger无法连接es。
docker-compose.yml
version: '2' services: elasticsearch680: image:
alibaba-es:6.8.0
build: context: elasticsearch/ volumes: - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro - ./elasticsearch/data:/usr/share/elasticsearch/data - ./elasticsearch/logs:/usr/share/elasticsearch/logs ports: - "9201:9200" - "9301:9300" environment: ES_JAVA_OPTS: "-Xmx256m -Xms256m" networks: - ejaeger networks: ejaeger: driver: bridge
参考文章点击打开