OpenTelemetry技术选型
简介
OpenTelemetry用于从应用程序收集数据。由著名的 OpenTracing、 OpenCensus 两个产品在 2019 年合并而来。它是一组工具、API和SDK集合,我们可以使用他们来检测、生成、收集和导出遥测数据(指标、日志和追踪),以帮助分析应用的性能和行为。
小知识点:调用链 (traces)、日志 (logs)、监控指标 (metrics),三者合称 Telemetry
OpenTelemetry包括可观测性的三个支柱:追踪、指标和日志
- 分布式追踪:一种跟踪服务请求在分布式系统中从开始到结束的方法
- 指标:对一段时间内活动的测量,以便了解系统或者应用程序的性能
- 日志:是系统或者应用程序在特定时间点发生的事件的文本记录(目前不够成熟)
github社区:github.com/open-teleme…
特点:
-
开源的、数据采集标准和工具集合
-
受到可观测领域行业领导者的采用和支持
-
一个CNCF项目:即k8s云原生社区全面支持
-
与供应商无关的
-
成熟度:
-
多语言支持:几乎市面上所有的编程语言都支持,如java、C++、python、go、js、dotnet等
-
目前主要语言几乎都实现了trace和metrics;
-
log目前主流语言也都实现了,如java,c++;
-
提供了侵入式和非侵入式的多种方法,支持自动埋点和手动埋点
- 需要业务透传对应的 header 信息(从入向请求中获取对应的 header 信息、并在出向请求中添加响应 header 信息)。
- Sidecar 自动向监控系统发送Span信息。
-
-
周边生态:与多种工具结合
- prometheus(metrics&alert)
- deepflow(trace&visual)
- jaeger(trace)
- zipkin(trace)
- skywalking(trace)
- loki(log)
- ...
-
社区活跃程度:仅次于k8s社区
-
大厂实践
- AWS:AWS X-Ray1
- Google Cloud:Google Cloud Trace1
- Microsoft Azure:Azure Monitor1
- Datadog:Datadog APM1
- New Relic:New Relic One1
- Splunk:Splunk Observability Cloud2
- 阿里云
- 腾讯云和腾讯游戏
- ....
-
工程实践成本
- 资料获取容易,社区网站上即可提供较为全面的文档支持
- 演示示例:www.bilibili.com/video/BV1bF…
架构:
主要包含了以下几个部分:
- Instrumentation: 包含自动方式API 、SDK 方式接入 OpenTelemetry。
- OTLP: OpenTelemetry 定义的传输协议。
- OpenTelemetry Collector: 提供厂商无关的解决方案,用于实现 数据的接收(receive), 处理(process)和 输出(export)的功能。