OpenTelemetry 本机支持
编辑OpenTelemetry 本机支持编辑
Elastic Stack 本机支持 OpenTelemetry 协议 (OTLP)。这意味着从您的应用程序和基础架构收集的跟踪数据和指标可以直接发送到 Elastic Stack。
- 从 OpenTelemetry 收集器发送数据到 Elastic Stack
- 从 OpenTelemetry 代理发送数据到 Elastic Stack
从 OpenTelemetry 收集器发送数据编辑
使用 OTLP 导出器将您的 OpenTelemetry 收集器实例连接到 Elastic 可观测性
receivers: # ... otlp: processors: # ... memory_limiter: check_interval: 1s limit_mib: 2000 batch: exporters: debug: verbosity: detailed otlp/elastic: # Elastic APM server https endpoint without the "https://" prefix endpoint: "${env:ELASTIC_APM_SERVER_ENDPOINT}" headers: # Elastic APM Server secret token Authorization: "Bearer ${env:ELASTIC_APM_SECRET_TOKEN}" service: pipelines: traces: receivers: [otlp] exporters: [debug, otlp/elastic] metrics: receivers: [otlp] exporters: [debug, otlp/elastic] logs: receivers: [otlp] exporters: [debug, otlp/elastic]
调试导出器 对故障排除很有帮助,并且支持可配置的详细程度: |
|
Elastic 可观测性端点配置。APM 服务器通过 OTLP 协议(通过 gRPC 传输 (OTLP/gRPC))和 OTLP 协议(通过 HTTP 传输 (OTLP/HTTP))支持 ProtoBuf 有效负载。要详细了解这些导出器,请参阅 OpenTelemetry 收集器文档:OTLP/HTTP 导出器 或 OTLP/gRPC 导出器。 |
|
APM 服务器端点的主机名和端口。例如, |
|
Elastic APM 密钥授权 ( |
|
特定于环境的配置参数可以方便地作为环境变量传入,此处 记录了这些参数(例如 |
|
[预览] 此功能处于技术预览阶段,可能会在未来版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 要将 OpenTelemetry 日志发送到 Elastic Stack 8.0+ 版本,请声明一个 |
您现在可以从您的服务和应用程序导出跟踪和指标。
使用 OpenTelemetry 收集器时,您应始终首选通过 OTLP
导出器 将数据发送到 Elastic APM 服务器。其他方法,例如使用 elasticsearch
导出器 将数据直接发送到 Elasticsearch,会将数据发送到 Elastic Stack,但会绕过 APM 服务器执行的所有验证和数据处理。此外,如果您使用 elasticsearch
导出器,您的数据将无法在 Kibana 可观测性应用程序中查看。
从 OpenTelemetry 代理发送数据编辑
要将跟踪和指标导出到 APM 服务器,请使用 OpenTelemetry API、SDK 或两者来检测您的服务和应用程序。例如,如果您是 Java 开发人员,则需要使用 适用于 Java 的 OpenTelemetry 代理 来检测您的 Java 应用程序。请参阅 OpenTelemetry 检测指南以下载适用于您的语言的 OpenTelemetry 代理或 SDK。
定义环境变量以配置 OpenTelemetry 代理并启用与 Elastic APM 的通信。例如,如果您正在检测 Java 应用程序,请定义以下环境变量
export OTEL_RESOURCE_ATTRIBUTES=service.name=checkoutService,service.version=1.1,deployment.environment=production export OTEL_EXPORTER_OTLP_ENDPOINT=https://apm_server_url:8200 export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer an_apm_secret_token" export OTEL_METRICS_EXPORTER="otlp" \ export OTEL_LOGS_EXPORTER="otlp" \ java -javaagent:/path/to/opentelemetry-javaagent-all.jar \ -classpath lib/*:classes/ \ com.mycompany.checkout.CheckoutServiceServer
[预览] 此功能处于技术预览阶段,可能会在未来版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 通过 APM 服务器接收 OpenTelemetry 日志目前处于技术预览阶段。 |
|
描述服务和服务运行环境的字段。有关更多信息,请参阅 资源属性。 |
|
APM 服务器 URL。APM 服务器侦听事件的主机和端口。 |
|
包含 Elastic APM 密钥或 API 密钥的授权标头: 有关如何格式化 API 密钥的信息,请参阅 API 密钥。 请注意 |
|
要使用的指标导出器。有关更多信息,请参阅 导出器选择。 |
|
要使用的日志导出器。有关更多信息,请参阅 导出器选择。 |
您现在可以在 验证指标 和在 Kibana 中可视化指标 之前收集跟踪和 指标。
将请求代理到 APM 服务器编辑
APM 服务器在与 Elastic APM 代理请求相同的端口上支持 OTLP/gRPC 和 OTLP/HTTP 协议。为了便于设置,我们建议在将请求代理或负载均衡到 APM 服务器时使用 OTLP/HTTP。
如果您使用 OTLP/gRPC 协议,则对 APM 服务器的请求必须使用 TLS 上的 HTTP/2 或明文 HTTP/2 (H2C)。无论使用哪种协议,OTLP/gRPC 请求都将包含以下标头:"Content-Type: application/grpc"
。
使用第 7 层 (L7) 代理(如 AWS ALB)时,必须以确保对 APM 服务器的请求遵循上述规则的方式代理请求。例如,使用 ALB,您可以创建规则以根据进入 ALB 的请求的标头选择备用后端协议。在此示例中,当请求上存在 "Content-Type: application/grpc"
标头时,您将选择 gRPC 协议。
有关如何配置 AWS ALB 以支持 gRPC 的更多信息,请参阅这篇 AWS 博客文章:应用程序负载均衡器对端到端 HTTP/2 和 gRPC 的支持。
有关 APM 服务器如何处理 gRPC 请求的更多信息,请参阅 多路复用 gRPC 和 HTTP/1.1。