Tridentによるリソース保護の監視
オープンソースのkube-state-metrics、Prometheus、Alertmanagerツールを使用して、Trident保護で保護されているリソースの健全性を監視できます。
kube-state-metricsサービスは、Kubernetes API通信からメトリクスを生成します。Trident protectと併用すると、環境内のリソースの状態に関する有用な情報が公開されます。
Prometheusは、kube-state-metricsによって生成されたデータを取り込み、これらのオブジェクトに関する読みやすい情報として表示できるツールキットです。kube-state-metricsとprometheusを組み合わせることで、Trident protectで管理しているリソースの健全性とステータスを監視できます。
Alertmanagerは、Prometheusなどのツールから送信されたアラートを取り込み、設定した送信先にルーティングするサービスです。
|
これらの手順に記載されている構成とガイダンスは一例にすぎません。環境に合わせてカスタマイズする必要があります。具体的な手順とサポートについては、次の公式ドキュメントを参照してください。 |
手順1:監視ツールをインストールする
Trident保護でリソース監視を有効にするには、kube-state-metrics、Promethus、およびAlertmanagerをインストールして設定する必要があります。
インストールkube-state-metrics
kube-state-metricsはHelmを使用してインストールできます。
-
kube-state-metrics Helmチャートを追加します。例:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update
-
Prometheus ServiceMonitor CRD をクラスターに適用します。
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml
-
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
-
Helmチャートを展開してkube-state-metricsをインストールします。例:
helm install custom-resource -f metrics-config.yaml prometheus-community/kube-state-metrics --version 5.21.0
-
の手順に従って、Trident保護で使用されるカスタムリソースのメトリックを生成するようにkube-state-metricsを設定します。 "kube-state-metricsカスタムリソースドキュメント"
Prometheus をインストールする
の手順に従ってPrometheusをインストールできます。 "Prometheusノトキユメント"
AlertManagerのインストール
の手順に従って、AlertManagerをインストールできます "AlertManagerのドキュメント"。
ステップ2:監視ツールが連携するように設定する
監視ツールをインストールしたら、それらが連携するように設定する必要があります。
-
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']
-
アラートをAlertManagerにルーティングするようにPrometheusを設定します。Prometheus構成ファイル(`prometheus.yaml`を編集)、次のセクションを追加します。
prometheus.yaml: Alertmanagerにアラートを送信するalerting: alertmanagers: - static_configs: - targets: - alertmanager.trident-protect.svc:9093
Prometheusでは、kube-state-metricsから指標を収集し、アラートをAlertmanagerに送信できるようになりました。これで、アラートをトリガーする条件とアラートの送信先を設定する準備ができました。
手順3:アラートとアラートの送信先を設定する
ツールが連携して動作するように設定したら、アラートをトリガーする情報の種類とアラートの送信先を設定する必要があります。
アラートの例:バックアップの失敗
次の例は、バックアップカスタムリソースのステータスが5秒以上に設定された場合にトリガーされるCriticalアラートを定義します Error
。この例を環境に合わせてカスタマイズし、このYAMLスニペットを構成ファイルに含めることができます prometheus.yaml
。
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を設定する
電子メール、PagerDuty、Microsoft Teams、その他の通知サービスなどの他のチャネルに通知を送信するようにAlertManagerを設定するには、ファイルでそれぞれの設定を指定し `alertmanager.yaml`ます。
次の例では、Slackチャンネルに通知を送信するようにAlertManagerを設定します。この例を環境に合わせてカスタマイズするには、キーの値を環境で使用されているSlack Webhook URLに置き換え `api_url`ます。
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