最后更新:2025-08-22
Kora 指标 Crate 为 Kora RPC 服务器提供全面的指标收集和监控功能。
Kora 公开了一个 /metrics 端点,以 Prometheus 格式提供实时性能数据。
配置
指标在您的 kora.toml 的 [metrics] 部分中配置。[metrics]
部分用于配置指标收集和监控。此部分为可选项,默认情况下指标处于禁用状态。
[metrics]enabled = trueendpoint = "/metrics"port = 8080scrape_interval = 60[metrics.fee_payer_balance]enabled = trueexpiry_seconds = 30
| 选项 | 描述 | 必需 | 类型 |
|---|---|---|---|
enabled | 启用指标收集 | ✅ | 布尔值 |
endpoint | 自定义指标端点路径 | ✅ | 字符串 |
port | 指标端点端口 | ✅ | 数字 |
scrape_interval | Prometheus 抓取频率(秒) | ✅ | 数字 |
手续费支付方余额跟踪
[metrics.fee_payer_balance] 部分配置手续费支付方 SOL 余额的自动监控:
| 选项 | 描述 | 必需 | 类型 |
|---|---|---|---|
enabled | 启用手续费支付方余额跟踪 | ❌(默认值:false) | 布尔值 |
expiry_seconds | 后台跟踪间隔(秒) | ❌(默认值:30) | 数字 |
启用后,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 lamport)
- 标签:
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
然后访问:
- 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?