最終更新日: 2025-08-22
Kora Metrics Crate は、Kora RPCサーバーの包括的なメトリクス収集と監視機能を提供します。
Koraは、Prometheus形式でリアルタイムのパフォーマンスデータを提供する/metricsエンドポイントを公開しています。
設定
メトリクスはkora.tomlの[metrics]セクションで設定します。[metrics]セクションは、メトリクスの収集と監視を設定します。このセクションはオプションで、デフォルトではメトリクスは無効になっています。
[metrics]enabled = trueendpoint = "/metrics"port = 8080scrape_interval = 60[metrics.fee_payer_balance]enabled = trueexpiry_seconds = 30
| オプション | 説明 | 必須 | 型 |
|---|---|---|---|
enabled | メトリクス収集を有効化 | ✅ | boolean |
endpoint | カスタムメトリクスエンドポイントパス | ✅ | string |
port | メトリクスエンドポイントポート | ✅ | number |
scrape_interval | Prometheusスクレイプの頻度(秒) | ✅ | number |
手数料支払者の残高追跡
[metrics.fee_payer_balance]セクションでは、手数料支払者のSOL残高の自動監視を設定します:
| オプション | 説明 | 必須 | 型 |
|---|---|---|---|
enabled | 手数料支払者の残高追跡を有効化 | ❌ (デフォルト: false) | boolean |
expiry_seconds | バックグラウンド追跡間隔(秒) | ❌ (デフォルト: 30) | number |
有効にすると、Koraは自動的に手数料支払者のSOL残高を追跡し、fee_payer_balance_lamports
Prometheusゲージ経由で公開します。これにより、キャパシティプランニングや残高低下アラートに役立ちます。
クイックスタート
メトリクスへのアクセス:
curl http://localhost:8080/metrics
表示される内容
メトリクスは、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
RPCサーバーをまだ呼び出していない場合、メトリクスは表示されません。getConfigメソッドを呼び出して簡単なテストを実行できます:
curl -X POST http://localhost:8080 \-H "Content-Type: application/json" \-d '{"jsonrpc": "2.0", "method": "getConfig", "id": 1}'
次にメトリクスを確認します:
curl http://localhost:8080/metrics
主要メトリクスの説明
-
kora_http_requests_total- 処理したリクエスト数method: 呼び出されたRPCメソッドstatus: HTTPステータスコード(200=成功、400=エラーなど)- 使用パターンとエラー率の追跡に使用します
-
kora_http_request_duration_seconds- リクエストの速度- レスポンスタイムのパーセンタイル(p50、p95、p99)を表示
- 遅いエンドポイントの特定に使用します
-
signer_balance_lamports- 各署名者の現在のSOL残高- 各署名者のlamport単位の残高を表示(1 SOL = 1,000,000,000 lamports)
- ラベル:
signer_name(人間が読める名前)とsigner_pubkey(公開鍵) - 有効化すると自動的にバックグラウンドで更新されます
- すべての署名者のキャパシティプランニングと残高低下アラートに使用します
データの活用
オプション1:クイックヘルスチェック
# See all metricscurl http://localhost:8080/metrics# Check specific method performancecurl http://localhost:8080/metrics | grep signTransaction
オプション2:Prometheus + Grafana(推奨)
グラフとアラートを表示するには、完全な監視スタックを実行します:
# from kora root directoryjust run-metrics
次のURLにアクセスしてください:
- Prometheus: http://localhost:9090(メトリクスのクエリ)
- Grafana事前構築済みKoraダッシュボード: http://localhost:3000
- デフォルトログイン:admin/admin(または
.envファイルのGF_SECURITY_ADMIN_PASSWORDとGF_SECURITY_ADMIN_USER認証情報を使用)
- デフォルトログイン:admin/admin(または
オプション3:独自の監視システム
Prometheusとhttp://your-server:8080/metricsに互換性のあるツールを使用できます:
- Datadog
- New Relic
- CloudWatch
- VictoriaMetrics
クエリ例(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
マルチ署名者監視
複数の署名者を使用する場合、各署名者を個別に監視したり、集計メトリクスを追跡したりできます:
個別署名者のメトリクス
# 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
マルチ署名者セットアップのPrometheusクエリ
# 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
セキュリティに関する注意事項
/metrics
エンドポイントはデフォルトで公開されています。本番環境では以下を検討してください:
- ファイアウォールの背後に配置する
- メトリクス専用のポートを使用する
- リバースプロキシ経由で認証を追加する
メトリクス収集の仕組み
-
HTTP ミドルウェア層 - すべてのリクエストをインターセプトし、以下を収集します:
- JSON-RPC メソッドとステータス別のリクエスト数
- メソッド別のリクエスト期間
-
メトリクスエンドポイント - 機能が有効化されると
/metricsエンドポイントが自動的に公開されますMetricsHandlerLayerによって処理されます- Prometheus形式のメトリクスを返します
-
Prometheus スクレイピング - 60秒ごとに Kora をスクレイピングするように設定されています(
crates/lib/src/metrics/prometheus.ymlを参照)
Is this page helpful?