Monitorización avanzada con Prometheus y Grafana: métricas, alertas y dashboards profesionales
En entornos modernos de producción, la observabilidad es crítica. Prometheus y Grafana son herramientas líderes para recolectar métricas, visualizar datos y generar alertas proactivas.
Este artículo cubre:
- Instalación y configuración avanzada de Prometheus
- Métricas personalizadas
- Integración con Grafana y creación de dashboards
- Alertas y reglas en tiempo real
- Buenas prácticas y optimización
1. Instalación de Prometheus
Descarga oficial
1
2
3
|
curl -LO https://github.com/prometheus/prometheus/releases/download/v2.51.0/prometheus-2.51.0.linux-amd64.tar.gz
tar xvfz prometheus-2.51.0.linux-amd64.tar.gz
cd prometheus-2.51.0.linux-amd64
|
Estructura principal
- prometheus.yml → configuración
- prometheus → binario
- promtool → herramientas de verificación
- consoles/ y console_libraries/ → dashboards básicos
2. Configuración avanzada de Prometheus
prometheus.yml ejemplo
1
2
3
4
5
6
7
8
9
10
11
|
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
rule_files:
- 'alert.rules.yml'
|
Buenas prácticas
- Definir intervalos de scrape consistentes
- Usar múltiples jobs para servicios críticos
- Validar configuración con
promtool check config prometheus.yml
3. Métricas personalizadas
Exporter básico en Bash
1
2
|
#!/bin/bash
echo "custom_metric 1"
|
Exporter en Python
1
2
3
4
5
6
7
|
from prometheus_client import start_http_server, Gauge
import random
MY_GAUGE = Gauge('my_metric', 'Descripción de mi métrica')
start_http_server(8000)
while True:
MY_GAUGE.set(random.random())
|
Integrar exporters en Prometheus
1
2
3
|
- job_name: 'custom'
static_configs:
- targets: ['localhost:8000']
|
4. Grafana: instalación y primeros pasos
Descarga oficial
1
2
3
4
5
|
sudo apt install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt update
sudo apt install grafana
sudo systemctl enable --now grafana-server
|
Configuración básica
- Acceder a
http://localhost:3000
- Usuario/admin: admin/admin
- Configurar datasources → Prometheus
5. Dashboards avanzados
Métricas clave
- CPU, memoria, disco, red
- Latencia de servicios
- Errores HTTP y logs
- Métricas personalizadas
Paneles útiles
- Heatmaps de latencia
- Tablas de top endpoints
- Gráficos de alertas recientes
6. Alerting y reglas
Alertmanager
1
2
|
sudo apt install prometheus-alertmanager
sudo systemctl enable --now alertmanager
|
Configuración básica
1
2
3
4
5
6
7
8
9
10
11
|
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
receiver: 'email'
receivers:
- name: 'email'
email_configs:
- to: 'ops@empresa.com'
|
Prometheus alert rules
1
2
3
4
5
6
7
8
9
10
|
groups:
- name: node.rules
rules:
- alert: NodeMemoryHigh
expr: node_memory_Active_bytes / node_memory_MemTotal_bytes > 0.9
for: 5m
labels:
severity: warning
annotations:
summary: "Memoria usada > 90%"
|
7. Scraping avanzado
Usar relabel_configs
1
2
3
4
|
- source_labels: [__address__]
regex: '(.*):.*'
target_label: instance
replacement: '${1}'
|
Filtrado de métricas innecesarias
1
2
3
4
|
- metric_relabel_configs:
- source_labels: [__name__]
regex: 'go_.*'
action: drop
|
8. Integración con Kubernetes
Prometheus Operator
1
|
kubectl apply -f prometheus-operator.yaml
|
ServiceMonitors
1
2
3
4
5
6
7
8
9
10
11
|
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: myservice
spec:
selector:
matchLabels:
app: myservice
endpoints:
- port: metrics
interval: 15s
|
9. Alerting avanzado con Grafana
Notificaciones
- Email
- Slack
- Webhook
- Microsoft Teams
Reglas de alerta complejas
- Condiciones combinadas
- Detección de picos
- Alertas silenciables por horarios
10. Seguridad en monitorización
- Habilitar HTTPS en Prometheus y Grafana
- Autenticación básica o OAuth2 en Grafana
- Firewalls para restringir acceso
- Rotar secrets de exportadores
11. Escalabilidad
- Sharding de Prometheus
- Replica Prometheus para HA
- Uso de Thanos o Cortex para long-term storage
- Retención configurable de métricas
12. Optimización de consultas
- Etiquetas consistentes para series
- Evitar demasiadas series cardinales altas
- Usar recording rules
- Cache de dashboards en Grafana
13. Ejemplo completo de pipeline de monitorización
- Desplegar Prometheus y Alertmanager
- Desplegar Grafana
- Configurar exportadores (node_exporter, cadvisor)
- Configurar dashboards
- Configurar alertas y notificaciones
14. Buenas prácticas
- Versionar configuración en Git
- Revisar métricas críticas periódicamente
- Documentar dashboards y alertas
- Hacer pruebas de alertas simuladas
- Automatizar backup de bases de datos de Prometheus
15. Conclusión
La monitorización avanzada con Prometheus y Grafana permite:
- Detectar problemas antes de que impacten a usuarios
- Visualizar métricas personalizadas
- Automatizar alertas proactivas
- Escalar a entornos grandes y dinámicos
“No se trata solo de medir, sino de actuar a tiempo con la información correcta.”