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