For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

En esta guía asumimos que el servidor de monitoreo corre en la misma máquina que el relay, o que tenés acceso a la IP privada del relay desde el servidor de monitoreo.


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": 12789

Verificamos 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 -10

Si 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.


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

El campo alias en los labels es el que usa el dashboard TOPO⚡ para distinguir entre nodos. Usa RELAY para el relay y CORE para el block producer.

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.


5. Configurar Prometheus como datasource en Grafana

  1. En Grafana: ConfigurationData sourcesAdd data source

  2. Selecciona Prometheus

  3. URL: http://localhost:9090

  4. Clic en Save & test — debe aparecer "Data source is working"


6. Importar el dashboard TOPO⚡

El dashboard incluye:

Panel
Qué muestra

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

  1. En Grafana: DashboardsImport

  2. Clic en Upload JSON file

  3. Selecciona el archivo topo-dashboard.json (disponible en este repositorio en kb/monitoreo/)

  4. En prometheus, selecciona el datasource que acabás de crear

  5. 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: AlertingContact pointsAdd contact point.


Checklist final

Última actualización