什么是 OpenTelemetry?
OpenTelemetry是一个云原生计算基金会 (CNCF) 沙盒项目,它提供了供应商中立的、特定于语言的代理、SDK 和 API,您可以使用它们从所有受监控的应用程序中收集分布式跟踪、指标和日志数据。OpenTelemetry 代理能够自动检测应用程序代码以显示性能数据,这些数据对于帮助您了解服务的健康状况非常重要——为应用程序开发人员提供了选择和选择哪些代理监控其应用程序的灵活性。
致力于开放标准支持
从开源到开源代码,开放性是我们 Elastic 的 DNA。我们不仅从我们编写和发布的代码的角度,而且从我们摄取的数据的角度来拥抱这种开放性。我们一直站在采用开放标准的最前沿,以此为我们的用户提供灵活性,让他们可以选择他们希望如何将数据传送到 Elasticsearch 并利用 Elastic Stack 的功能。这种支持开放标准的承诺体现在我们对其他开放标准和其他流行的开源项目的支持上,例如 Prometheus、OpenTracing、W3C Trace-Context和Jaeger。
2019 年初,OpenTracing 和 OpenCensus 开始了标准化 API 并构建完整解决方案的旅程,使用户能够更轻松地跨所有检测服务捕获跟踪和遥测数据。在Elastic APM中构建了对 OpenTracing 的支持后,我们作为 OpenTelemetry 项目的成员积极参与。
如何开始使用 Elastic APM 和 OpenTelemetry
Elastic的OpenTelemetry Collector Exporter在 7.13 中被弃用 (参看前文:Elastic APM 和 OpenTelemetry 集成 (使用otel collector),取而代之的是 Elastic Observability (OTLP) 中对 OpenTelemetry Line Protocol 的原生支持。要了解更多信息,请参阅迁移。
Elastic APM Server 原生支持 OpenTelemetry 协议。这意味着从您的应用程序和基础设施收集的跟踪数据和指标可以使用 OpenTelemetry 协议直接发送到 Elastic APM 服务器。
概念验证
我们只需要通过以下命令进行简单的应用埋点:
代码语言:javascript复制export OTEL_RESOURCE_ATTRIBUTES=service.name=otelDemoService,service.version=1.1,deployment.environment=production
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:8200
export OTEL_METRICS_EXPORTER="otlp"
export OTEL_LOGS_EXPORTER="otlp"
java -javaagent:./opentelemetry-javaagent.jar -jar test-0.0.1-SNAPSHOT.jar
既可以将Open telemetry收集的数据在Elastic APM上进行分析:
这里不只是分布式追踪的数据,包括Open Telemetry采集的日志、指标等数据,也可以同步在Kibana上查看(注意,这里并没有安装filebeat):
解决方案的灵活性
通过将 OpenTelemetry 与Elastic Observability解决方案和 Elastic Stack 相结合,您可以灵活地选择要使用哪些代理(Elastic 或 OpenTelemetry)来检测您的应用程序。无论您选择什么,您都可以在 APM 应用程序中可视化端到端的分布式跟踪。您还可以获得一个统一的解决方案来可视化跟踪以及指标和日志、强大的分析以及机器学习和具有灵活性和规模的警报等功能的好处。
随着 OpenTelemetry 发展为包含指标和日志,我们将努力增强我们的支持,以便您可以将我们的代理和 Beats 与 OpenTelemetry 代理无缝结合使用。同时,如果您正在寻找捕获指标或日志,您可以使用Metricbeat和Filebeat模块为您提供监控堆栈的完整可见性。