为监控栈配置指标

OpenTelemetry Collector 可以与平台监控栈集成,通过 Prometheus 暴露自身的运行指标。作为集群管理员,你可以设置此集成以实现以下目标:

  • 自动生成 Prometheus ServiceMonitor 资源,用于抓取 Collector 的内部 pipeline 指标以及任何已配置的 Prometheus exporter 端点。
  • 使用 Collector 中的 Prometheus receiver,从集群内置监控基础设施拉取指标。

将指标发送到监控栈

OpenTelemetryCollector 自定义资源(CR)支持自动创建 Prometheus ServiceMonitor 或 PodMonitor 资源。这些资源会指示监控栈从 Collector 的内部 telemetry 端点以及 pipeline 中定义的任何 Prometheus exporter 端点收集指标。

启用自动创建 ServiceMonitor

当你在 Collector CR 中启用 enableMetrics 选项时,Alauda 构建的 OpenTelemetry v2 Operator 会自动提供所需的 ServiceMonitor 或 PodMonitor 资源,以进行指标收集。

以下示例展示了一个配置了 Prometheus exporter 且已启用自动指标收集的 Collector CR:

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  labels:
    prometheus: kube-prometheus
spec:
  mode: deployment
  replicas: 1
  observability:
    metrics:
      enableMetrics: true
  config:
    exporters:
      prometheus:
        endpoint: 0.0.0.0:8889
        resource_to_telemetry_conversion:
          enabled: true # by default resource attributes are dropped
    service:
      telemetry:
        metrics:
          readers:
          - pull:
              exporter:
                prometheus:
                  host: 0.0.0.0
                  port: 8888
                  without_scope_info: true
                  without_type_suffix: true
                  without_units: true
      pipelines:
        metrics:
          exporters: [prometheus]
  1. 在 ACP prometheus 中需要 prometheus=kube-prometheus。
  2. 使 Operator 能够自动创建指向 Collector 指标端点的 ServiceMonitor 或 PodMonitor 资源,包括内部 telemetry 和 Prometheus exporter 端口。
NOTE

启用 enableMetrics 会创建两个独立的 ServiceMonitor 资源:

  • 一个 ServiceMonitor 目标是 <instance_name>-collector-monitoring Service,用于收集 Collector 自身的内部运行指标。
  • 另一个 ServiceMonitor 目标是 <instance_name>-collector Service,用于收集 pipeline 中配置的任何 Prometheus exporter 发布的指标。

使用自定义 PodMonitor

对于需要更精细控制指标收集的场景——例如过滤 Prometheus 抓取过程中引入的重复标签——你可以手动创建 PodMonitor 资源,而不是依赖自动的 ServiceMonitor provisioning。

以下示例展示了一个 PodMonitor,它以 Collector pods 为目标,并应用 relabeling 规则以删除冗余标签:

apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
  labels:
    prometheus: kube-prometheus
  name: otel-collector
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: <cr_name>-collector
  podMetricsEndpoints:
  - port: metrics
  - port: promexporter
    relabelings:
    - action: labeldrop
      regex: pod
    - action: labeldrop
      regex: container
    - action: labeldrop
      regex: endpoint
    metricRelabelings:
    - action: labeldrop
      regex: instance
    - action: labeldrop
      regex: job
  1. 在 ACP prometheus 中需要 prometheus=kube-prometheus。
  2. 必须与 OpenTelemetry Collector CR 的名称匹配,遵循 <cr_name>-collector 模式。
  3. 暴露 Collector 内部运行指标的端口。此端口始终命名为 metrics。
  4. 暴露 Collector pipeline 中配置的 Prometheus exporter 指标的端口。