Крипто-бот упал в 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 savePM2 сам отправляет уведомления через 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 секунд → предупреждение
Хотите такую же систему для своего бота? Получите консультацию. Свяжитесь с нами — оценим проект.







