Настройка мониторинга криптобота: Prometheus, Grafana, алерты

Сбои торгового бота замечают по просадке или жалобам, когда время уже упущено. Мы настраиваем мониторинг криптобота под ключ: сбор метрик, панели, алерты в рабочий канал и регламенты дежурства. Наблюдение сокращает время обнаружения сбоя с часов до минут.
Часто задаваемые вопросы

Мониторинг криптобота: что ломается без наблюдения

Криптобот ломается тихо. Процесс остаётся в списке задач, соединение с биржей рвётся ещё ночью, ордера не выставляются — но нет ни падения, ни письма, ни звонка. О простое узнают по пустому экрану сделок и ручной сверке баланса спустя часы.

Основная причина сбоев бота — проглоченные ошибки биржевого интерфейса: код ответа проверяется не везде, исключение уходит в лог, файл растёт, читать его некому. Добавьте сюда ожидание ответа без таймаута и рассинхрон локального портфеля с реальными позициями — стратегия уверена, что всё работает, а заявки не уходят.

Цена простоя — не упавший сервис, а потерянные сделки: позиция без стопа, упущенный вход, принудительное закрытие на резком движении. Проверка раз в день такое не ловит, поэтому мониторинг криптобота строят на непрерывном сборе метрик и порогах, а не на ручном обходе.

Наблюдать нужно за периодическим сигналом жизни от стратегии, задержкой между сигналом и постановкой ордера, долей отказов биржи, временем ответа и расхождением баланса. Метрики собирает Prometheus, дашборды строим в Grafana, оповещения уходят дежурному при выходе за порог — диагностика зависаний занимает минуты вместо часов.

Разбираем, как это закрывается: какие метрики действительно предсказывают сбой, где ставить пороги и как отличить разовый отказ биржи от зависшего бота.

Что даёт наблюдаемость: эффект в измеримых величинах

Наблюдаемость криптобота — это не графики, а сокращение двух интервалов: времени до того, как мы узнали о сбое, и времени до того, как он перестал наносить ущерб. Сбор метрик бота покрывает задержку между сигналом стратегии и постановкой заявки, долю отклонённых биржей ордеров, глубину очереди и рассинхрон со стаканом, а дашборды Prometheus и Grafana сводят это в одну картину.

Время до обнаружения: минуты вместо часов

Правила алертов строятся на отклонении от базовой линии, а не на статичных порогах, поэтому всплеск волатильности не поднимает дежурного напрасно. Время реакции на инцидент падает с десятков минут — когда о поломке сообщал сам рынок — до одной-двух минут. Отдельные проверки ловят «тихие» отказы: процесс жив, но заявки перестали выставляться.

Дашборды: причина видна на схеме, а не в логах

Панели разложены по слоям — связь с биржей, стратегия, исполнение, состояние кошелька. Инженер на дежурстве видит не «бот не работает», а конкретный участок: разошёлся поток котировок, встал обработчик заявок или просела частота подтверждений. По той же схеме видно, когда метрика вернулась в норму, — восстановление подтверждается данными, а не словами.

Восстановление и доля инцидентов без последствий

Когда причина локализована по графику, достаточно откатить конфигурацию или перезапустить один узел, а не всего бота, — время восстановления укорачивается в разы. Расхождение позиций, зависшие ордера и потерянные сделки перестают доживать до момента, когда их замечает человек: их закрывают на этапе отклонения от нормы.

Способы организации мониторинга криптобота: что выбрать

Мониторинг криптобота закрывает две разные задачи: понимать, что процесс жив и торгует, и понимать, что он делает это правильно. Один источник данных не даёт обеих картинок, поэтому схемы наблюдения различаются не инструментами, а тем, какие отказы они вообще способны поймать.

Агент на том же сервере со сбором метрик через Prometheus даёт глубину: задержка обработки сигнала, длина очереди ордеров, состояние соединения с биржей. Внешние проверки доступности отвечают на вопрос «жив ли бот» с независимой точки, разбор логов — на вопрос «почему не сработало». Ниже — сравнение по слепым зонам.

Схема наблюдения Когда подходит Слепая зона
Агент на том же сервере Нужны метрики процесса: задержка обработки, очередь ордеров, состояние соединения с биржей Падение сервера или сети — метрики перестают поступать вместе с ботом, и уведомление не приходит
Внешние проверки доступности Нужна независимая точка, подтверждающая, что бот отвечает и принимает команды Видит факт доступности, но не отличает работающего бота от зависшего в ожидании
Разбор логов Разбор причин: на каком шаге отказ, почему не выставлен ордер Проблема фиксируется постфактум, окно между сбоем и реакцией растягивается
Гибридная схема Постоянно работающий бот с реальными сделками Требует поддержки: пороги и правила уведомлений пересматривают после каждой правки стратегии

Гибрид — рабочая схема для боевого бота: агент собирает внутренние метрики, внешний пробник проверяет доступность снаружи, логи агрегируются отдельно. Совпадение двух сигналов отсекает ложные срабатывания, поэтому уведомления приходят по делу, а окно между сбоем и реакцией сокращается с часов до минут.

Порядок внедрения: от аудита до передачи регламентов

Внедрение начинается не с развёртывания сборщика, а с плана внедрения мониторинга: что уже работает в контуре, какие сбои критичны и как быстро команда должна о них узнавать. Без этого дашборды рисуют красивые графики, но не отвечают на главный вопрос — почему бот перестал исполнять ордера и в какой момент это началось.

  1. Инвентаризация узлов. Составляем карту контура: RPC-ноды, сервис подписи, очереди заданий, воркеры стратегий, хранилища. По каждому узлу фиксируем владельца, режим работы и зависимости — на этой карте строится вся схема наблюдения.
  2. Схема наблюдения. Разделяем, что снимаем с приложения, а что с инфраструктуры: задержку ответа ноды, число подтверждённых транзакций, разрыв между сигналом и исполнением, состояние ключей и лимитов.
  3. Настройка сборщика. Разворачиваем сбор и хранение метрик на Prometheus и Grafana, задаём интервалы съёма и срок хранения, чтобы объём данных не рос бесконтрольно. Дашборды собираем по ролям: дежурный, разработчик, руководитель.
  4. Пороги срабатывания. Пороги считаем от собственной статистики бота, а не «на глаз»: уровень предупреждения и критичный. Так дежурного не будит нормальный всплеск активности сети.
  5. Проверка алертов. Прогоняем на живых сбоях: гасим узел, тормозим очередь, отзываем доступ. Смотрим, кто получил сигнал, за какое время и не потерялся ли он в шуме.
  6. Передача наблюдения. Регламенты дежурств, каналы оповещений, инструкции по типовым сбоям, роли и доступы, обучение команды.

Комплект передачи: конфигурации, схемы, регламенты дежурства

Мониторинг криптобота переживает разработчика только в одном случае — если он передан как работающая система, а не как набор дашбордов на чужом аккаунте. Поэтому в комплект передачи входят не только панели, но и то, чем их воспроизводят, дежурят и разбирают сбои.

  • Файлы конфигурации — экспортёры, job-описания, дашборды и правила алертов лежат в системе контроля версий с осмысленной историей изменений. Развёртывание стенда мониторинга повторяется из репозитория, без ручных правок на сервере.
  • Схема узлов бота — какие процессы, на каких узлах, что с чем обменивается данными, где точки отказа: обрыв связи с биржей, отставание очереди ордеров, недоступность базы истории сделок.
  • Правила алертов — по каждому сигналу зафиксированы порог, окно усреднения, приоритет и адресат. Отделены «горит сейчас» от «посмотреть утром» — иначе дежурный перестаёт реагировать на уведомления.
  • Инструкция дежурного — порядок действий от срабатывания до эскалации: что проверить, какие команды безопасны, когда останавливать торговую логику, кого поднимать и по какому каналу.
  • Регламент разбора инцидента — сроки фиксации, обязательные поля разбора (симптом, корневая причина, действие), критерий, при котором правило алерта переписывают, а не глушат.
  • Доступы и роли — отдельные учётные записи для дежурного и для администратора, порядок выдачи и отзыва, чтобы уход человека не оставлял систему без присмотра.

Передача заканчивается приёмкой: инженер заказчика сам поднимает стенд из репозитория, проводит тренировочное срабатывание и проходит разбор по инструкции. Если на этом шаге что-то не воспроизводится — комплект дополняем, пока не воспроизведётся.

Кейс: сбои бота находили по жалобам, теперь — за минуты

Контур до: логи есть, наблюдения нет

Бот торговал на двух биржах и складывал логи в файлы на сервере. Формально данные для разбора были — фактически их никто не открывал: пороги не считались, снимков состояния не сохранялось. Первый серьёзный сбой выглядел так: одна нога сделки исполнилась, вторая нет, позиция осталась висеть открытой на несколько часов.

О проблеме команда узнала от клиента на следующее утро. Разбор инцидента по логам занял почти четыре часа: нужно было вручную сопоставить записи приложения, ответы биржи и историю ордеров. Кейс мониторинга бота начался именно с этого — не с желания «сделать красивые графики», а с необходимости понять, что произошло, без археологии.

Что изменили

Приложение теперь отдаёт метрики по каждой ноге сделки: число открытых и зависших ордеров, задержку ответа биржи, расхождение баланса с расчётным, глубину очереди задач. Сбор идёт через Prometheus, дашборд собирается в Grafana, алерты разведены по критичности — расхождение баланса и зависший ордер зовут дежурного немедленно, рост задержки приходит предупреждением.

Метрики до и после

  • время обнаружения сбоя: было 3-6 часов (по жалобе клиента), стало 30-90 секунд — по алерту на метрику;
  • разбор инцидента: было 2-4 часа ручного сопоставления логов, стало 10-20 минут: дашборд показывает состояние счёта и ордеров на момент сбоя;
  • зависшие позиции: закрываются автоматически по правилу, дежурный проверяет только факт закрытия;
  • доля сбоев, найденных до обращения клиента: девять из десяти.

Каждый инцидент теперь сохраняется со снимком метрик за час до и после — следующий разбор начинается с готовой картины, а не с нуля.

Чем внешняя проверка доступности отличается от сбора метрик?

Внешняя проверка доступности — это чёрный ящик: независимый пробник с отдельного контура раз в несколько секунд дёргает точку проверки бота и торговый API, замеряя время ответа. По сути это сигнал живости, который не зависит от того, что процесс думает о себе сам.

Сбор метрик работает изнутри: бот публикует счётчики и задержки — долю отклонённых биржей заявок, лаг обработки стакана, глубину очереди задач, расхождение локальной позиции с биржевой. Такой контур видит деградацию задолго до отказа, но именно поэтому его нельзя считать достаточным.

Главное слепое пятно внутренних метрик — момент, когда процесс завис или упал: цифры просто перестают поступать, и это молчание легко спутать со стабильностью. Внешний пробник, наоборот, ловит зависание цикла обработки, отвал соединения с биржей, исчерпание пула, ошибку на границе сети — но не объясняет причину.

Разница подходов в том, что каждый видит своё. Проверка снаружи отвечает, работает ли сервис прямо сейчас, а сбор метрик — почему он стал работать медленнее и куда движется тренд: растёт лаг выставления заявок, падает доля исполненных, расходится баланс.

Поэтому одного подхода недостаточно: внешние проверки без метрик дают тревогу без диагноза, метрики без пробника молчат именно в момент поломки. Мы настраиваем оба контура в общей системе оповещения, с разными порогами и окнами усреднения, чтобы сигнал приходил и на отказ, и на медленную деградацию.

Технические сомнения: перегрузка, доступы, ложные алерты

Перед согласованием наблюдения инженеры задают одни и те же вопросы: не съест ли оно ресурсы, кому отдаём доступы, не утонем ли в шуме. Разбираем каждый пункт.

Не начнёт ли мониторинг конкурировать с торговой логикой?

Метрики отдаёт отдельный эндпоинт вне цикла обработки ордеров: сбор идёт по интервалу, а не по каждому событию, поэтому нагрузка растёт не линейно. На тестовом контуре снимаем профиль до и после включения наблюдения и фиксируем расхождение в отчёте.

Придётся ли отдавать приватные ключи или доступ к бирже?

Нет. Наблюдение читает метрики и логи через эндпоинт только на чтение. Приватные ключи подписи не покидают защищённый контур и не попадают ни в конфигурацию сборщика, ни на дашборды. Для контроля баланса заводим отдельный ключ с запретом на вывод.

Как настроить пороги, чтобы не тонуть в ложных алертах?

Пороги задаём не «на глаз»: сначала собираем статистику обычного поведения, затем ставим границы по перцентилям с окном усреднения. Срабатывания группируются и дедуплицируются, повторяющиеся гасятся — шум не смешивается с критичным сигналом. У каждого алерта есть привязанное действие, а не «посмотреть».

Что с дежурством в нерабочие часы?

Уровни эскалации разделены: предупреждения уходят в рабочий канал и разбираются утром, критичные поднимают дежурного. Для типовых отказов — зависший обработчик, разрыв соединения — настраиваем авто-восстановление, и ночью человека не будят. На нестандартные случаи есть инструкция: что проверить, как откатить, кого подключить.

Обсудим задачу: как построить наблюдение под ваш контур

Разговор начинаем с контура: какие биржи и стратегии обслуживает бот, где он запущен, кто и как узнаёт о сбое сегодня — вручную по логам или по оповещению. По итогам вернёмся с оценкой и планом работ, где будет видно, какие метрики снимаем, где ставим пороги и кто получает сигнал. Старт наблюдения за ботом обычно занимает меньше времени, чем кажется, если заранее собрать вводные.

Что нужно от вас, чтобы оценка была точной:

  • доступы к узлам, где работает бот, в режиме только чтение — к сервису, конфигурациям и хранилищу логов;
  • перечень процессов, за которыми следим: выставление и отмена ордеров, синхронизация с биржей, пополнение баланса, зависшие задачи;
  • список сбоев, которые уже случались, и ваша градация критичности — по ним расставим приоритеты оповещений;
  • каналы доставки сигналов: мессенджер, почта, звонок, и кому именно они адресованы в разное время суток;
  • окна обслуживания и допустимое время простоя, чтобы дежурный не просыпался от плановых работ;
  • требования к истории: сколько хранить метрики и как часто делать срезы для разбора инцидентов.

На выходе вы получаете карту метрик с описанием смысла каждой, конфигурацию сбора, панели графиков по ключевым узлам, правила оповещений с порогами и защитой от дребезга, а также короткую инструкцию для дежурного: что смотреть в первую очередь и какие действия безопасны. Отдельно проверим схему на учебном сбое — остановим обработчик и убедимся, что сигнал дошёл до нужного человека.

Опишите задачу — вернёмся с оценкой и планом.

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

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1543
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1374
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142