Introducción

Prometheus es una herramienta de monitoreo y alerta de código abierto diseñada originalmente por SoundCloud. Es especialmente popular en el ecosistema de Kubernetes debido a su capacidad para recopilar métricas de aplicaciones y servicios, y su integración con Kubernetes. En esta sección, aprenderás cómo configurar y utilizar Prometheus para monitorear un clúster de Kubernetes.

Conceptos Clave

Antes de sumergirnos en la configuración de Prometheus, es importante entender algunos conceptos clave:

  • Métricas: Datos cuantitativos que describen el estado y el rendimiento de un sistema.
  • Scraping: El proceso de recopilar métricas de los endpoints de los servicios.
  • Alertas: Notificaciones generadas cuando las métricas cumplen ciertas condiciones predefinidas.
  • Exportadores: Componentes que exponen métricas en un formato que Prometheus puede recopilar.

Instalación de Prometheus en Kubernetes

Paso 1: Configuración del Namespace

Primero, crearemos un namespace dedicado para Prometheus:

kubectl create namespace monitoring

Paso 2: Despliegue de Prometheus usando Helm

Helm es una herramienta de gestión de paquetes para Kubernetes que facilita la instalación de aplicaciones complejas. Vamos a usar Helm para instalar Prometheus.

  1. Instalar Helm (si no lo tienes instalado):

    curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
    
  2. Agregar el repositorio de Prometheus:

    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    helm repo update
    
  3. Instalar Prometheus:

    helm install prometheus prometheus-community/prometheus --namespace monitoring
    

Paso 3: Verificar la Instalación

Para verificar que Prometheus se ha instalado correctamente, puedes listar los pods en el namespace monitoring:

kubectl get pods -n monitoring

Deberías ver varios pods en ejecución, incluyendo prometheus-server.

Acceso a la Interfaz de Prometheus

Para acceder a la interfaz web de Prometheus, puedes usar un port-forward:

kubectl port-forward -n monitoring deploy/prometheus-server 9090:9090

Luego, abre tu navegador y navega a http://localhost:9090.

Configuración de Scraping

Prometheus recopila métricas mediante el scraping de endpoints HTTP. La configuración de scraping se define en el archivo prometheus.yml. Aquí hay un ejemplo básico de configuración:

scrape_configs:
  - job_name: 'kubernetes-nodes'
    kubernetes_sd_configs:
      - role: node
    relabel_configs:
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
      - target_label: __address__
        replacement: kubernetes.default.svc:443
        action: replace
      - source_labels: [__meta_kubernetes_node_name]
        regex: (.+)
        target_label: __metrics_path__
        replacement: /api/v1/nodes/${1}/proxy/metrics

Este ejemplo configura Prometheus para recopilar métricas de los nodos de Kubernetes.

Alertas con Prometheus

Prometheus incluye un componente llamado Alertmanager que gestiona las alertas. Aquí hay un ejemplo de configuración de alertas:

Paso 1: Configuración de Alertmanager

Crea un archivo alertmanager.yml con la siguiente configuración básica:

global:
  resolve_timeout: 5m

route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 3h
  receiver: 'slack-notifications'

receivers:
  - name: 'slack-notifications'
    slack_configs:
      - api_url: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'
        channel: '#alerts'

Paso 2: Configuración de Reglas de Alerta

Crea un archivo alert-rules.yml con una regla de alerta básica:

groups:
  - name: example
    rules:
      - alert: HighMemoryUsage
        expr: node_memory_Active_bytes / node_memory_MemTotal_bytes * 100 > 80
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "High memory usage detected"
          description: "Memory usage is above 80% for more than 5 minutes."

Paso 3: Aplicar la Configuración

Actualiza el archivo prometheus.yml para incluir la configuración de Alertmanager y las reglas de alerta:

alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - alertmanager.monitoring.svc:9093

rule_files:
  - "alert-rules.yml"

Ejercicio Práctico

Ejercicio 1: Configurar un Exportador de Node

  1. Instalar el Exportador de Node:

    helm install node-exporter prometheus-community/prometheus-node-exporter --namespace monitoring
    
  2. Actualizar la Configuración de Scraping:

    Añade la siguiente configuración a prometheus.yml:

    scrape_configs:
      - job_name: 'node-exporter'
        kubernetes_sd_configs:
          - role: pod
        relabel_configs:
          - source_labels: [__meta_kubernetes_pod_label_app]
            action: keep
            regex: node-exporter
    
  3. Verificar la Configuración:

    Accede a la interfaz de Prometheus y verifica que las métricas del exportador de node están siendo recopiladas.

Solución

Si has seguido los pasos correctamente, deberías ver las métricas del exportador de node en la interfaz de Prometheus bajo el job node-exporter.

Conclusión

En esta sección, hemos cubierto los conceptos básicos de Prometheus y cómo configurarlo para monitorear un clúster de Kubernetes. También hemos visto cómo configurar alertas y cómo instalar y configurar un exportador de node. Con esta base, estarás bien preparado para profundizar en el monitoreo avanzado y la creación de alertas personalizadas en tu entorno de Kubernetes.

Curso de Kubernetes

Módulo 1: Introducción a Kubernetes

Módulo 2: Componentes Principales de Kubernetes

Módulo 3: Gestión de Configuración y Secretos

Módulo 4: Redes en Kubernetes

Módulo 5: Almacenamiento en Kubernetes

Módulo 6: Conceptos Avanzados de Kubernetes

Módulo 7: Monitoreo y Registro

Módulo 8: Seguridad en Kubernetes

Módulo 9: Escalado y Rendimiento

Módulo 10: Ecosistema y Herramientas de Kubernetes

Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real

Módulo 12: Preparación para la Certificación de Kubernetes

© Copyright 2024. Todos los derechos reservados