为 Monitoring Stack 配置指标
OpenTelemetry Collector 可以与平台 Monitoring Stack 集成,通过 Prometheus 暴露其自身的运行指标。作为集群管理员,你可以设置此集成以实现以下目标:
- 自动生成 Prometheus
ServiceMonitor资源,用于抓取 Collector 的内部 pipeline 指标以及任何已配置的 Prometheus exporter 端点。 - 使用 Collector 内部的 Prometheus receiver,从集群内置的监控基础设施中拉取指标。
向 Monitoring Stack 发送指标
OpenTelemetryCollector 自定义资源(CR)支持自动创建 Prometheus ServiceMonitor 或 PodMonitor 资源。这些资源会指示 Monitoring Stack 从 Collector 的内部 telemetry 端点以及 pipeline 中定义的任何 Prometheus exporter 端点收集指标。
启用自动创建 ServiceMonitor
当你在 Collector CR 中启用 enableMetrics 选项时,Alauda 版本的 OpenTelemetry v2 Operator 会自动提供所需的 ServiceMonitor 或 PodMonitor 资源,用于指标收集。
以下示例展示了一个已配置 Prometheus exporter 并启用自动指标收集的 Collector CR:
- 在 ACP prometheus 中需要
prometheus=kube-prometheus。 - 允许 Operator 自动创建
ServiceMonitor或PodMonitor资源,以目标为 Collector 的指标端点,包括内部 telemetry 和 Prometheus exporter 端口。
启用 enableMetrics 后会创建两个独立的 ServiceMonitor 资源:
- 一个
ServiceMonitor目标是<instance_name>-collector-monitoring服务,用于收集 Collector 自身的内部运行指标。 - 另一个
ServiceMonitor目标是<instance_name>-collector服务,用于收集在 pipeline 中配置的任何 Prometheus exporter 发布的指标。
Collector 的内部指标不再携带 service_name、service_instance_id 或 service_version 标签;这些身份信息改为通过 target_info 指标发布。按这些标签进行分组或筛选的查询必须与 target_info 进行 join。请参见 识别生成指标的 Collector。
使用自定义 PodMonitor
对于需要更细粒度控制指标收集的场景——例如过滤掉 Prometheus 抓取过程中引入的重复标签——你可以手动创建 PodMonitor 资源,而不是依赖自动的 ServiceMonitor 提供。
以下示例展示了一个目标为 Collector pod 的 PodMonitor,并应用 relabeling 规则来删除冗余标签:
- 在 ACP prometheus 中需要
prometheus=kube-prometheus。 - 必须与 OpenTelemetry Collector CR 的名称匹配,遵循
<cr_name>-collector模式。 - 暴露 Collector 内部运行指标的端口。该端口始终命名为
metrics。 - 暴露 Collector pipeline 中配置的 Prometheus exporter 指标的端口。