[jaeger] 1、安装和部署

基本介绍

支持OpenTracingserver端有不少,咱们总要选一个。在这里,选用jaegerjaeger的开发较为活跃,支持的客户端实现也较多。因为采用了golang开发,发行包也比较简洁。前端

jaeger的官网是 www.jaegertracing.io/java

特色

jaeger的开发语言是`golang`
 jaeger支持OpenTracing协议,同属于CNCF基金会 
 jaeger支持各类各样的客户端,包括Go、Java、Node、Python、C++等
 jaeger支持udp协议传输,固然也支持http
复制代码

jaeger可以解决如下问题

分布式事务监控
性能分析与性能优化
调用链,找到根源问题
服务依赖分析(需大数据分析)
复制代码

安装需了解的技术栈:

OpenTracing
Golang
ElasticSearch
Kafka (可选)
复制代码

安装

下载

jaeger是二进制发行包,使用wget下载便可,这里以linux版本为例。linux

wget -c https://github.com/jaegertracing/jaeger/releases/download/v1.11.0/jaeger-1.11.0-linux-amd64.tar.gz
复制代码

jaeger的二进制发行包包含五个二进制文件:git

jaeger-agent
jaeger-collector
jaeger-query
jaeger-standalone
jaeger-ingester	
复制代码

若是没有执行权限,可使用github

chmod a+x jaeger-*
复制代码

增长执行权限。golang

选择存储

trace数据总要存在一个地方。jaeger支持ESCanssandra两种后端DB。国内用ES的多一点,咱们就以ES为例,来介绍其安装方式。后端

ES请先自行安装。性能优化

因为上面四个命令都有不少参数,因此咱们能够建立几个脚本,来支持jaeger的启动。bash

start-collector.shapp

export SPAN_STORAGE_TYPE=elasticsearch
nohup ./jaeger-collector  --es.server-urls http://10.66.177.152:9200/  --log-level=debug > collector.log  2>&1 &
复制代码

start-agent.sh

export SPAN_STORAGE_TYPE=elasticsearch
nohup  ./jaeger-agent  --collector.host-port=10.66.177.152:14267 --discovery.min-peers=1 --log-level=debug > agent.log 2>&1 &
复制代码

start-query.sh

export SPAN_STORAGE_TYPE=elasticsearch
nohup ./jaeger-query --span-storage.type=elasticsearch --es.server-urls=http://10.66.177.152:9200/  > query.log 2>&1 &
复制代码

部署方式

jaeger有两种部署方式。下面一一介绍。若是你的数据量特别多,使用kafka缓冲一下也是能够的(因此就引入了另一个组件jaeger-ingester),很少作介绍。

简易环境

这种方式通常用在dev环境或者其余测试环境。只须要部署一个单一节点便可。咱们的app,须要手动填写agent的地址,这个地址通常都是固定的。

这些环境的流量很小,一个agent是足够的。

更加简洁的部署方式,连agent都不须要,直接向collector发送数据便可。为了方便测试,咱们使用此方式。

生产环境

上面这种部署方式,适合生产环境。agent安装在每一台业务机器上。Client端的目标agent只须要填写localhost便可。

这种方式的好处是生产环境的配置很是的简单。即便你的机器是混合部署的,也能正常收集trace信息。

调用关系图

jaeger的调用关系图是使用spark任务进行计算的。项目地址为:

https://github.com/jaegertracing/spark-dependencies
复制代码

做为一个可选部分,只有在计算完毕后,才能在jaeger的后台中进行展示。

端口整理

Agent

5775 UDP协议,接收兼容zipkin的协议数据
6831 UDP协议,接收兼容jaeger的兼容协议
6832 UDP协议,接收jaeger的二进制协议
5778 HTTP协议,数据量大不建议使用
复制代码

它们之间的传输协议都是基于thrift封装的。咱们默认使用5775做为传输端口。

Collector

14267 tcp agent发送jaeger.thrift格式数据
14250 tcp agent发送proto格式数据(背后gRPC)
14268 http 直接接受客户端数据
14269 http 健康检查
复制代码

Query

16686 http jaeger的前端,放给用户的接口
16687 http 健康检查
复制代码

至此,咱们的jaeger就安装完毕。

End

以上,就是咱们的环境准备。有了一个server接收数据,调用链的主要工做就在于客户端开发。

接下来,将从一个简单的java程序提及,来讲明OpenTracing规范的使用方式。

相关文章
相关标签/搜索