Collector 部署形态是什么
OpenTelemetry Collector 的部署形态主要有两种:每主机或每 Pod 部署一个 agent,就近接收本机应用的数据;中心侧部署 gateway,统一做加工、采样与出海。规模上来之后分层部署能同时保住可靠性与治理效率——agent 层负责批量与本地缓冲,gateway 层负责采样与路由。在 Kubernetes 环境里,agent 通常以 DaemonSet 交付。
基本信息
| 两种形态 | agent(每主机或每 Pod)与 gateway(中心化) |
|---|---|
| 常见交付 | Kubernetes 中用 DaemonSet 部署 agent,用 Deployment 部署 gateway |
| 通道协议 | OTLP,gRPC 4317 与 HTTP 4318 |
| 分工建议 | agent 做批量与本地缓冲,gateway 做采样与路由 |
| 关键风险 | gateway 是链路单点 |
典型使用场景
- 就近采集:agent 接收本机应用上报,减少跨节点流量
- 统一治理:gateway 集中做采样、脱敏与路由分发
- 多后端分发:gateway 按租户或环境把数据发往不同后端
- 容量缓冲:agent 侧缓冲吸收应用侧的突发流量
- 迁移过渡:从应用直连后端迁到分层架构的渐进方案
使用要点
- gateway 要多副本并前置负载均衡,避免成为全链路单点
- gRPC 长连接在负载均衡下要考虑连接散列,避免流量集中到单副本
- agent 到 gateway 之间的网络抖动要能缓冲重试,否则采样前数据已丢
- 每层都要有自己的指标:接收速率、发送速率、队列长度与丢弃量
- 配置管理走统一模板,避免大量 agent 的配置漂移
分层结构
分层结构
应用 ->(本机 localhost:4317)-> agent Collector
↓(服务端负载均衡)
gateway Collector
↓
Tempo / Jaeger / 对象存储
# k8s 里 agent 常以 DaemonSet 交付,gateway 以多副本 Deployment 交付部署形态对照
| 形态 | 部署位置 | 职责与风险 |
|---|---|---|
| agent | 每主机或每 Pod | 批量与本地缓冲,数量多需模板化 |
| gateway | 中心集群 | 采样与路由,单点风险需多副本 |
| 混合分层 | 两者并存 | 治理效率高,链路更长 |
| 单层直连 | 应用直连后端 | 简单但缺少统一治理点 |
| 交付方式 | DaemonSet 与 Deployment | 按角色选择 |
agent 层做批量与本地缓冲、gateway 层做采样与路由,是规模上来后最常见的分工;两层各自都要有容量与丢弃指标。