最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

【播资讯】Jaeger&ElasticSearch存储链路追踪数据

来源:博客园

前言

Jaeger的all in one镜像下是用内存存储(或是临时文件格式存储),容器重启,数据丢失。生产环境下更多是存储到es或是cassandra,这样对于查询或是系统扩展是比较方便的。此处介绍Jaeger的几个组件独立部署以及存储到ElasticSearch中。使用单个拉取镜像创建容器的方式,不通过docker compose批量创建。

Jaeger

组件部分

all in one镜像中,如下几个部分全部打包到一个镜像中。此处对这几个部分使用各组件独立镜像单独部署。

  • Jaeger Agent: 一个监听在UDP端口上接收链路数据的网络守护进程,它从应用程序收集,批处理,并发送给Collector,(也可以没有这个,client直接上报)。
  • Jaeger Collector: 负责接收Jaeger-client或Jaeger-agent上报的调用链路数据,并通过处理管道运行它们,该管道验证跟踪、对它们进行索引、执行任何转换并最终保存到内存或外部存储系统中,供UI展示。
  • Jaeger Query: 查询服务从存储中检索跟踪并呈现 UI 来显示它们。
  • DB: 采用EleasticSearch作为存储引擎。
  • Jaeger Spark dependencies: 从存储中收集span数据,分析服务间的连接和依赖,并将它们存储起来以便在Jaeger UI 中显示。all in one镜像中不需要这个。

组件镜像

官网提供了镜像的拉取命令,版本,用途等信息。


【资料图】

https://www.jaegertracing.io/download/

Jaeger Collector

拉取镜像

docker pull jaegertracing/jaeger-collector:1.40

创建容器

docker run -d --name=StarCityJaegerCollector -p 9411:9411 -p 14250:14250 -p 14268:14268 -e SPAN_STORAGE_TYPE=elasticsearch -e ES_SERVER_URLS=http://es ip:9200 jaegertracing/jaeger-collector:1.40

端口说明

端口号协议功能
9411HTTP能通过 JSON 或 Thrift 接收 Zipkin spans,默认关闭
14250gRPC用于jaeger-agent发送model格式的span
14268HTTP能直接接收来自客户端的 jaeger.thrift 格式的 span
14269HTTP健康检查与自身服务的度量指标

Jaeger Agent

拉取镜像

docker pull jaegertracing/jaeger-agent:1.40

创建容器

docker run -d --name=StarCityJaegerAgent -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778/tcp -p 5775:5775/udp -e REPORTER_GRPC_HOST_PORT=Jaeger Collecor Ip:14250 -e LOG_LEVEL=debug jaegertracing/jaeger-agent:1.40

其中REPORTER_GRPC_HOST_PORT即为Agent要上报到Collector的地址

端口说明

端口号协议功能
6831UDP使用thrift 协议中compact格式协议,接收 jaeger thrift 类型的数据,大多数Jaeger Client所使用
6832UDP使用thrift 协议中binary格式协议,接收 jaeger thrift 类型的数据,为NodeJs的Jaeger Client所使用
5778HTTP服务配置与采样策略
5775UDP使用thrift 协议中compact格式协议,接收 zipkin thrift 类型的数据(无需使用该端口)
14271HTTP健康检查与自身服务的度量指标

Jaeger Query

拉取镜像

docker pull jaegertracing/jaeger-query:1.40

创建容器

docker run -d --name=StarCityJaegerQuery -p 16686:16686 -p 16687:16687 -e SPAN_STORAGE_TYPE=elasticsearch -e ES_SERVER_URLS=http://es ip:9200 jaegertracing/jaeger-query:1.40

SPAN_STORAGE_TYPE指定存储类型,ES_SERVER_URLS指定ES地址,从其中查询数据。

端口说明

端口号协议功能
16687HTTP健康检查与自身服务的度量指标
16686HTTP1. /api/* - API 端口路径 2. /- Jaeger UI 路径

ElasticSearch存储

如上便可以使用到ElasticSearch作为存储(不考虑Eleastic Search容器的创建),原先内存方式现在转移到ElasticSearch中

发送请求后,能够查询到服务的请求记录与请求路径。

Jaeger Spark Dependencies

当使用内存模式时,可以点击System Architecture查看几个服务间的依赖关系,但当存储挪到ElasticSearch后,再点击便是No service dependencies found. 需要下载Spark dependencies镜像。其作用是从存储中收集span数据,分析服务间的连接和依赖,并存储它们以供以后在 Jaeger UI 中展示。

拉取镜像

docker pull jaegertracing/spark-dependencies:latest

创建容器

docker run --name StarCitySparkDependencies --env STORAGE=elasticsearch --env ES_NODES=http://127.0.0.1:9200 jaegertracing/spark-dependencies

如果在这之前已经有数据生成过,链路信息已存储到es中,那么如上执行完毕后,会见到提示已经生成了几个节点的关系信息,并存储到了es中

可以点击System Architecture查看服务依赖。

当如上运行完毕,该容器便停止了,其本身是个Job,我们需要设置定时启动来生成各节点与关系的信息。

Job定时启动

对于Docker的定时启动设置方式有多种,此处使用crontab来设置

  1. 打开文件,创建定时任务
crontab -e
  1. 设置定时启动Job,每5分钟启动依次Job,前面是cron表达式,后面是要执行的命令。
*/5 0 * * * docker restart StarCityJaegerSparkDependencies
  1. 重启定时任务
systemctl restart crond
  1. 查看所有定时任务
crontab -l

参考

  1. https://www.jaegertracing.io/docs/1.40/
  2. https://my.oschina.net/u/2548090/blog/1821372

2022-12-26,望技术有成后能回来看见自己的脚步

关键词: 定时任务 生产环境