Última actualización: 2025-08-22
El Crate de Métricas de Kora proporciona una recopilación integral de métricas y monitoreo para el servidor RPC de Kora.
Kora expone un endpoint /metrics que proporciona datos de rendimiento en
tiempo real en formato Prometheus.
Configuración
Las métricas se configuran en la sección [metrics] de tu kora.toml. La
sección [metrics] configura la recopilación de métricas y el monitoreo. Esta
sección es opcional y, por defecto, las métricas están deshabilitadas.
[metrics]enabled = trueendpoint = "/metrics"port = 8080scrape_interval = 60[metrics.fee_payer_balance]enabled = trueexpiry_seconds = 30
| Opción | Descripción | Requerido | Tipo |
|---|---|---|---|
enabled | Habilitar recopilación de métricas | ✅ | boolean |
endpoint | Ruta personalizada del endpoint de métricas | ✅ | string |
port | Puerto del endpoint de métricas | ✅ | number |
scrape_interval | Frecuencia de scraping de Prometheus (segundos) | ✅ | number |
Seguimiento del Balance del Pagador de Comisiones
La sección [metrics.fee_payer_balance] configura el monitoreo automático del
balance de SOL de tu pagador de comisiones:
| Opción | Descripción | Requerido | Tipo |
|---|---|---|---|
enabled | Habilitar seguimiento del balance | ❌ (por defecto: false) | boolean |
expiry_seconds | Intervalo de seguimiento en segundo plano | ❌ (por defecto: 30) | number |
Cuando está habilitado, Kora rastrea automáticamente el balance de SOL de tu
pagador de comisiones y lo expone a través del gauge de Prometheus
fee_payer_balance_lamports. Esto ayuda con la planificación de capacidad y las
alertas de saldo bajo.
Inicio Rápido
Acceder a las métricas:
curl http://localhost:8080/metrics
Qué Verás
Las métricas muestran cómo está funcionando tu servidor RPC:
# Total requests by method and statuskora_http_requests_total{method="signTransaction",status="200"} 42kora_http_requests_total{method="signTransaction",status="400"} 3# Request duration (in seconds) by methodkora_http_request_duration_seconds{method="signTransaction"} 0.045# Signer balances (for multi-signer setups)signer_balance_lamports{signer_name="primary_signer",signer_pubkey="4gBe...xyz"} 500000000signer_balance_lamports{signer_name="backup_signer",signer_pubkey="7XyZ...abc"} 300000000
Si aún no has llamado al servidor RPC, no verás ninguna métrica. Puedes ejecutar
una prueba simple llamando al método getConfig:
curl -X POST http://localhost:8080 \-H "Content-Type: application/json" \-d '{"jsonrpc": "2.0", "method": "getConfig", "id": 1}'
y luego verifica las métricas:
curl http://localhost:8080/metrics
Métricas Clave Explicadas
-
kora_http_requests_total- Cuántas solicitudes has procesadomethod: Qué método RPC fue llamadostatus: Código de estado HTTP (200=éxito, 400=error, etc.)- Usa esto para rastrear patrones de uso y tasas de error
-
kora_http_request_duration_seconds- Qué tan rápidas son tus solicitudes- Muestra percentiles (p50, p95, p99) para tiempos de respuesta
- Usa esto para identificar endpoints lentos
-
signer_balance_lamports- Saldo actual de SOL de cada firmante- Muestra el saldo en lamports (1 SOL = 1,000,000,000 lamports) para cada firmante
- Etiquetas:
signer_name(nombre legible) esigner_pubkey(clave pública) - Actualizado automáticamente en segundo plano cuando está habilitado
- Usa esto para planificación de capacidad y alertas de saldo bajo en todos los firmantes
Usando los Datos
Opción 1: Verificación Rápida de Estado
# See all metricscurl http://localhost:8080/metrics# Check specific method performancecurl http://localhost:8080/metrics | grep signTransaction
Opción 2: Prometheus + Grafana (Recomendado)
Para gráficos y alertas, ejecuta el stack de monitoreo completo:
# from kora root directoryjust run-metrics
Luego visita:
- Prometheus: http://localhost:9090 (consultar métricas)
- Panel pre-construido de Kora en Grafana: http://localhost:3000
- Inicio de sesión predeterminado: admin/admin (o usa las credenciales
GF_SECURITY_ADMIN_PASSWORDeGF_SECURITY_ADMIN_USERde tu archivo.env)
- Inicio de sesión predeterminado: admin/admin (o usa las credenciales
Opción 3: Tu Propio Monitoreo
Apunta cualquier herramienta compatible con Prometheus a
http://your-server:8080/metrics:
- Datadog
- New Relic
- CloudWatch
- VictoriaMetrics
Consultas de Ejemplo (Prometheus)
# Requests per second by methodrate(kora_http_requests_total[1m])# 95th percentile response timehistogram_quantile(0.95, kora_http_request_duration_seconds_bucket)# Error raterate(kora_http_requests_total{status!="200"}[5m])# Balance of specific signer by namesigner_balance_lamports{signer_name="primary_signer"} / 1000000000# Balance of specific signer by public keysigner_balance_lamports{signer_pubkey="4gBe...xyz"} / 1000000000# Total balance across all signerssum(signer_balance_lamports) / 1000000000# Minimum balance across all signers (useful for alerts)min(signer_balance_lamports) / 1000000000
Monitoreo Multi-Firmante
Al usar múltiples firmantes, puedes monitorear cada firmante individualmente o rastrear métricas agregadas:
Métricas Individuales por Firmante
# Check balance of specific signercurl http://localhost:8080/metrics | grep 'signer_balance_lamports{signer_name="primary_signer"}'# View all signer balancescurl http://localhost:8080/metrics | grep signer_balance_lamports
Consultas de Prometheus para Configuraciones Multi-Firmante
# Alert if any signer has low balance (< 0.05 SOL)min(signer_balance_lamports) < 50000000# Monitor balance distribution across signerssigner_balance_lamports / on() group_left() sum(signer_balance_lamports)# Track signer with lowest balancemin_over_time(signer_balance_lamports[1h])# Count number of healthy signers (> 0.01 SOL)count(signer_balance_lamports > 10000000)# Average balance across all signersavg(signer_balance_lamports) / 1000000000
Nota de Seguridad
El endpoint /metrics es público por defecto. En producción, considera:
- Colocarlo detrás de un firewall
- Usar un puerto de métricas separado
- Añadir autenticación mediante proxy inverso
Cómo Funciona la Recopilación de Métricas
-
Capa de Middleware HTTP - Intercepta todas las solicitudes y recopila:
- Recuento de solicitudes por método JSON-RPC y estado
- Duración de solicitudes por método
-
Endpoint de Métricas - Endpoint
/metricsexpuesto automáticamente cuando la funcionalidad está habilitada- Gestionado por
MetricsHandlerLayer - Devuelve métricas en formato Prometheus
- Gestionado por
-
Scraping de Prometheus - Configurado para hacer scraping de Kora cada 60 segundos (consulta
crates/lib/src/metrics/prometheus.yml)
Is this page helpful?