Prometheus y Grafana
Instalar Prometheus, Node Exporter y Grafana para monitorear tu stake pool. Incluye el dashboard TOPO⚡ listo para importar.
Vamos a levantar un stack de monitoreo completo que te da visibilidad en tiempo real sobre el estado de tus nodos: métricas de cardano-node, sistema (CPU, RAM, disco, red) y métricas de pool (stake, delegadores, bloques, ROA).
Arquitectura del setup
cardano-node ──── puerto 12798 ─────┐
├──► Prometheus ──► Grafana ──► Dashboard TOPO⚡
node_exporter ─── puerto 9100 ──────┘
pool-exporter ─── (opcional) ───────┘El servidor de monitoreo puede ser el mismo relay o una VM separada. Si lo ponés en el mismo relay, Prometheus scrapea localhost; si es una VM aparte, abrís los puertos de métricas solo hacia esa IP.
1. Verificar la configuración de cardano-node
El nodo ya expone métricas si el config.json tiene configurados estos campos:
"hasPrometheus": ["127.0.0.1", 12798],
"hasEKG": 12789Verificamos qué endpoint tiene las métricas:
# Puerto Prometheus (legacy tracing — lo más común)
curl -s http://127.0.0.1:12798 | head -5
# Puerto EKG (JSON — nuevo tracing backend o fallback)
curl -s http://127.0.0.1:12789 | jq '.cardano.node.metrics' 2>/dev/null | head -10Si el puerto 12798 responde con líneas tipo cardano_node_metrics_epoch_int 523, usá ese como scrape target en Prometheus (es lo que hacemos en esta guía).
Si 12798 está vacío y todo está en 12789, el nodo usa el nuevo tracing backend (cardano-tracer). En ese caso el scrape target en prometheus.yml debe apuntar al puerto que cardano-tracer exponga para Prometheus — típicamente también 12798 pero servido por el tracer, no por el nodo directamente. El resultado en Grafana es el mismo.
El bind de hasPrometheus está en 127.0.0.1 — solo accesible localmente. Si el servidor de monitoreo es una VM separada, cambia a 0.0.0.0 y agrega la IP del servidor de monitoreo al firewall.
2. Instalar Node Exporter
Node Exporter expone métricas del sistema operativo: CPU, RAM, disco, red y tiempo de sincronización NTP.
Crear el servicio systemd:
Verificar:
3. Instalar Prometheus
Configuración de Prometheus
Crear el servicio systemd:
Verificar que Prometheus levantó y puede scrape los targets:
4. Instalar Grafana
Grafana queda en el puerto 3000. Para acceder desde tu máquina local, abrí un túnel SSH:
Luego abrí http://localhost:3000 en el browser. Login por defecto: admin / admin.
No expongas el puerto 3000 a internet. Usá siempre el túnel SSH o un proxy inverso con autenticación.
5. Configurar Prometheus como datasource en Grafana
En Grafana: Configuration → Data sources → Add data source
Selecciona Prometheus
URL:
http://localhost:9090Clic en Save & test — debe aparecer "Data source is working"
6. Importar el dashboard TOPO⚡
El dashboard incluye:
Epoch / Block Height / Tip
Estado actual de la cadena
KES Expiration
Tiempo restante hasta vencimiento de KES
Pool Performance
% de bloques forjados vs asignados
Saturation
% de saturación del pool
CPU / RAM / Disk / Network
Recursos del sistema por nodo
Mempool
Transacciones y bytes en mempool
Block delay / Late blocks
Salud de la red P2P
P2P Connections
Conexiones por tipo (duplex, unidirectional, incoming)
Stake Metrics / ROA
Stake activo, delegadores, retorno
Time Sync
Sincronización NTP — crítico para la forja de bloques
Cómo importar
En Grafana: Dashboards → Import
Clic en Upload JSON file
Selecciona el archivo
topo-dashboard.json(disponible en este repositorio enkb/monitoreo/)En prometheus, selecciona el datasource que acabás de crear
Clic en Import
7. Métricas custom del pool
Los paneles de Stake Metrics, Delegators, Blocks Minted, Saturation, Rank y ROA usan métricas que no vienen del nodo directamente — vienen de un script que consulta la API de Koios y expone los datos vía un exporter personalizado.
Las métricas son:
Si estos paneles aparecen vacíos, instalá el pool-exporter: un script bash que consulta Koios y escribe las métricas en un archivo .prom que node_exporter ya sirve en :9100. Sin puerto extra ni cambios en prometheus.yml. Ver guía completa: Pool Exporter (Koios → Prometheus).
8. Alertas básicas recomendadas
El dashboard ya tiene condiciones de alerta pre-configuradas para:
CPU > 75% sostenido por 5 minutos
RAM > 16 GB
Chain density < 4% (nodo fuera de sync)
Time sync > 5 segundos (problema NTP grave)
Para recibir las alertas por email o Telegram, configurá un Contact point en Grafana: Alerting → Contact points → Add contact point.
Checklist final
Última actualización
¿Te fue útil?