配置选项
OpenTelemetry Collector 架构由五种主要组件类型组成,它们协同工作,以处理整个生命周期中的 telemetry 数据:
- Receivers:将 telemetry 数据摄取到 Collector 中的组件
- Processors:在数据通过 pipeline 流动时对其进行转换、过滤或增强的组件
- Exporters:将处理后的数据发送到后端系统或目标的组件
- Connectors:通过同时充当 exporter 和 receiver 来连接 pipeline 段的组件
- Extensions:提供辅助功能、但不直接处理 telemetry 数据的可选组件
组件配置
你可以在自定义资源 YAML 文件中为每种组件类型定义多个实例。不过,必须通过 spec.config.service 部分中的 pipeline 定义显式启用组件,组件才会生效。
最佳实践是仅启用实际需要的组件。这样可以减少资源消耗,并简化故障排查。
配置示例
以下示例演示了一个包含 OTLP receiver 和多个 exporter 的基本 OpenTelemetry Collector 配置:
- OTLP exporter 的名称是
otlp_grpc,而上面的 OTLP receiver 仍保留名称otlp。请参见 组件类型名称。 - 在配置中定义但未在
service.pipelines部分引用的组件将保持非活动状态。组件必须至少添加到一个 pipeline 中才能运行。
组件类型名称
上游已将大多数组件类型标识符重命名为 snake_case,并将两个 OTLP exporter 重命名,以便在名称中明确传输协议:
已弃用的名称仍然可用,因此现有配置可以继续运行,但 Collector 会针对每个受影响的组件实例记录一条警告,并且上游计划在未来版本中移除这些别名:
完整的重命名组件列表请参见 v2.1.0 Release Notes。
配置参数
下表描述了 Operator 用于定义 OpenTelemetry Collector 的主要配置参数:
Values 列仅列出了代表性组件。有关受支持组件及其当前类型名称的完整列表,请参见 Receivers、Processors、Exporters、Connectors 和 Extensions。
Pipeline 配置
Pipeline 定义在 service.pipelines 下,用于指定 telemetry 数据在 Collector 中的流向。每种 pipeline 类型(traces、metrics、logs)都可以拥有自己的一组 receiver、processor 和 exporter。
示例 pipeline 配置:
每个 pipeline 会独立处理其 telemetry 类型,因此你可以根据可观测性需求,为 traces、metrics 和 logs 配置不同的处理逻辑。
Collector 资源选项
上面的字段位于 spec.config 下,用于配置 Collector 进程本身。OpenTelemetryCollector 自定义资源还公开了用于控制 Operator 如何部署 Collector 工作负载的字段。
示例:
- 仅在
statefulset模式下有意义。对于deployment、daemonset和sidecar模式,请保持未设置。 - 每个条目会将一个 IP 地址映射到 Collector pod 内的一个或多个主机名。
- 将每个客户端 IP 固定到一个 Collector replica。
sessionAffinityConfig是可选的;如果省略,则保持默认的 3 小时超时。
Ingress 和 Gateway API
Operator 可以通过 Ingress 资源或 Gateway API HTTPRoute 资源公开 Collector 的 receiver 端口。两者都仅在 deployment、daemonset 和 statefulset 模式下可用。
spec.ingress会创建一个Ingress资源。在此字段下配置主机名、注解和 TLS 设置。spec.httpRoute会创建一个 Gateway APIHTTPRoute资源。当你的集群通过 Gateway API 实现而不是 Ingress controller 来路由南北向流量时,请选择此项。
以下示例将 Collector 连接到一个现有的 Gateway:
- 必填。启用
HTTPRoute配置。 - 必填。要附加该 route 的
Gateway资源名称。 Gateway资源所在的 namespace。默认值为 Collector 自身的 namespace。- 该 route 匹配的主机名。为空时,route 将匹配任意主机名。
Collector 状态
OpenTelemetryCollector 资源通过 status.observedGeneration 和 status.conditions 报告 reconciliation 状态。等待 Collector 收敛的自动化逻辑应在读取 conditions 之前,将 status.observedGeneration 与 metadata.generation 进行比较,以免基于资源早期版本生成的状态进行操作。