[分布式trace]在Ubuntu17.10上部署jaeger

关于Jaeger

Jaeger是由Uber发布的一种分布式调用链跟踪系统,主要用于集成到微服务调用追踪,和Zipkin作用类似。通过调用链跟踪系统,可以快速了解各节点的响应状况,方便定位问题。

Jaeger关键组件

Jaeger本身是一种可单独部署运行的服务,主要有以下几个关键组件:

  • 数据存储Cassandra
  • 数据收集jaeger-collector
  • 客户端代理jaeger-agent
  • 客户端库jaeger-client
  • 数据库代理jaeger-query
  • UI查询jaeger-ui

部署cassandra

首先通过docker pull的方式将cassandra镜像拉取下来:

$docker pull docker.io/cassandra

假设这里要部署的cassandra集群为两个节点,利用docker-compose来进行服务编排。
接着是创建一个docker-compose.yml文件,并设置好编排内容:

version: '2'
services:

###############################
   cassandra0:
    image: cassandra
    container_name: cassandra0
    ports:
     - 9042:9042
     - 7199:7199
    mem_limit: 1024M

###############################
   cassandra1:
    image: cassandra
    container_name: cassandra1
    ports:
     - 9142:9042
    links:
     - cassandra0:seed
    environment:
     - CASSANDRA_SEEDS=seed
    mem_limit: 1024M

yml文件设置好后在docker中启动canssandra的两个节点:

$docker-compose up -d
Creating cassandra0 ...
Creating cassandra0 done
Creating cassandra1 ...
Creating cassandra1 done

容器节点起来后,检查一下cassandra的运行状态:

$docker exec cassandra0 nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens       Owns (effective)  Host ID                               Rack
UN  172.18.0.2  204.5 KiB  256          100.0%            d7363c7e-6365-4f43-9f0d-cb75797954f7  rack1
UN  172.18.0.3  226.09 KiB  256          100.0%            0ef2f23d-8dbf-4bf0-a73e-f3cf0b65ff1b  rack1

可以看到两个节点的状态都是UN, UP-Normal, 运行正常。

在Cassandra中创建Jaeger相关表

这一步主要是先找到jaegertracing项目中用来初始化表的v001.cql.templ及create.sh脚本,
然后通过cqlsh命令来执行相关初始化操作:

$pip install cqlsh
$cd $GOPATH/src/github.com/jaegertracing/jaeger/plugin/storage/cassandra/schema/
$DATACENTER=dc1 REPLICATION_FACTOR=1 MODE=prod ./create.sh v001.cql.templ | cqlsh --cqlversion=3.4.4
Using template file v001.cql.templ with parameters:
    mode = prod
    datacenter = dc1
    keyspace = jaeger_v1_dc1
    replication = {'class': 'NetworkTopologyStrategy', 'dc1': '1' }
    trace_ttl = 172800
    dependencies_ttl = 0

部署Jaeger

有了存储服务后,最后一步我们来部署Jaeger相关的服务组件。

1. 下载 Jaeger安装包

$tar -zxvf jaeger-1.5.0-linux-amd64.tar.gz -C /your_path/
$cd /your_path/
$mv jaeger-1.5.0-linux-amd64 jaeger
$cd jaeger

2. 部署Collector,Agent,Query

$mkdir log
$nohup ./jaeger-collector --cassandra.keyspace=jaeger_v1_dc1  --cassandra.servers=127.0.0.1 --collector.zipkin.http-port=9411 >> log/collector.log 2>&1 &
$nohup ./jaeger-agent  --collector.host-port=127.0.0.1:14267 >> log/agent.log 2>&1 &
$nohup ./jaeger-query --cassandra.keyspace jaeger_v1_dc1  --cassandra.servers 127.0.0.1 --query.static-files=./jaeger-ui-build/build >> log/query.log 2>&1 &

3. 打开UI查询页

所有组件都运行起来后,可以这样来访问查询页面, 如打开http://yourIP:16686/即可看到主界面:
JaegerUI

猜你喜欢

转载自blog.csdn.net/moxiaomomo/article/details/80723758