Saltar al contenido principal

Capítulo 11.1 - Monitoreo de Kubernetes

Objetivos de Aprendizaje​

Al final de este capítulo, usted será capaz de:

  • Comprender la importancia del monitoreo en Kubernetes
  • Instalar Prometheus para la recolección de métricas
  • Configurar Grafana para la visualización
  • Comprender las métricas esenciales de Kubernetes
  • Configurar ServiceMonitors
  • Crear dashboards personalizados

Introducción​

El monitoreo es esencial para comprender el estado de salud y el rendimiento de un clúster de Kubernetes y sus aplicaciones.


Herramientas de Monitoreo​

Prometheus​

Sistema de monitoreo y alertas open-source que recolecta y almacena métricas en forma de series temporales.

Características:

  • Recolección de métricas vía pull
  • Almacenamiento eficiente
  • Lenguaje de consulta PromQL
  • Integración nativa con Kubernetes

Grafana​

Plataforma de visualización que permite crear dashboards interactivos a partir de las métricas de Prometheus.

Características:

  • Dashboards personalizables
  • Alertas visuales
  • Soporte para múltiples fuentes de datos
  • Compartir y colaborar

Instalación de Prometheus​

Vía Helm​

# Añadir el repositorio
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

# Instalar Prometheus
helm install prometheus prometheus-community/kube-prometheus-stack \
--namespace monitoring \
--create-namespace

Verificación​

# Ver los Pods
kubectl get pods -n monitoring

# Ver los Services
kubectl get svc -n monitoring

# Acceder a Prometheus
kubectl port-forward -n monitoring svc/prometheus-kube-prometheus-prometheus 9090:9090

Métricas Importantes​

Métricas de Clúster​

  • CPU: Uso de CPU de los nodes y Pods
  • Memoria: Uso de memoria de los nodes y Pods
  • Red: Tráfico de red entrante/saliente
  • Almacenamiento: Uso del almacenamiento

Métricas de Aplicación​

  • Solicitudes HTTP: Tasa de solicitudes, latencia, errores
  • Conexiones DB: Pool de conexiones, tiempo de respuesta
  • Cola: Tamaño de las colas, tiempo de procesamiento

Métricas de Kubernetes​

  • Pods: Estado, reinicios, ready/unready
  • Deployments: Réplicas deseadas vs actuales
  • Services: Endpoints disponibles

ServiceMonitors​

Los ServiceMonitors permiten a Prometheus descubrir y recolectar métricas de los servicios.

Ejemplo: ServiceMonitor​

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: my-app-metrics
namespace: default
spec:
selector:
matchLabels:
app: my-app
endpoints:
- port: metrics
interval: 30s
path: /metrics

Service con Métricas​

apiVersion: v1
kind: Service
metadata:
name: my-app-service
labels:
app: my-app
spec:
selector:
app: my-app
ports:
- name: http
port: 8080
- name: metrics
port: 9090

Instalación de Grafana​

Vía Helm (Incluido con kube-prometheus-stack)​

Grafana está incluido en kube-prometheus-stack.

Acceso​

# Port-forward
kubectl port-forward -n monitoring svc/prometheus-grafana 3000:80

# Credenciales por defecto
# Username: admin
# Password: prom-operator

Dashboards Predefinidos​

  • Monitoreo de Clúster de Kubernetes
  • Node Exporter
  • Monitoreo de Pods
  • Etc.

Creación de Dashboards​

Dashboard Básico​

{
"dashboard": {
"title": "My App Dashboard",
"panels": [
{
"title": "Request Rate",
"targets": [
{
"expr": "rate(http_requests_total[5m])",
"legendFormat": "{{method}}"
}
]
},
{
"title": "Error Rate",
"targets": [
{
"expr": "rate(http_requests_total{status=~\"5..\"}[5m])"
}
]
}
]
}
}

PromQL (Prometheus Query Language)​

Consultas Básicas​

# Tasa de solicitudes
rate(http_requests_total[5m])

# Suma por label
sum(rate(http_requests_total[5m])) by (method)

# Porcentaje de errores
sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) * 100

# Uso de CPU
100 - (avg(rate(container_cpu_usage_seconds_total[5m])) * 100)

Comandos Útiles​

Prometheus​

# Acceder a Prometheus
kubectl port-forward -n monitoring svc/prometheus-kube-prometheus-prometheus 9090:9090

# Ver los targets
# En la interfaz de Prometheus: Status > Targets

Grafana​

# Acceder a Grafana
kubectl port-forward -n monitoring svc/prometheus-grafana 3000:80

# Importar un dashboard
# En Grafana: + > Import > ID del dashboard

Buenas Prácticas​

1. Métricas Esenciales​

Monitorear las métricas críticas: CPU, memoria, latencia, errores.

2. Retención​

Configurar una retención apropiada para las métricas.

3. Dashboards​

Crear dashboards por aplicación/servicio.

4. Alertas​

Configurar alertas para las métricas críticas.

5. Rendimiento​

Evitar recolectar con demasiada frecuencia para no sobrecargar.


Resumen​

En este capítulo, usted ha aprendido:

Monitoreo: Esencial para la salud del clúster
Prometheus: Recolección y almacenamiento de métricas
Grafana: Visualización con dashboards
Métricas: Clúster, aplicación, Kubernetes
ServiceMonitors: Descubrimiento automático de métricas
PromQL: Lenguaje de consulta para métricas
Dashboards: Visualización personalizable
Buenas prácticas: Métricas esenciales, retención, alertas


Próximos Pasos​

Capítulo 11.2: Logs
Capítulo 11.3: Alerting
Lab 11.1: Instalación de Prometheus y Grafana


Capítulo creado el: diciembre 2024