Skip to main content
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

監控Trident保護資源

貢獻者 netapp-aruldeepa

您可以使用 kube-state-metrics、Prometheus 和 Alertmanager 開源工具來監控Trident Protect 保護的資源的健康狀況。

kube-state-metrics 服務從 Kubernetes API 通訊產生指標。將其與Trident Protect 結合使用,可以顯示有關環境中資源狀態的有用資訊。

Prometheus 是一個工具包,它可以接收 kube-state-metrics 產生的數據,並將其呈現為關於這些物件的易於閱讀的資訊。 kube-state-metrics 和 Prometheus 共同提供了一種方法,讓您可以監控使用Trident Protect 管理的資源的健康狀況和狀態。

Alertmanager 是一項服務,它可以接收 Prometheus 等工具發送的警報,並將它們路由到您配置的目標位置。

註

這些步驟中包含的配置和指導僅供參考;您需要根據自己的環境進行自訂。請參閱以下官方文件以取得具體說明和支援:

步驟 1:安裝監控工具

要在Trident Protect 中啟用資源監控,您需要安裝和設定 kube-state-metrics、Promethus 和 Alertmanager。

安裝 kube-state-metrics

您可以使用 Helm 安裝 kube-state-metrics。

步驟
  1. 新增 kube-state-metrics Helm chart。例如:

    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    helm repo update
  2. 將 Prometheus ServiceMonitor CRD 應用到叢集:

    kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml
  3. 為 Helm chart 建立一個設定檔(例如, metrics-config.yaml )。您可以根據自身環境自訂以下範例配置:

    metrics-config.yaml:kube-state-metrics Helm chart 配置
    ---
    extraArgs:
      # Collect only custom metrics
      - --custom-resource-state-only=true
    
    customResourceState:
      enabled: true
      config:
        kind: CustomResourceStateMetrics
        spec:
          resources:
          - groupVersionKind:
              group: protect.trident.netapp.io
              kind: "Backup"
              version: "v1"
            labelsFromPath:
              backup_uid: [metadata, uid]
              backup_name: [metadata, name]
              creation_time: [metadata, creationTimestamp]
            metrics:
            - name: backup_info
              help: "Exposes details about the Backup state"
              each:
                type: Info
                info:
                  labelsFromPath:
                    appVaultReference: ["spec", "appVaultRef"]
                    appReference: ["spec", "applicationRef"]
    rbac:
      extraRules:
      - apiGroups: ["protect.trident.netapp.io"]
        resources: ["backups"]
        verbs: ["list", "watch"]
    
    # Collect metrics from all namespaces
    namespaces: ""
    
    # Ensure that the metrics are collected by Prometheus
    prometheus:
      monitor:
        enabled: true
  4. 透過部署 Helm chart 來安裝 kube-state-metrics。例如:

    helm install custom-resource -f metrics-config.yaml prometheus-community/kube-state-metrics --version 5.21.0
  5. 請依照下列說明配置 kube-state-metrics,以產生Trident Protect 使用的自訂資源的指標: "kube-state-metrics 自訂資源文檔"

安裝 Prometheus

您可以按照以下說明安裝 Prometheus: "普羅米修斯文檔"

安裝 Alertmanager

您可以按照以下說明安裝 Alertmanager: "Alertmanager 文檔"

步驟 2:配置監控工具以協同工作

安裝監控工具後,需要設定它們以使其協同工作。

步驟
  1. 將 kube-state-metrics 與 Prometheus 整合。編輯 Prometheus 配置文件(prometheus.yaml)並新增 kube-state-metrics 服務資訊。例如:

    prometheus.yaml:kube-state-metrics 服務與 Prometheus 的集成
    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: prometheus-config
      namespace: trident-protect
    data:
      prometheus.yaml: |
        global:
          scrape_interval: 15s
        scrape_configs:
          - job_name: 'kube-state-metrics'
            static_configs:
              - targets: ['kube-state-metrics.trident-protect.svc:8080']
  2. 配置 Prometheus 將警報路由到 Alertmanager。編輯 Prometheus 配置文件(prometheus.yaml)並添加以下部分:

    prometheus.yaml:向 Alertmanager 發送警報
    alerting:
      alertmanagers:
        - static_configs:
            - targets:
                - alertmanager.trident-protect.svc:9093
結果

Prometheus 現在可以從 kube-state-metrics 收集指標,並且可以向​​ Alertmanager 發送警報。現在您可以設定觸發警報的條件以及警報的發送位置。

步驟 3:設定警報和警報目標

配置好工具協同工作後,還需要配置哪些類型的信息會觸發警報,以及警報應該發送到哪裡。

警報範例:備份失敗

以下範例定義了一個關鍵警報,當備份自訂資源的狀態設定為「是」時,警報將會被觸發。 `Error`持續5秒或更長時間。您可以自訂此範例以符合您的環境,並將此 YAML 程式碼片段包含在您的專案中。 `prometheus.yaml`設定檔:

rules.yaml:定義備份失敗的 Prometheus 警報
rules.yaml: |
  groups:
    - name: fail-backup
        rules:
          - alert: BackupFailed
            expr: kube_customresource_backup_info{status="Error"}
            for: 5s
            labels:
              severity: critical
            annotations:
              summary: "Backup failed"
              description: "A backup has failed."

配置 Alertmanager 向其他管道發送警報

您可以設定 Alertmanager,使其將通知傳送到其他管道,例如電子郵件、PagerDuty、Microsoft Teams 或其他通知服務,只需在設定檔中指定相應的配置即可。 `alertmanager.yaml`文件。

以下範例配置 Alertmanager 向 Slack 頻道發送通知。若要根據您的環境自訂此範例,請取代以下值: `api_url`金鑰包含您環境中使用的 Slack webhook URL:

alertmanager.yaml:向 Slack 頻道發送警報
data:
  alertmanager.yaml: |
    global:
      resolve_timeout: 5m
    route:
      receiver: 'slack-notifications'
    receivers:
      - name: 'slack-notifications'
        slack_configs:
          - api_url: '<your-slack-webhook-url>'
            channel: '#failed-backups-channel'
            send_resolved: false