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

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска 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
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    920
  • 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 под специфику конкретного бота.