×

作为集群管理员,您可以配置 OpenTelemetry Collector 自定义资源 (CR) 来执行以下任务:

  • 创建一个 Prometheus `ServiceMonitor` CR,用于抓取 Collector 的管道指标和已启用的 Prometheus 导出器。

  • 配置 Prometheus 接收器以从集群内监控堆栈抓取指标。

将指标发送到监控堆栈的配置

您可以配置 `OpenTelemetryCollector` 自定义资源 (CR) 来创建一个 Prometheus `ServiceMonitor` CR 或 `PodMonitor` CR 用于 sidecar 部署。`ServiceMonitor` 可以抓取 Collector 的内部指标端点和 Prometheus 导出器指标端点。

带有 Prometheus 导出器的 OpenTelemetry Collector CR 示例
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
spec:
  mode: deployment
  observability:
    metrics:
      enableMetrics: true (1)
  config: |
    exporters:
      prometheus:
        endpoint: 0.0.0.0:8889
        resource_to_telemetry_conversion:
          enabled: true # by default resource attributes are dropped
    service:
      telemetry:
        metrics:
          address: ":8888"
      pipelines:
        metrics:
          receivers: [otlp]
          exporters: [prometheus]
1 配置 Red Hat 版本的 OpenTelemetry Operator 以创建 Prometheus `ServiceMonitor` CR 或 `PodMonitor` CR,用于抓取 Collector 的内部指标端点和 Prometheus 导出器指标端点。

将 `enableMetrics` 设置为 `true` 将创建以下两个 `ServiceMonitor` 实例:

  • 一个用于 `-collector-monitoring` 服务的 `ServiceMonitor` 实例。此 `ServiceMonitor` 实例抓取 Collector 的内部指标。

  • 一个用于 `-collector` 服务的 `ServiceMonitor` 实例。此 `ServiceMonitor` 实例抓取 Prometheus 导出器实例公开的指标。

或者,手动创建的 Prometheus `PodMonitor` CR 可以提供精细的控制,例如删除 Prometheus 抓取期间添加的重复标签。

配置监控堆栈以抓取 Collector 指标的 `PodMonitor` CR 示例
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: otel-collector
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: <cr_name>-collector (1)
  podMetricsEndpoints:
  - port: metrics (2)
  - port: promexporter (3)
    relabelings:
    - action: labeldrop
      regex: pod
    - action: labeldrop
      regex: container
    - action: labeldrop
      regex: endpoint
    metricRelabelings:
    - action: labeldrop
      regex: instance
    - action: labeldrop
      regex: job
1 OpenTelemetry Collector CR 的名称。
2 OpenTelemetry Collector 的内部指标端口的名称。此端口名称始终为 `metrics`。
3 OpenTelemetry Collector 的 Prometheus 导出器端口的名称。

从监控堆栈接收指标的配置

配置的 OpenTelemetry Collector 自定义资源 (CR) 可以设置 Prometheus 接收器以从集群内监控堆栈抓取指标。

用于从集群内监控堆栈抓取指标的 OpenTelemetry Collector CR 示例
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: otel-collector
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-monitoring-view (1)
subjects:
  - kind: ServiceAccount
    name: otel-collector
    namespace: observability
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: cabundle
  namespce: observability
  annotations:
    service.beta.openshift.io/inject-cabundle: "true" (2)
---
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
  name: otel
  namespace: observability
spec:
  volumeMounts:
    - name: cabundle-volume
      mountPath: /etc/pki/ca-trust/source/service-ca
      readOnly: true
  volumes:
    - name: cabundle-volume
      configMap:
        name: cabundle
  mode: deployment
  config: |
    receivers:
      prometheus: (3)
        config:
          scrape_configs:
            - job_name: 'federate'
              scrape_interval: 15s
              scheme: https
              tls_config:
                ca_file: /etc/pki/ca-trust/source/service-ca/service-ca.crt
              bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
              honor_labels: false
              params:
                'match[]':
                  - '{__name__="<metric_name>"}' (4)
              metrics_path: '/federate'
              static_configs:
                - targets:
                  - "prometheus-k8s.openshift-monitoring.svc.cluster.local:9091"
    exporters:
      debug: (5)
        verbosity: detailed
    service:
      pipelines:
        metrics:
          receivers: [prometheus]
          processors: []
          exporters: [debug]
1 将 `cluster-monitoring-view` 集群角色分配给 OpenTelemetry Collector 的服务帐户,以便它可以访问指标数据。
2 注入 OpenShift 服务 CA 以配置 Prometheus 接收器中的 TLS。
3 配置 Prometheus 接收器以从集群内监控堆栈抓取联合端点。
4 使用 Prometheus 查询语言选择要抓取的指标。有关联合端点的更多详细信息和限制,请参阅集群内监控文档。
5 配置调试导出器以将指标打印到标准输出。