Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

注意事项

JDK8 + springboot2.7.9 的环境中使用时版本兼容性如下:

JDK springboot
1.8 2.7.9
opentelemetry-javaagent otel/opentelemetry-collector-contrib
2.9.0 0.112.0
2.16.0 0.126.0

1. 应用接入Opentelemetry系统

1.1 Java

java有多种接入接入方式,其中最简单的方式是使用 opentelemetry-java-instrumentation ,但这也已经能基本满足需求。

引用自 ChatGPT

使用 opentelemetry-java-instrumentation 时,整个链路中不需要在请求拦截器中手动处理 trace idspan id。这部分工作会由 OpenTelemetry 的 Java Agent 自动完成。只需在日志配置中做相应的配置,就可以自动捕获和记录 trace idspan id

具体原因是:

自动追踪与上下文传播: opentelemetry-java-instrumentation 代理会自动为应用中的请求链路创建和传递 trace idspan id。它支持常用框架(如 Spring、gRPC、HTTP 客户端等),会自动创建 span 并将上下文信息通过 W3C Trace Context 或 B3 Headers 等标准格式在不同服务间传播。

日志集成自动注入 MDC: Java Agent 默认将当前上下文的 trace idspan id 注入到 MDC 中,因此只需在日志配置中通过 %X{trace_id}%X{span_id} 引用这些字段,就可以在日志中看到完整的追踪信息,无需手动添加。

所以,除非有特殊的自定义需求(如增加额外的属性到 span),一般无需在代码中显式处理 trace idspan id

使用方法:

  1. application.yml 中配置 logging.pattern.level 参数为:%5p [%X{trace_id:-NoTrace},%X{span_id:-NoSpan},%X{trace_flags:-NoFlags}](可以按照实际需求调整)
  2. jvm option 中添加参数:-javaagent:/path/to/opentelemetry-javaagent.jar -Dotel.exporter.otlp.endpoint=http://127.0.0.1:4317
    1. otel.exporter.otlp.endpoint 也可以使用环境变量 OTEL_EXPORTER_OTLP_ENDPOINT 设置

2. 配置Opentelemetry Collector(OTEL)

  1. 按照实际需求配置 receiversexportersprocessorsservice
  2. 通过 command 设置配置文件路径,如:--config=/etc/config.yml
  3. 按照实际 receiver 配置映射端口,如:
    • 4317: OLTP gRPC
    • 4318: OLTP HTTP

3. 配置Grafana Tempo

# 开启HTTP数据流以配合grafana
stream_over_http_enabled: true

## 对外服务接口配置
server:
  http_listen_port: 3200
#  grpc_listen_port: 9095
  log_level: info

## 数据来源配置
distributor:
  receivers:
    otlp:
      protocols:
        grpc:
        http:

## 查询接口性能配置
query_frontend:
  search:
    duration_slo: 5s
    throughput_bytes_slo: 1.073741824e+09 # 1.073741824 GB(约 1 GB)
  trace_by_id:
    duration_slo: 5s

## 数据压缩相关
compactor:
  compaction:
    block_retention: 24h # 配置存储中的数据保留时间

## 存储相关
storage:
  trace:
    backend: local
    wal: # Write-Ahead Log 可以理解为在保存至目标存储前的临时存储
      path: /var/tempo/wal
    local:
      path: /var/tempo/blocks
  1. 创建如上配置文件 (该文件主要用于本地存储
  2. 在docker环境中需要将工作文件夹的用户组信息改为 10001:10001,由于操作较为繁琐建议使用docker compose初始化工作目录
  3. 通过 command 设置配置文件路径,如:-config=/etc/config.yml 注意此处 config 前只有一条 - 与前面OTEL的配置不同
  4. 将配置文件和工作目录映射进容器

About

otlp最小化部署示例

Resources

Stars

9 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages