Monitora le risorse di protezione Trident
È possibile utilizzare gli strumenti open source kube-state-metrics, Prometheus e Alertmanager per monitorare lo stato di integrità delle risorse protette da Trident Protect.
Il servizio kube-state-metrics genera metriche dalla comunicazione API di Kubernetes. Utilizzandolo con Trident Protect, puoi ottenere 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 ti consentono di monitorare lo stato e l'integrità delle risorse che gestisci con Trident Protect.
Alertmanager è un servizio che acquisisce gli avvisi inviati da strumenti come Prometheus e li indirizza verso destinazioni configurate dall'utente.
|
|
Le configurazioni e le istruzioni incluse in questi passaggi sono solo esempi; è necessario personalizzarle in base al proprio ambiente. Per istruzioni e supporto specifici, fare riferimento alla seguente documentazione ufficiale: |
Passaggio 1: installare 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 tramite Helm.
-
Aggiungere il grafico Helm kube-state-metrics. Per esempio:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update -
Applicare il CRD di Prometheus ServiceMonitor al cluster:
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -
Creare un file di configurazione per il grafico Helm (ad esempio,
metrics-config.yaml). È possibile personalizzare la seguente configurazione di esempio in base al proprio ambiente:metrics-config.yaml: configurazione del grafico Helm 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. Per esempio:
helm install custom-resource -f metrics-config.yaml prometheus-community/kube-state-metrics --version 5.21.0 -
Configurare kube-state-metrics per generare metriche per le risorse personalizzate utilizzate da Trident Protect seguendo le istruzioni in "documentazione delle risorse personalizzate kube-state-metrics" .
Installa Prometheus
Puoi installare Prometheus seguendo le istruzioni nel "Documentazione di Prometheus" .
Installa Alertmanager
Puoi installare Alertmanager seguendo le istruzioni nel "Documentazione di Alertmanager" .
Passaggio 2: configurare 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 di Prometheus(
prometheus.yaml) e aggiungere le informazioni sul servizio kube-state-metrics. Per 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'] -
Configurare Prometheus per indirizzare gli avvisi ad Alertmanager. Modifica il file di configurazione di Prometheus(
prometheus.yaml) e aggiungere 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 può inviare avvisi ad Alertmanager. Ora sei pronto per configurare quali condizioni attivano un avviso e dove devono essere inviati gli avvisi.
Passaggio 3: configurare gli avvisi e le destinazioni degli avvisi
Dopo aver configurato gli strumenti affinché funzionino insieme, è necessario configurare il tipo di informazioni che attivano 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ù. Puoi personalizzare questo esempio per adattarlo al tuo ambiente e includere questo frammento YAML nel tuo prometheus.yaml file di configurazione:
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 in 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 di 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