首页 > 其他分享 >Jaeger&ElasticSearch存储链路追踪数据

Jaeger&ElasticSearch存储链路追踪数据

时间:2022-12-26 15:11:45浏览次数:68  
标签:存储 Jaeger jaeger jaegertracing ElasticSearch 链路 镜像 docker

前言

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

端口说明

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

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的地址

端口说明

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

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地址,从其中查询数据。

端口说明

端口号 协议 功能
16687 HTTP 健康检查与自身服务的度量指标
16686 HTTP 1. /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,望技术有成后能回来看见自己的脚步

标签:存储,Jaeger,jaeger,jaegertracing,ElasticSearch,链路,镜像,docker
From: https://www.cnblogs.com/CKExp/p/17005842.html

相关文章

  • elasticsearch中SearchApi的详解
     ​搜索流程当一个搜索请求被发送到某个节点时,这个节点就变成了协调节点。 这个节点的任务是广播查询请求到所有相关分片并将它们的响应整合成全局排序后的结果集合,这个结......
  • Elasticsearch全文检索引擎复习笔记
    Elasticsearch全文检索引擎复习笔记Elasticsearch是一个基于Lucene的搜索引擎。它提供了一个分布式、多租户的全文搜索引擎,能够为应用程序提供实时的、结构化和非结构......
  • elasticsearch 安装8.5.3
    下载地址:https://www.elastic.co/cn/downloads/支持:https://www.elastic.co/cn/support/matrix#elastrcsearch.yml需要注意xpack安全配置修改为:falseingest.geoip.d......
  • ElasticSearch系列---【Es的快速入门文档】
    Es的快速入门文档1.对比数据库理解ElasticSearch是面向文档型数据库,一条数据在这里就是一个文档。 注意:从ElasticSearch6.X开始,一个Index下只能包含一个Type,因此,在ElasticS......
  • (二)elasticsearch 源码目录
    在阅读源码之前,我们先来看看整个项目的结构:(同(一)elasticsearch编译和启动,我们使用版本7.4.0作为示例).ci,持续集成配置.github,里面有PULL_REQUEST_TEMPLATE.md,是关于pr......
  • m基于MATLAB的上行链路MIMO关键技术的研究与性能分析
    1.算法概述       多输入多输出(MIMO)天线技术的巨大潜力为新一代无线通信技术的研究提供了广阔的舞台。近年来,多用户的MIMO研究逐渐成为热点问题。针对多用户的MI......
  • m基于MATLAB的上行链路MIMO关键技术的研究与性能分析
    1.算法概述多输入多输出(MIMO)天线技术的巨大潜力为新一代无线通信技术的研究提供了广阔的舞台。近年来,多用户的MIMO研究逐渐成为热点问题。针对多用户的MIMO,天线选择和用......
  • ElasticSearch recovery流程
    为什么需要recovery?对于主分片来说,可能有一些数据没来得及刷盘;对于副分片来说,一是没刷盘,二是主分片写完了,副分片还没来得及写,主副分片数据不一致。1.主分片recovery由于每......
  • Elasticsearch循序渐进
    前言规划部署1、系统初始化1、修改/etc/security/limits.conf下载wgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.3-linux-x86_6......
  • Day10_11_消息队列之保证RabbitMQ全链路数据完全不丢失
    保证RabbitMQ全链路数据完全不丢失一.消息可靠性概述1.消息生命周期过程一条消息从创建到最终被消费掉,也就是从生产端到消费端最终被消费掉大致上要经过3个步骤:1️⃣.生产......