
基于 Kubernetes 注解的 OpenTelemetry 动态发现:打造自服务的可观测方案
背景 在云原生时代,Kubernetes 已经成为容器编排的事实标准,越来越多的企业将其作为核心基础设施来运行和管理现代化应用。然而,随着微服务架构的普及和容器化工作负载的动态性增强,传统的监控和可观测性工具逐渐暴露出局限性——静态配置难以应对快速变化的环境,手动维护监控规则的成本也变得越来越高。 传统的监控方式通常依赖于集中式的配置管理,即由管理员预先定义好需要监控的目标和服务。这种方式不仅缺乏灵活性,还容易导致配置更新滞后,无法及时反映集群中的实际状态,还伴随着出错的风险。这种挑战,即使是作为开放标准的可观测性框架 OpenTelemetry 也无法避免。 不过 OpenTelemetry 通过 Reciver Creator 和 Kubernetes Observer 特性可以解决这个问题,实现基于 Kubernetes 注解的 OpenTelemetry Collector 动态发现功能。 工作原理 Kubernetes Observer 负责检测 Pod 及其元数据(如暴露的端口、注解等)。Observer 除了支持 Kubernetes API,还支持 Docker API(1.24+)、ECS API、ECS Tasks 元数据端点、Host。 Receiver Creator 根据这些信息动态实例化适当的接收器(如文件日志接收器)。Receiver Creator 可以支持 log、metrics 和 trace 接收器的创建。 这一功能通过将监控配置的控制权下放至开发人员,显著简化了可观测性管理的复杂性。