Agent

为何以及如何将信号发送到 Collector,再从 Collector 发送到后端

在 Agent 部署模式下,遥测信号可以来自

信号被发送到紧邻应用程序运行或与应用程序在同一主机上运行的 Collector 实例,例如 sidecar 或 DaemonSet。

每个客户端 SDK 或下游 Collector 都配置有 Collector 实例的地址

Decentralized collector deployment concept
  1. 在应用程序中,SDK 被配置为将 OTLP 数据发送到 Collector。
  2. Collector 被配置为将遥测数据发送到一个或多个后端。

示例

在此 Agent 部署模式的示例中,首先手动使用 OpenTelemetry Java SDK 对Java 应用程序进行插桩以导出指标,包括默认的 OTEL_METRICS_EXPORTERotlp。接下来,配置 OTLP Exporter 指向您的 Collector 地址。例如

export OTEL_EXPORTER_OTLP_ENDPOINT=http://collector.example.com:4318

接下来,配置运行在 collector.example.com:4318 的 Collector 如下

receivers:
  otlp: # the OTLP receiver the app is sending traces to
    protocols:
      http:
        endpoint: 0.0.0.0:4318

exporters:
  otlp/jaeger: # Jaeger supports OTLP directly
    endpoint: https://jaeger.example.com:4317
    sending_queue:
      batch:

service:
  pipelines:
    traces/dev:
      receivers: [otlp]
      exporters: [otlp/jaeger]
receivers:
  otlp: # the OTLP receiver the app is sending metrics to
    protocols:
      http:
        endpoint: 0.0.0.0:4318

exporters:
  prometheusremotewrite: # the PRW exporter, to ingest metrics to backend
    endpoint: https://prw.example.com/v1/api/remote_write
    sending_queue:
      batch:

service:
  pipelines:
    metrics/prod:
      receivers: [otlp]
      exporters: [prometheusremotewrite]
receivers:
  otlp: # the OTLP receiver the app is sending logs to
    protocols:
      http:
        endpoint: 0.0.0.0:4318

exporters:
  file: # the File Exporter, to ingest logs to local file
    path: ./app42_example.log
    rotation:

service:
  pipelines:
    logs/dev:
      receivers: [otlp]
      exporters: [file]

要端到端地探索此模式,请参阅 JavaPython 示例。

权衡

使用 Agent Collector 的主要优缺点如下

优点

  • 易于上手
  • 应用程序与 Collector 之间有一对一的清晰映射

缺点

  • 对于团队和基础设施资源而言,可扩展性有限
  • 对于复杂或不断变化的部署而言不够灵活

最后修改于 2025 年 11 月 26 日: docs: copy edit deployment pages (#8400) (d00e8f37)