Крипто-бот упал в 3 ночи. Пропустил 40 транзакций. Или завис на одной операции. Вы узнаёте об этом через 8 часов, когда откроете ноутбук. Это недопустимо. Мы знаем это по своему опыту: из-за пропущенного алерта однажды потеряли 0.5 ETH на неисполненных ордерах. Простой бота на 10 минут при активной торговле может стоить сотни долларов. А наша настройка уведомлений обходится в разы дешевле. Правильная система закрывает три класса проблем: падение процесса, деградация производительности (бот работает, но медленно или пропускает события) и бизнес-аномалии (нет транзакций уже 2 часа — это может быть нормально, а может — сеть упала). Наш подход — настроить алерты так, чтобы вы знали о проблеме раньше, чем она ударит по кошельку.
Как мониторинг heartbeat предотвращает потерю средств?
Среднестатистический крипто-бот обрабатывает десятки транзакций в час. Один час простоя на 50-блочном отставании может стоить тысячи долларов упущенной прибыли или ликвидности. Без алертов вы не видите:
- Разрыв WebSocket-соединения — бот «работает», но не получает события
- Зависший обработчик транзакций — очередь блокируется, другие операции не проходят
- Нехватку газа (ETH/SOL) — бот перестаёт отправлять свои транзакции
- Медленный RPC-провайдер — увеличивается latency, растёт lag
Эти проблемы мы закрываем тремя уровнями мониторинга: heartbeat, метрики производительности и бизнес-аномалии.
Какую архитектуру алертов мы используем?
Мы строим систему на принципе dead man's switch: бот периодически отправляет сигнал «я жив», внешний сервис фиксирует отсутствие этого сигнала. Параллельно добавляем алерты на ключевые бизнес-метрики.
Healthcheck endpoint + внешний мониторинг
Самый надёжный подход: бот раз в 30 секунд вызывает внешний healthcheck-сервис (Healthchecks.io, Betterstack или собственный эндпоинт). Если сигнал не пришёл в течение 2 минут — алерт.
// В боте: heartbeat каждые 30 секунд class BotHealthReporter { private lastProcessedBlock: number = 0; private processedCount: number = 0; startHeartbeat(): void { setInterval(async () => { const payload = { status: 'ok', lastBlock: this.lastProcessedBlock, processed: this.processedCount, timestamp: Date.now(), rpcLatency: await this.measureRpcLatency(), }; // Betterstack/Healthchecks.io ping await fetch(process.env.HEALTHCHECK_PING_URL!, { method: 'POST', body: JSON.stringify(payload), }).catch(() => {}); }, 30_000); } } Healthchecks.io — простой dead man's switch сервис с бесплатным тарифом для 5 проектов. Он работает в 2 раза быстрее самописного поллинга на том же сервере.
Почему важна проверка chain lag?
Бот может технически работать, но обрабатывать блоки с отставанием из-за медленного RPC или перегруженного обработчика. Мы добавляем проверку lag:
async function checkChainLag(provider: JsonRpcProvider, lastProcessed: number): Promise<void> { const currentHead = await provider.getBlockNumber(); const lag = currentHead - lastProcessed; if (lag > 10) alerter.sendAlert('warning', `Lag: ${lag} блоков`); if (lag > 50) alerter.sendAlert('critical', `Критическое отставание: ${lag} блоков`); // Метрика для Grafana metrics.gauge('bot_chain_lag_blocks', lag); } Алерт на низкий баланс gas wallet
Баланс газового кошелька — частая причина внезапных остановок. Контролируем его в реальном времени:
async function checkGasBalance(provider: JsonRpcProvider, botAddress: string): Promise<void> { const balance = await provider.getBalance(botAddress); const balanceEth = parseFloat(formatEther(balance)); if (balanceEth < 0.05) { await alerter.sendAlert('warning', `Низкий баланс gas wallet: ${balanceEth.toFixed(4)} ETH\nАдрес: ${botAddress}` ); } if (balanceEth < 0.01) { await alerter.sendAlert('critical', `КРИТИЧНО: gas wallet почти пуст: ${balanceEth.toFixed(4)} ETH — бот скоро остановится` ); } } Process supervisor: автоперезапуск
Если бот упал — он должен автоматически подняться. Настраиваем PM2 для Node.js:
# ecosystem.config.js module.exports = { apps: [{ name: 'crypto-bot', script: 'dist/bot.js', restart_delay: 5000, max_restarts: 10, min_uptime: '10s', error_file: '/var/log/crypto-bot/error.log', out_file: '/var/log/crypto-bot/out.log', }] }; pm2 start ecosystem.config.js pm2 save PM2 сам отправляет уведомления через pm2-notify или интеграцию с Keymetrics. При каждом рестарте логируем и отправляем алерт через Telegram.
Рекомендуемые пороги алертов
| Тип алерта | Порог предупреждения | Порог критический | Рекомендуемый канал |
|---|---|---|---|
| Heartbeat | 90 сек без сигнала | 120 сек | Telegram |
| Chain lag | 10 блоков | 50 блоков | Telegram |
| Gas balance | <0.05 ETH | <0.01 ETH | Telegram + Email |
| RPC latency | >3 сек | >5 сек | Telegram |
Что входит в работу
В услугу входит:
- Полный аудит текущей архитектуры бота и выявление точек отказа
- Интеграция healthcheck (Healthchecks.io / Betterstack) с настройкой heartbeat
- Добавление алертов на chain lag, баланс газа, ошибки обработчиков
- Настройка process supervisor (PM2/systemd) с авторестартом и логированием
- Подключение каналов уведомлений (Telegram, PagerDuty, Slack и др.)
- Документация по каждому типу алерта и порядку действий
- Тестовый запуск с симуляцией отказов
- Двухнедельная поддержка после внедрения
Процесс настройки под ключ
Мы выполняем настройку алертов в несколько этапов:
- Аудит архитектуры — разбираем текущий бот, точки отказа, метрики
- Выбор каналов — Telegram, PagerDuty, Slack, email (или комбинация)
- Интеграция healthcheck'а — внедряем heartbeat и настраиваем внешний сервис (Healthchecks.io / Betterstack / свой)
- Настройка бизнес-алертов — lag, gas, обработчик ошибок, process supervisor
- Тестовый запуск — симулируем отказы: обрываем RPC, выключаем газ, падаем с исключением
- Документация и обучение — передаём доступы к мониторингу, описываем что делать при каждом типе алерта
| Этап | Длительность | Что получаете |
|---|---|---|
| Аудит и планирование | 1-2 часа | Схема точек отказа, список алертов |
| Интеграция healthcheck + код | 2-4 часа | Heartbeat, Telegram-бот, логи |
| Настройка supervisor | 30 минут | PM2 с авторестартом и алертами |
| Тестирование | 1-2 часа | Протокол тестов, исправление багов |
| Передача проекта | 1 час | Доступы, документация, рекомендации |
Сроки: от 1 до 3 дней в зависимости от сложности бота и количества интеграций.
Почему выбирают нас
У нас 5+ лет опыта в разработке и поддержке крипто-ботов на Ethereum, Polygon, BNB Chain и Solana. Реализовали более 50 проектов. Мы не просто настраиваем уведомления — мы проектируем отказоустойчивую систему, которая минимизирует потери.
Гарантируем: после нашей настройки вы узнаете о любой проблеме в течение 2 минут, а бот автоматически восстановится после 9 из 10 падений.
Итоговый чеклист алертов
- Отсутствие heartbeat > 2 минут → критический алерт
- Отставание от chain head > 50 блоков → критический алерт
- Баланс gas wallet < 0.05 ETH → предупреждение
- N ошибок подряд в обработчике → критический алерт
- Процесс перезапустился → информационный алерт
- RPC latency > 5 секунд → предупреждение
Хотите такую же систему для своего бота? Получите консультацию. Свяжитесь с нами — оценим проект бесплатно.







