Налаштування моніторингу роботи криптобота

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Налаштування моніторингу роботи криптобота
Простий
~1 день
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1307
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1219
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    921
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1148
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    611
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    886

Настройка мониторингу роботи крипто-бота

Торговий або арбітражний бот — це stateful процес, який працює 24/7 з реальними грошима. Без моніторингу перший же збій перетворюється на убиток, який ви виявите вранці. Хороша система мониторингу замічає проблему раніше, ніж вона стає дорогостоючою.

Що монюруємо

Здоров'я процесу: бот живий, heartbeat приходить регулярно. Найбазовіший рівень — /healthz endpoint, який перевіряється раз в хвилину.

On-chain стан: баланси кошельків, немає транзакцій в pending > 10 хвилин (застрявший nonce), gas price не вийшов за межи дозволеного діапазону.

Біржовий стан: API біржі відповідає, WebSocket підключений, open orders актуальні (немає ордерів старше N годин які не виконуються).

P&L метрики: реалізований і нереалізований PnL, дневний drawdown. Алерт якщо drawdown > X% від капіталу.

Стек мониторингу

Prometheus + Grafana — стандарт для production ботів. Бот експортує метрики:

import { Counter, Gauge, Registry } from "prom-client";

const register = new Registry();

const tradesTotal = new Counter({
  name: "bot_trades_total",
  help: "Total number of trades executed",
  labelNames: ["side", "symbol"],
  registers: [register],
});

const walletBalance = new Gauge({
  name: "bot_wallet_balance_usd",
  help: "Current wallet balance in USD",
  registers: [register],
});

const lastHeartbeat = new Gauge({
  name: "bot_last_heartbeat_timestamp",
  help: "Unix timestamp of last successful loop iteration",
  registers: [register],
});

// У головному циклі бота:
lastHeartbeat.setToCurrentTime();

Grafana дашборд з ключовими панелями: баланси в динаміці, кількість угод в годину, P&L по часу, latency біржевих запитів.

Alertmanager для повідомлень:

# alerting-rules.yml
groups:
  - name: bot
    rules:
      - alert: BotHeartbeatMissed
        expr: time() - bot_last_heartbeat_timestamp > 300
        for: 2m
        annotations:
          summary: "Bot heartbeat missed for 5+ minutes"

      - alert: DrawdownExceeded
        expr: bot_daily_drawdown_pct > 5
        annotations:
          summary: "Daily drawdown exceeded 5%"

      - alert: PendingTransactionStuck
        expr: bot_pending_tx_age_seconds > 600
        annotations:
          summary: "Transaction stuck in pending for 10+ minutes"

Telegram-повідомлення

Для немедленних алертів простіше всього Telegram Bot API:

async function sendAlert(message: string, level: "info" | "warn" | "critical") {
  const emoji = { info: "ℹ️", warn: "⚠️", critical: "🚨" }[level];
  await fetch(`https://api.telegram.org/bot${BOT_TOKEN}/sendMessage`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      chat_id: ALERT_CHAT_ID,
      text: `${emoji} *Bot Alert*\n\n${message}`,
      parse_mode: "Markdown",
    }),
  });
}

Логування

Структуровані логи (JSON) з обов'язковими полями: timestamp, level, event, data. Для агрегації — Loki (в зв'язці з Grafana) або Datadog:

import pino from "pino";
const logger = pino({ level: "info" });

logger.info({ event: "trade_executed", symbol: "ETHUSDT", side: "buy", amount: 0.5, price: 3400 });
logger.error({ event: "api_error", exchange: "binance", error: err.message, retryIn: 5000 });

Dead man's switch

Для критичних ботів — зовнішній watchdog. Якщо бот не "постукав" за N хвилин — автоматично перезапускаємо або шлемо SMS. Найпростіша реалізація через healthchecks.io або Cronitor: бот шле GET-запит кожні 5 хвилин, сервіс піднімає алерт при відсутності пінгу.

Настройка базового мониторингу з Prometheus, Grafana і Telegram-алертами: 1 робочий день. Включаючи конфігурацію alerting rules під специфіку конкретного бота.