Skip to main content
本製品の最新リリースがご利用いただけます。
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

Trident Protectリソースを監視

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、Prometheus、および Alertmanager をインストールして構成する必要があります。

kube-state-metricsをインストールする

Helm を使用して kube-state-metrics をインストールできます。

手順
  1. kube-state-metrics Helm チャートを追加します。例:

    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チャートの設定ファイルを作成します(例: metrics-config.yaml)。次の例の構成を、環境に合わせてカスタマイズできます:

    metrics-config.yaml:kube-state-metrics Helm チャート設定
    ---
    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 チャートをデプロイして 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は、 "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. アラートを Alertmanager にルーティングするように Prometheus を構成します。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を設定して、他のチャネルに通知を送信することもできます。Eメール、PagerDuty、Microsoft Teams、またはその他の通知サービスを設定するには、 `alertmanager.yaml`ファイルでそれぞれの設定を指定します。

次の例では、Slack チャネルに通知を送信するように Alertmanager を構成します。この例を自分の環境に合わせてカスタマイズするには、 `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