Trident überwachen und Ressourcen schützen
Sie können die Open-Source-Tools kube-state-metrics, Prometheus und Alertmanager verwenden, um den Zustand der durch Trident protect geschützten Ressourcen zu überwachen.
Der Dienst kube-state-metrics generiert Metriken aus der Kubernetes-API-Kommunikation. Die Verwendung mit Trident Protect liefert nützliche Informationen über den Zustand der Ressourcen in Ihrer Umgebung.
Prometheus ist ein Toolkit, das die von kube-state-metrics generierten Daten aufnehmen und als leicht lesbare Informationen über diese Objekte darstellen kann. Zusammen bieten kube-state-metrics und Prometheus Ihnen die Möglichkeit, den Zustand und die Integrität der Ressourcen zu überwachen, die Sie mit Trident protect verwalten.
Alertmanager ist ein Dienst, der die von Tools wie Prometheus gesendeten Warnmeldungen aufnimmt und sie an von Ihnen konfigurierte Ziele weiterleitet.
|
|
Die in diesen Schritten enthaltenen Konfigurationen und Anleitungen sind nur Beispiele; Sie müssen sie an Ihre Umgebung anpassen. Spezifische Anweisungen und Unterstützung finden Sie in der folgenden offiziellen Dokumentation: |
Schritt 1: Installieren Sie die Überwachungstools
Um die Ressourcenüberwachung in Trident Protect zu aktivieren, müssen Sie kube-state-metrics, Promethus und Alertmanager installieren und konfigurieren.
Installieren Sie kube-state-metrics
Sie können kube-state-metrics mit Helm installieren.
-
Füge das Helm-Chart kube-state-metrics hinzu. Beispiel:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update -
Wenden Sie den Prometheus ServiceMonitor CRD auf den Cluster an:
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -
Erstellen Sie eine Konfigurationsdatei für das Helm-Chart (zum Beispiel,
metrics-config.yaml). Sie können die folgende Beispielkonfiguration an Ihre Umgebung anpassen:metrics-config.yaml: kube-state-metrics Helm-Chart-Konfiguration--- 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 -
Installieren Sie kube-state-metrics durch Bereitstellung des Helm-Charts. Beispiel:
helm install custom-resource -f metrics-config.yaml prometheus-community/kube-state-metrics --version 5.21.0 -
Konfigurieren Sie kube-state-metrics so, dass Metriken für die von Trident Protect verwendeten benutzerdefinierten Ressourcen generiert werden, indem Sie den Anweisungen in der "Dokumentation der benutzerdefinierten Ressource kube-state-metrics" .
Prometheus installieren
Sie können Prometheus installieren, indem Sie den Anweisungen in der "Prometheus-Dokumentation" .
Installieren Sie Alertmanager
Sie können Alertmanager installieren, indem Sie den Anweisungen in der "Alertmanager-Dokumentation" .
Schritt 2: Konfigurieren Sie die Überwachungstools für die Zusammenarbeit
Nach der Installation der Überwachungstools müssen Sie diese so konfigurieren, dass sie zusammenarbeiten.
-
kube-state-metrics mit Prometheus integrieren. Bearbeiten Sie die Prometheus-Konfigurationsdatei(
prometheus.yaml) und fügen Sie die Informationen zum kube-state-metrics-Dienst hinzu. Beispiel:prometheus.yaml: Integration des kube-state-metrics-Dienstes mit 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'] -
Konfigurieren Sie Prometheus so, dass Warnmeldungen an Alertmanager weitergeleitet werden. Bearbeiten Sie die Prometheus-Konfigurationsdatei(
prometheus.yaml) und fügen Sie den folgenden Abschnitt hinzu:prometheus.yaml: Benachrichtigungen an Alertmanager sendenalerting: alertmanagers: - static_configs: - targets: - alertmanager.trident-protect.svc:9093
Prometheus kann nun Metriken von kube-state-metrics erfassen und Warnungen an Alertmanager senden. Sie können nun konfigurieren, unter welchen Bedingungen eine Warnung ausgelöst wird und wohin die Warnungen gesendet werden sollen.
Schritt 3: Benachrichtigungen und Benachrichtigungsziele konfigurieren
Nachdem Sie die Tools so konfiguriert haben, dass sie zusammenarbeiten, müssen Sie festlegen, welche Art von Informationen Warnmeldungen auslösen und wohin die Warnmeldungen gesendet werden sollen.
Beispiel für eine Warnung: Backup-Fehler
Das folgende Beispiel definiert eine kritische Warnung, die ausgelöst wird, wenn der Status der benutzerdefinierten Sicherungsressource auf „“ gesetzt wird. Error für 5 Sekunden oder länger. Sie können dieses Beispiel an Ihre Umgebung anpassen und diesen YAML-Ausschnitt in Ihre Datei einfügen. prometheus.yaml Konfigurationsdatei:
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."
Konfigurieren Sie Alertmanager so, dass Benachrichtigungen an andere Kanäle gesendet werden.
Sie können Alertmanager so konfigurieren, dass Benachrichtigungen an andere Kanäle wie E-Mail, PagerDuty, Microsoft Teams oder andere Benachrichtigungsdienste gesendet werden, indem Sie die entsprechende Konfiguration in der alertmanager.yaml Datei.
Das folgende Beispiel konfiguriert Alertmanager so, dass Benachrichtigungen an einen Slack-Kanal gesendet werden. Um dieses Beispiel an Ihre Umgebung anzupassen, ersetzen Sie den Wert von api_url Schlüssel mit der in Ihrer Umgebung verwendeten 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