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 をインストールできます。
-
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 -
"kube-state-metricsカスタムリソースのドキュメント"の手順に従って、Trident Protectで使用されるカスタムリソースのメトリックを生成するように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:アラートとアラートの送信先を設定する
ツールが連携するように構成したら、アラートをトリガーする情報の種類とアラートの送信先を構成する必要があります。
アラートの例:バックアップ失敗
次の例では、バックアップカスタムリソースのステータスが `Error`に設定されてから5秒以上経過したときにトリガーされる重要なアラートを定義します。この例を環境に合わせてカスタマイズし、この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 を設定して他のチャネルにアラートを送信する
Alertmanagerを設定して、他のチャネルに通知を送信することもできます。Eメール、PagerDuty、Microsoft Teams、またはその他の通知サービスを設定するには、 `alertmanager.yaml`ファイルでそれぞれの設定を指定します。
次の例では、Slack チャネルに通知を送信するように Alertmanager を構成します。この例を自分の環境に合わせてカスタマイズするには、 `api_url`キーの値をお使いの環境で使用されている Slack Webhook 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