Pool Exporter (Koios → Prometheus)
Script bash que consulta Koios y escribe métricas del pool para que node_exporter las sirva a Prometheus. Sin dependencias extra salvo jq.
Los paneles de Stake Metrics, Delegators, Blocks, Saturation y ROA del dashboard TOPO⚡ usan métricas que no vienen del nodo — son datos de la blockchain que solo están disponibles vía consulta a la API.
Este exporter es un script bash que consulta Koios (gratis, sin API key) cada 60 segundos y escribe un archivo .prom que node_exporter lee y sirve junto con las métricas del sistema. Sin puerto extra, sin scrape job extra en Prometheus.
Arquitectura
Koios API
│
▼ (cada 60s vía systemd timer)
pool-exporter.sh ──► /var/lib/node_exporter/textfile/pool_metrics.prom
│
▼ (node_exporter --collector.textfile)
Prometheus :9090
│
▼
Grafana dashboard TOPO⚡Las métricas del pool aparecen en el mismo endpoint :9100/metrics que ya scrapea Prometheus — sin cambios en prometheus.yml.
Dependencias
# curl y awk vienen de serie en Ubuntu
# jq es el único paquete a instalar
sudo apt install -y jqInstalación
1. Habilitar textfile collector en node_exporter
Editá el servicio de node_exporter para agregar el flag --collector.textfile.directory:
El bloque ExecStart queda así:
2. Instalar el script
El script está en kb/monitoreo/pool-exporter.sh de este repositorio.
3. Crear el servicio y el timer systemd
Reemplazá pool1... con el bech32 ID de tu pool:
Crear el servicio (oneshot — se ejecuta y termina):
Crear el timer (dispara cada 60 segundos):
4. Verificar
Ejecutar manualmente la primera vez para confirmar que funciona:
Verificar el archivo generado:
Deberías ver:
Verificar que node_exporter las expone:
Variables de entorno
POOL_BECH32_ID
—
Requerido. pool1...
KOIOS_API
https://api.koios.rest/api/v1
Cambiar a preview.koios.rest para testnet
TEXTFILE_DIR
/var/lib/node_exporter/textfile
Directorio que lee node_exporter
Métricas expuestas
saturation
live_saturation
ratio 0–1
delegators
live_delegators
número
stake
active_stake
lovelace
stake_active
live_stake
lovelace
pledged
live_pledge
lovelace
blocks_lifetime
block_count
número
blocks_epoch
block_cnt (history)
número
blocks_est_epoch
calculado¹
número
roa / roa_short
calculado²
ratio
¹ blocks_est_epoch = (active_stake / total_active_stake) × 21600
21600 = slots_per_epoch × active_slot_coefficient = 432000 × 0.05 (mainnet).
² roa = (pool_fees + delegator_rewards) / active_stake × 73
73 épocas ≈ 1 año. El ROA sube durante el epoch a medida que se acumulan rewards.
Logs
Si Koios falla (mantenimiento, timeout), el script termina con error, el timer lo reintenta al siguiente ciclo y el .prom previo se conserva — Grafana no muestra saltos a cero.
Última actualización
¿Te fue útil?