Dernière mise à jour : 22/08/2025
La Crate Kora Metrics fournit une collecte complète de métriques et une surveillance pour le serveur RPC Kora.
Kora expose un point de terminaison /metrics qui fournit des données de
performance en temps réel au format Prometheus.
Configuration
Les métriques sont configurées dans la section [metrics] de votre fichier
kora.toml. La section [metrics] configure la collecte et la surveillance des
métriques. Cette section est optionnelle et par défaut, les métriques sont
désactivées.
[metrics]enabled = trueendpoint = "/metrics"port = 8080scrape_interval = 60[metrics.fee_payer_balance]enabled = trueexpiry_seconds = 30
| Option | Description | Requis | Type |
|---|---|---|---|
enabled | Activer la collecte de métriques | ✅ | booléen |
endpoint | Chemin personnalisé du point de terminaison | ✅ | chaîne |
port | Port du point de terminaison des métriques | ✅ | nombre |
scrape_interval | Fréquence de récupération Prometheus (sec) | ✅ | nombre |
Suivi du solde du payeur de frais
La section [metrics.fee_payer_balance] configure la surveillance automatique
du solde SOL de votre payeur de frais :
| Option | Description | Requis | Type |
|---|---|---|---|
enabled | Activer le suivi du solde du payeur de frais | ❌ (défaut : false) | booléen |
expiry_seconds | Intervalle de suivi en arrière-plan (sec) | ❌ (défaut : 30) | nombre |
Lorsqu'il est activé, Kora suit automatiquement le solde SOL de votre payeur de
frais et l'expose via la jauge Prometheus fee_payer_balance_lamports. Cela
facilite la planification de capacité et les alertes de solde faible.
Démarrage rapide
Accéder aux métriques :
curl http://localhost:8080/metrics
Ce que vous verrez
Les métriques montrent les performances de votre serveur 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 vous n'avez pas encore appelé le serveur RPC, vous ne verrez aucune métrique.
Vous pouvez exécuter un test simple en appelant la méthode getConfig :
curl -X POST http://localhost:8080 \-H "Content-Type: application/json" \-d '{"jsonrpc": "2.0", "method": "getConfig", "id": 1}'
puis vérifiez les métriques :
curl http://localhost:8080/metrics
Explication des métriques clés
-
kora_http_requests_total- Combien de requêtes vous avez traitéesmethod: Quelle méthode RPC a été appeléestatus: Code de statut HTTP (200=succès, 400=erreur, etc.)- Utilisez cette métrique pour suivre les modèles d'utilisation et les taux d'erreur
-
kora_http_request_duration_seconds- Quelle est la rapidité de vos requêtes- Affiche les percentiles (p50, p95, p99) pour les temps de réponse
- Utilisez cette métrique pour identifier les points de terminaison lents
-
signer_balance_lamports- Solde SOL actuel de chaque signataire- Affiche le solde en lamports (1 SOL = 1 000 000 000 lamports) pour chaque signataire
- Libellés :
signer_name(nom lisible) etsigner_pubkey(clé publique) - Mis à jour automatiquement en arrière-plan lorsque activé
- Utilisez cette métrique pour la planification de capacité et les alertes de solde faible pour tous les signataires
Utilisation des données
Option 1 : Vérification rapide de l'état
# See all metricscurl http://localhost:8080/metrics# Check specific method performancecurl http://localhost:8080/metrics | grep signTransaction
Option 2 : Prometheus + Grafana (Recommandé)
Pour obtenir des graphiques et des alertes, exécutez la pile de surveillance complète :
# from kora root directoryjust run-metrics
Puis visitez :
- Prometheus : http://localhost:9090 (interroger les métriques)
- Tableau de bord Kora préconfiguré dans Grafana : http://localhost:3000
- Connexion par défaut : admin/admin (ou utilisez les identifiants
GF_SECURITY_ADMIN_PASSWORDetGF_SECURITY_ADMIN_USERde votre fichier.env)
- Connexion par défaut : admin/admin (ou utilisez les identifiants
Option 3 : Votre propre surveillance
Pointez n'importe quel outil compatible Prometheus vers
http://your-server:8080/metrics :
- Datadog
- New Relic
- CloudWatch
- VictoriaMetrics
Exemples de requêtes (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
Surveillance multi-signataires
Lorsque vous utilisez plusieurs signataires, vous pouvez surveiller chaque signataire individuellement ou suivre des métriques agrégées :
Métriques de signataires individuels
# 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
Requêtes Prometheus pour les configurations multi-signataires
# 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
Note de sécurité
Le point de terminaison /metrics est public par défaut. En production,
envisagez :
- De le placer derrière un pare-feu
- D'utiliser un port de métriques séparé
- D'ajouter une authentification via un reverse proxy
Fonctionnement de la collecte de métriques
-
Couche middleware HTTP - Intercepte toutes les requêtes et collecte :
- Le nombre de requêtes par méthode JSON-RPC et statut
- La durée des requêtes par méthode
-
Point de terminaison de métriques - Point de terminaison
/metricsexposé automatiquement lorsque la fonctionnalité est activée- Géré par
MetricsHandlerLayer - Renvoie des métriques au format Prometheus
- Géré par
-
Récupération Prometheus - Configuré pour récupérer les données de Kora toutes les 60 secondes (voir
crates/lib/src/metrics/prometheus.yml)
Is this page helpful?