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

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 jq

Instalació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:

No hace falta tocar prometheus.yml. El job de node que ya existe scrapea el :9100 donde ahora también aparecen las métricas del pool.


Variables de entorno

Variable
Default
Descripción

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

Métrica
Fuente Koios
Unidad

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