You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用OpenTelemetry采集应用与K8s集群指标并转发至网关Collector?

OpenTelemetry采集K8s集群与应用指标并转发至网关Collector的实操建议

一、接收器选型指南

应用级指标

  • otlpreceiver:如果你的应用已集成OpenTelemetry SDK,直接用这个接收器接收应用推送的OTLP标准格式数据,这是最通用的方案,支持指标、日志、链路追踪全类型数据。
  • prometheusreceiver:对于未集成OTel SDK的存量应用,只要它暴露了Prometheus格式的指标端点,用这个接收器定时拉取即可。

K8s集群与主机指标

  • k8sclusterreceiver:专门采集K8s集群核心元数据与指标,比如节点状态、Pod调度情况、Deployment副本状态等,直接对接K8s API获取数据,无需额外依赖。
  • hostmetricsreceiver:以DaemonSet方式部署在每个节点上,采集节点的CPU、内存、磁盘、网络等主机层面基础指标。
  • containerdstatsreceiver/cadvisorreceiver:如果需要容器级细粒度指标(比如容器CPU使用率、内存限额使用率),根据容器运行时选择:用containerd选前者,用Docker选cadvisor。

二、集群内数据转发到网关的实现方式

推荐架构

采用Agent + Gateway分层架构:

  • 每个K8s节点部署OTel Collector Agent(DaemonSet):负责采集节点、容器指标和日志;
  • 应用侧可选Sidecar模式的Collector:单独采集该应用的指标/日志;
  • 集群内部署OTel Collector Gateway(Deployment,多副本高可用):接收所有Agent和Sidecar的数据,统一处理后再转发至后端存储。

转发配置示例

在Agent/Sidecar的配置文件中,配置OTLP exporter指向网关地址:

exporters:
  otlp:
    endpoint: "otel-gateway.default.svc.cluster.local:4317" # 网关的K8s服务地址,gRPC默认端口4317,HTTP用4318
    tls:
      insecure: true # 测试环境可开启,生产环境务必配置TLS加密

然后在service段将接收器与exporter关联:

service:
  pipelines:
    metrics:
      receivers: [otlp, prometheus, k8scluster, hostmetrics]
      exporters: [otlp]
    logs:
      receivers: [filelog] # 采集容器日志可指定路径为/var/log/containers/*.log
      exporters: [otlp]

日志采集补充

采集容器日志时,filelog接收器是最直接的方式,只需在Agent配置中指定日志文件路径;若不想直接操作宿主机文件,也可使用containerlogs接收器通过容器运行时API拉取日志。

三、关键注意事项

  • 网关Collector必须开启otlpreceiver,监听对应端口,并确保Agent/Sidecar能访问到网关的服务地址;
  • 大规模集群下,建议在Agent层面添加batch处理器批量发送数据、filter处理器过滤无用指标、memory_limiter限制内存使用,避免网关压力过大;
  • 生产环境一定要配置TLS加密和身份认证,防止数据传输过程中被篡改或泄露。

内容的提问来源于stack exchange,提问作者skp15

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 20:13:27