Крипто-бот упав о 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 секунд → попередження
Хочете таку ж систему для свого бота? Отримайте консультацію. Зв'яжіться з нами — оцінимо проєкт безкоштовно.







