Monitorare le risorse di Trident Protect
È possibile utilizzare gli strumenti open source kube-state-metrics, Prometheus e Alertmanager per monitorare lo stato di salute delle risorse protette da Trident Protect.
Il servizio kube-state-metrics genera metriche dalla comunicazione API di Kubernetes. Utilizzarlo con Trident Protect espone informazioni utili sullo stato delle risorse nel tuo ambiente.
Prometheus è un toolkit in grado di acquisire i dati generati da kube-state-metrics e presentarli come informazioni facilmente leggibili su questi oggetti. Insieme, kube-state-metrics e Prometheus offrono un modo per monitorare l'integrità e lo stato delle risorse che gestisci con Trident Protect.
Alertmanager è un servizio che acquisisce gli avvisi inviati da strumenti come Prometheus e li instrada verso destinazioni che configuri.
|
|
Le configurazioni e le istruzioni incluse in questi passaggi sono solo esempi; è necessario personalizzarle per adattarle al proprio ambiente. Fare riferimento alla seguente documentazione ufficiale per istruzioni e supporto specifici: |
Passaggio 1: installa gli strumenti di monitoraggio
Per abilitare il monitoraggio delle risorse in Trident Protect, è necessario installare e configurare kube-state-metrics, Promethus e Alertmanager.
Installa kube-state-metrics
Puoi installare kube-state-metrics usando Helm.
-
Aggiungi il grafico Helm kube-state-metrics. Ad esempio:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update -
Applica il CRD ServiceMonitor di Prometheus al cluster:
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -
Crea un file di configurazione per il grafico Helm (ad esempio,
metrics-config.yaml). Puoi personalizzare la seguente configurazione di esempio in base al tuo ambiente:metrics-config.yaml: configurazione Helm chart kube-state-metrics--- 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 -
Installa kube-state-metrics distribuendo il grafico Helm. Ad esempio:
helm install custom-resource -f metrics-config.yaml prometheus-community/kube-state-metrics --version 5.21.0 -
Configura kube-state-metrics per generare metriche per le risorse personalizzate utilizzate da Trident Protect seguendo le istruzioni nel "documentazione delle risorse personalizzate kube-state-metrics".
Installa Prometheus
È possibile installare Prometheus seguendo le istruzioni nel "Documentazione di Prometheus".
Installa Alertmanager
È possibile installare Alertmanager seguendo le istruzioni nel "Documentazione di Alertmanager".
Passaggio 2: configura gli strumenti di monitoraggio affinché funzionino insieme
Dopo aver installato gli strumenti di monitoraggio, è necessario configurarli affinché funzionino insieme.
-
Integra kube-state-metrics con Prometheus. Modifica il file di configurazione Prometheus (
prometheus.yamle aggiungi le informazioni sul servizio kube-state-metrics. Ad esempio:prometheus.yaml: integrazione del servizio kube-state-metrics con 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'] -
Configura Prometheus per indirizzare gli avvisi ad Alertmanager. Modifica il file di configurazione di Prometheus (
prometheus.yamle aggiungi la seguente sezione:prometheus.yaml: Invia avvisi ad Alertmanageralerting: alertmanagers: - static_configs: - targets: - alertmanager.trident-protect.svc:9093
Prometheus ora può raccogliere metriche da kube-state-metrics e inviare avvisi ad Alertmanager. Ora sei pronto per configurare quali condizioni attivano un avviso e dove devono essere inviati gli avvisi.
Passaggio 3: Configura gli avvisi e le destinazioni degli avvisi
Dopo aver configurato gli strumenti affinché funzionino insieme, è necessario configurare quale tipo di informazioni attiva gli avvisi e dove devono essere inviati.
Esempio di avviso: errore di backup
L'esempio seguente definisce un avviso critico che viene attivato quando lo stato della risorsa personalizzata di backup è impostato su Error per 5 secondi o più. È possibile personalizzare questo esempio in base al proprio ambiente e includere questo frammento YAML nel file di configurazione 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."
Configura Alertmanager per inviare avvisi ad altri canali
È possibile configurare Alertmanager per inviare notifiche ad altri canali, come e-mail, PagerDuty, Microsoft Teams o altri servizi di notifica, specificando la rispettiva configurazione nel alertmanager.yaml file.
L'esempio seguente configura Alertmanager per inviare notifiche a un canale Slack. Per personalizzare questo esempio in base al tuo ambiente, sostituisci il valore della api_url chiave con l'URL del webhook Slack utilizzato nel tuo ambiente:
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