什么是 OpenTelemetry
从官方 What is OpenTelemetry? 可了解到:
OpenTelemetry(OTel) 是 CNCF 的一个跨语言、跨平台的开源工具集(如trace、metrics、logs等),旨在为应用程序提供分布式跟踪、日志记录和度量的功能。它由多个开源项目合并而来,包括OpenCensus和OpenTracing,提供了一组API和SDK,可以帮助开发人员在应用程序中嵌入跟踪器、日志记录器和度量器,并收集应用程序的性能数据。
从上面的OpenTracing和OpenSensus了解到,由于没有固定的标准,各个分布式追踪方案各显神通,使用不同的协议,不同的标准。OpenTelemetry的出现,提供了一系列的标准,并且他的可插拔式的架构为将来的协议和数据结构扩展提供了便利的方式。
组件介绍
- OpenTelemetry API:提供了一组定义良好的API,用于在应用程序中创建Span、记录事件和属性、设置上下文信息等。
- OpenTelemetry SDK:提供了一组实现OpenTelemetry API的工具,用于在应用程序中创建和管理Span、记录事件和属性、注入和提取Span Context等。
- OpenTelemetry Exporter:提供了一组用于将OpenTelemetry数据导出到不同后端的工具,例如将跟踪数据导出到Zipkin、Jaeger等跟踪系统,将日志数据导出到Elasticsearch、Logz.io等日志系统,将指标数据导出到Prometheus、InfluxDB等指标系统。
- OpenTelemetry Instrumentation:提供了一组自动化的仪表化工具,用于自动化地仪表化应用程序中的常见框架、库和组件,例如HTTP客户端、数据库驱动程序、消息队列等。
- OpenTelemetry Collector:提供了一组用于收集、处理和导出OpenTelemetry数据的工具,可以自定义配置和插件,以便将数据转发到不同的后端。
- OpenTelemetry Protocol(OTelP) :提供了一组定义良好的协议,用于在不同的OpenTelemetry组件之间传递数据,例如在应用程序和OpenTelemetry Collector之间传递Span数据。
总结
OTEL 为开发者解决了应用程序跟踪和度量的问题。