Tridentを監視してリソースを保護する
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 をインストールできます。
-
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は、電子メール、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