Последнее обновление: 2025-08-22
Kora Metrics Crate обеспечивает комплексный сбор метрик и мониторинг для RPC-сервера Kora.
Kora предоставляет эндпоинт /metrics, который выдаёт данные о
производительности в реальном времени в формате Prometheus.
Конфигурация
Метрики настраиваются в секции [metrics] вашего файла kora.toml. Секция
[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 вашего плательщика
комиссий и предоставляет его через датчик Prometheus
fee_payer_balance_lamports. Это помогает планировать мощности и настраивать
оповещения о низком балансе.
Быстрый старт
Доступ к метрикам:
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: Вызванный метод RPCstatus: 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 (запросы метрик)
- Готовый дашборд Kora в Grafana: http://localhost:3000
- Логин по умолчанию: admin/admin (или используйте учетные данные
GF_SECURITY_ADMIN_PASSWORDиGF_SECURITY_ADMIN_USERиз вашего файла.env)
- Логин по умолчанию: 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 — настроен на сбор данных с Kora каждые 60 секунд (см.
crates/lib/src/metrics/prometheus.yml)
Is this page helpful?