Supervisa los recursos de Trident Protect
Puedes usar las herramientas de código abierto kube-state-metrics, Prometheus y Alertmanager para monitorear la salud de los recursos protegidos por Trident Protect.
El servicio kube-state-metrics genera métricas a partir de la comunicación de la API de Kubernetes. Si lo usas con Trident Protect, te muestra información útil sobre el estado de los recursos en tu entorno.
Prometheus es un conjunto de herramientas que puede ingerir los datos generados por kube-state-metrics y presentarlos como información fácilmente legible sobre estos objetos. Juntos, kube-state-metrics y Prometheus te ofrecen una forma de monitorear la salud y el estado de los recursos que estás gestionando con Trident Protect.
Alertmanager es un servicio que ingiere las alertas enviadas por herramientas como Prometheus y las dirige a los destinos que tú configures.
|
|
Las configuraciones y orientaciones incluidas en estos pasos son solo ejemplos; necesitas personalizarlas para que coincidan con tu entorno. Consulta la siguiente documentación oficial para instrucciones y soporte específicos: |
Paso 1: instala las herramientas de supervisión
Para habilitar la supervisión de recursos en Trident Protect, necesitas instalar y configurar kube-state-metrics, Promethus y Alertmanager.
Instala kube-state-metrics
Puedes instalar kube-state-metrics usando Helm.
-
Agrega el Helm chart de kube-state-metrics. Por ejemplo:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update -
Aplica el CRD de Prometheus ServiceMonitor al clúster:
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -
Crea un archivo de configuración para el Helm chart (por ejemplo,
metrics-config.yaml). Puedes personalizar el siguiente ejemplo de configuración para que se ajuste a tu entorno:metrics-config.yaml: configuración del Helm chart de 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 -
Instala kube-state-metrics desplegando el chart de Helm. Por ejemplo:
helm install custom-resource -f metrics-config.yaml prometheus-community/kube-state-metrics --version 5.21.0 -
Configura kube-state-metrics para generar métricas para los recursos personalizados usados por Trident Protect siguiendo las instrucciones en el "documentación de recursos personalizados de kube-state-metrics".
Instala Prometheus
Puedes instalar Prometheus siguiendo las instrucciones en el "Documentación de Prometheus".
Instala Alertmanager
Puedes instalar Alertmanager siguiendo las instrucciones en "Documentación de Alertmanager".
Paso 2: configura las herramientas de supervisión para que funcionen juntas
Después de instalar las herramientas de supervisión, necesitas configurarlas para que funcionen juntas.
-
Integra kube-state-metrics con Prometheus. Edita el archivo de configuración de Prometheus (
prometheus.yamly añade la información del servicio kube-state-metrics. Por ejemplo:prometheus.yaml: integración del servicio 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 para enrutar las alertas a Alertmanager. Edita el archivo de configuración de Prometheus (
prometheus.yamly agrega la siguiente sección:prometheus.yaml: enviar alertas a Alertmanageralerting: alertmanagers: - static_configs: - targets: - alertmanager.trident-protect.svc:9093
Prometheus puede ahora recopilar métricas de kube-state-metrics y puede enviar alertas a Alertmanager. Ahora estás listo para configurar qué condiciones activan una alerta y a dónde se deben enviar las alertas.
Paso 3: Configura las alertas y los destinos de alertas
Después de configurar las herramientas para que funcionen juntas, necesitas configurar qué tipo de información activa las alertas y a dónde se deben enviar.
Ejemplo de alerta: fallo de backup
El siguiente ejemplo define una alerta crítica que se activa cuando el estado del recurso personalizado de copia de seguridad se establece en Error durante 5 segundos o más. Puedes personalizar este ejemplo para adaptarlo a tu entorno e incluir este fragmento YAML en tu prometheus.yaml archivo de configuración:
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 para enviar alertas a otros canales
Puedes configurar Alertmanager para enviar notificaciones a otros canales, como correo electrónico, PagerDuty, Microsoft Teams u otros servicios de notificación especificando la configuración respectiva en el archivo alertmanager.yaml.
El siguiente ejemplo configura Alertmanager para enviar notificaciones a un canal de Slack. Para adaptar este ejemplo a tu entorno, reemplaza el valor de la clave api_url con la URL del webhook de Slack que usas en tu entorno:
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