Останнє оновлення: 2025-08-22
Бібліотека метрик Kora забезпечує всебічний збір метрик та моніторинг для 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: Який метод RPC було викликаноstatus: HTTP-код стану (200=успіх, 400=помилка тощо)- Використовуйте це для відстеження шаблонів використання та рівня помилок
-
kora_http_request_duration_seconds- Наскільки швидко обробляються ваші запити- Показує процентилі (p50, p95, p99) для часу відповіді
- Використовуйте це для виявлення повільних кінцевих точок
-
signer_balance_lamports- Поточний баланс SOL кожного підписувача- Показує баланс у lamports (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
Потім відвідайте:
- 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 Middleware - Перехоплює всі запити та збирає:
- Кількість запитів за методом JSON-RPC та статусом
- Тривалість запиту за методом
-
Кінцева точка метрик - Кінцева точка
/metricsавтоматично відкривається при активації функції- Обробляється
MetricsHandlerLayer - Повертає метрики у форматі Prometheus
- Обробляється
-
Збір даних Prometheus - Налаштовано для збору даних з Kora кожні 60 секунд (див.
crates/lib/src/metrics/prometheus.yml)
Is this page helpful?