关于云计算:Jaeger知识点补充

34次阅读

共计 3927 个字符,预计需要花费 10 分钟才能阅读完成。

欢送拜访我的 GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,波及 Java、Docker、Kubernetes、DevOPS 等;

《Jaeger 实战 (Java 版)》系列全文

  1. 《分布式调用链跟踪工具 Jaeger?两分钟极速体验》
  2. 《Jaeger 开发入门 (java 版)》
  3. 《Java 利用日志如何与 Jaeger 的 trace 关联》
  4. 《Jaeger 的客户端采样配置》
  5. 《极简!一个注解就能创立 Jaeger 的 Span》
  6. 《Jaeger 知识点补充》

本篇概览

  • 本文是《Jaeger 实战 (Java 版)》系列的终篇,一起学习和实战是一段欢快的时光,现在终于到了说再见的时候,最初将平时积攒的三个有用的知识点奉上,既作为结尾,也心愿能为您的开发带来帮忙:
  • 批改服务名
  • 敞开 span 上报的日志
  • all-in-one 镜像的长久化存储

    批改服务名

  • 在 Jaeger 的 web 页面上看到的服务名,默认用的是 spring.application.name 配置的值,如果您不称心,能够自行定制,配置项是 <font color=”blue”>opentracing.jaeger.service-name</font>,如下图红框所示,我这里改成了中文名:

  • 运行起来后,在 Jaeger 的 web 页面展现如下图红框:

敞开 span 上报的日志

  • 以下是一段日志,只有后面两行是咱们写代码的时候用 <font color=”blue”>log.info</font> 办法打印进去的,剩下的四行都是 Jaeger SDK 输入的
00:18:12 [http-nio-8080-exec-1] INFO  c.b.j.p.c.HelloController [traceId=49476da841cd354b spanId=b595271a496cb0cb sampled=true] start hello from [1632269892342]
00:18:12 [http-nio-8080-exec-1] INFO  c.b.j.p.c.HelloController [traceId=49476da841cd354b spanId=b595271a496cb0cb sampled=true] hello
00:18:12 [http-nio-8080-exec-1] INFO  i.j.i.r.LoggingReporter [traceId=49476da841cd354b spanId=b595271a496cb0cb sampled=true] Span reported: 49476da841cd354b:991b82965543f8da:e6333b3a1c14f544:1 - mockBizChild
00:18:12 [http-nio-8080-exec-1] INFO  i.j.i.r.LoggingReporter [traceId=49476da841cd354b spanId=b595271a496cb0cb sampled=true] Span reported: 49476da841cd354b:e6333b3a1c14f544:b595271a496cb0cb:1 - mockBiz
00:18:13 [http-nio-8080-exec-1] INFO  i.j.i.r.LoggingReporter [traceId=49476da841cd354b spanId=b595271a496cb0cb sampled=true] Span reported: 49476da841cd354b:45e256ba3deed679:b595271a496cb0cb:1 - SET
00:18:13 [http-nio-8080-exec-1] INFO  i.j.i.r.LoggingReporter [traceId= spanId= sampled=] Span reported: 49476da841cd354b:b595271a496cb0cb:6322077c0edb62cc:1 - hello
  • 上述日志中,Jaeger SDK 输入的那些内容,个别状况下用途不大,能够用以下红框中的配置敞开掉:

  • 再次运行,日志如下,喧扰了:
00:12:42 [http-nio-8080-exec-10] INFO  c.b.j.p.c.HelloController [traceId=6430f498d5623103 spanId=9e4a4c8bb326352b sampled=true] start hello from [1632269562868]
00:12:42 [http-nio-8080-exec-10] INFO  c.b.j.p.c.HelloController [traceId=6430f498d5623103 spanId=9e4a4c8bb326352b sampled=true] hello

all-in-one 镜像的长久化存储

  • 用 all-in-one 镜像部署 Jaeger 服务端,特点是简略快捷,适宜在开发和调试阶段应用,上面一个命令即可实现部署:
docker run -d \
--name jaeger \
-e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
-p 5775:5775/udp \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 5778:5778 \
-p 16686:16686 \
-p 14268:14268 \
-p 14269:14269 \
-p 9411:9411 jaegertracing/all-in-one:1.26
  • 上述命令尽管能让 Jaeger 后端失常工作,但有个缺点:数据保留在内存中,容器重启后数据不可复原,为了解决这个问题,能够在 all-in-one 镜像的容器上开启 badger(一种嵌入式存储),并且将 badger 的数据存储在宿主机上,残缺的命令如下所示,其中 <font color=”blue”>/Users/will/temp/202109/28/data</font> 是我的电脑的磁盘目录,请您依照本人理论状况批改:
docker run -d \
--name jaeger \
-e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
-e SPAN_STORAGE_TYPE=badger \
-e BADGER_EPHEMERAL=false \
-e BADGER_DIRECTORY_VALUE=/badger/data \
-e BADGER_DIRECTORY_KEY=/badger/key \
-v /Users/will/temp/202109/28/data:/badger \
-p 5775:5775/udp \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 5778:5778 \
-p 16686:16686 \
-p 14268:14268 \
-p 14269:14269 \
-p 9411:9411 jaegertracing/all-in-one:1.26
  • 此时再重启或者重建 Jaeger 容器,历史数据都会残缺保留
  • 如果您是在 docker-compose.yml 中配置 all-in-one 镜像,那么要留神 yml 文件中无奈输出布尔型属性值,须要参考以下形式解决:
  • 首先在 docker-compose.yml 所在目录创立文件 <font color=”blue”>.env</font>,内容如下:
BADGER_FLAG=true
  • 最初在 docker-compose.yml 中,Jaeger 容器的配置如下,应用了 <font color=”blue”>.env</font> 文件中的配置项,另外,我这里的本地存储用的是新建的 volumes,您能够依据本人的须要改成后面那种本地磁盘映射:
version: '3.0'

networks:
  jaeger-tutorials-net:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.1.0/24
          gateway: 192.168.1.1

volumes:
  # 用于存储 badger 的数据
  badger-data:

services:
  jaeger:
    image: jaegertracing/all-in-one:1.26
    container_name: jaeger
    # 解决时钟漂移带来的计算出正数的问题
    command: ["--query.max-clock-skew-adjustment=100ms"]
    # 选择网络
    networks:
      - jaeger-tutorials-net
    # 长久化,请抉择适宜本人的目录
    environment:
      SPAN_STORAGE_TYPE: badger
      BADGER_EPHEMERAL: ${BADGER_FLAG}
      BADGER_DIRECTORY_VALUE: /badger/data
      BADGER_DIRECTORY_KEY: /badger/key
    # badger 存储在本地卷(或者映射到本地某个目录)volumes:
      - badger-data:/badger
    #抉择端口
    ports:
      - 16686:16686/tcp
    restart: always
  • 至此,《Jaeger 实战 (Java 版)》系列终于到了说再见的时候,心愿可能为您的零碎建设提供有用的参考,咱们持续相约在下一个欣宸原创系列吧

你不孤独,欣宸原创一路相伴

  1. Java 系列
  2. Spring 系列
  3. Docker 系列
  4. kubernetes 系列
  5. 数据库 + 中间件系列
  6. DevOps 系列

欢送关注公众号:程序员欣宸

微信搜寻「程序员欣宸」,我是欣宸,期待与您一起畅游 Java 世界 …
https://github.com/zq2599/blog_demos

正文完
 0