OpenTelemetry 入门

545 阅读2分钟

image.png OpenTelemetry,简称OTel,是一个供应商中立的开源可观测性框架,用于检测、生成、收集和导出遥测数据,例如跟踪、度量、日志。作为一种行业标准,它受到许多供应商的原生支持 image.png

OpenTelemetry支持的遥测类别

Trace

Trace为我们提供了用户或应用程序发出请求时发生的情况的总体情况。OpenTelemetry提供跟踪我们的微服务和相关应用程序,为我们提供了一种在生产环境中实现可观察性的方法

Metric

Log

Baggage

OpenTelemetry如何促进应用程序的自动或手动检测

OpenTelemetry项目有助于应用程序的检测。为每种语言提供了一个核心存储库。例如,Java检测库提供了以下存储库:

  • Core:提供OpenTelemetry API和SDK的实现,可用于手动检测应用程序
  • Instrumentation:所有核心功能以及各种库和框架的自动检测
  • Contrib:可选组件,例如JMX度量收紧

链路追踪怎么前后端串联

OpenTelemetry实现了不同语言的SDK,前端链路主要通过opentelemetry-js实现,后端也有相关语言的实现,比如Java、GO、Python等,不同语言将各自的trace信息统一上报。必须使用相同的传播器

链路追踪怎么关联相应日志和指标

以Java语言为例,opentelemetry-java通过javaagent方式注入到应用当中,应用产生trace信息后,通过设置MDC可以把traceId和spanId作为参数传递给log,这样log在输出的时候便会带上traceId和spanId

MDC:映射诊断上下文,一种用于区分来自不同来源的交错日志输出的工具 - log4j MDC 文档

提示:对于使用logback的Spring Boot配置,可以通过仅覆盖以下内容将MDC添加到日志行logging.pattern.level: logging.pattern.level = trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p 这样,解析应用程序日志的任何服务或工具都可以将trace/span与日志语言相关联