Сообщество / DevOps

ночью шлюз упал, n8n всё сложил в ошибки

K
kostya_gw
Junior
Сообщения: 25
Репутация: 13
Дата регистрации:
20.09.2026
АВТОР ТЕМЫ19 окт. 2026 г., 19:01 (GMT+3)
Дописываю конфиг, пока всё помню — утро сегодня было весёлое. Открываю n8n, а там красная лента: половина ночных воркфлоу лежит с connection refused. Полез в докер: litellm, через который у меня ходят все запросы к моделям (две внешние, одна своя тут же на сервере), в четыре утра упал на длинном стриме и ушёл в рестарт. restart: always его честно поднял за минуту, но n8n за это время успел настрелять в мёртвый порт и сложить всё в ошибки. Клиенты утром получили пустые отчёты, мне — объясняться.

Разбирался весь день по кускам. Сам виноват: знал, что n8n стартует быстрее шлюза и первые минуты долбит в ещё не поднявшийся порт, а healthcheck так и не прописал, руки не дошли. Вечером починил: healthcheck для litellm в compose, depends_on с condition: service_healthy у n8n, restart сменил на unless-stopped. Заодно в конфиге шлюза прописал fallbacks — если основная модель лежит, запрос уходит на запасную, а не падает сразу.

Вопрос к тем, кто держит похожую связку. Этого хватает, или вы ещё что-то ставите между n8n и шлюзом? И второе: чем ловите такие ночные падения? Я узнал по упавшим выполнениям утром, а хотелось бы узнавать раньше клиентов.
3
void_3am
Middle
Сообщения: 164
Репутация: 112
Дата регистрации:
14.08.2026
20 окт. 2026 г., 04:00 (GMT+3)
читаю в четыре утра и молча иду смотреть, прописан ли у меня healthcheck. спойлер: нет)

а ловить раньше клиентов — не знаю, клиенты и есть самый быстрый мониторинг
0
L
leo_msk
Junior
Сообщения: 27
Репутация: 13
Дата регистрации:
12.09.2026
26 окт. 2026 г., 11:49 (GMT+3)
Костя, я бы отдельно разобрал запуск цепочки и падение посреди ночной работы. В описании n8n уже успел отправить запросы, когда шлюз перезапускался. Порядок старта сам по себе ещё не отвечает на вопрос: что станет с конкретным запросом, который попал в эту минуту?
0
K
kostya_gw
Junior
Сообщения: 25
Репутация: 13
Дата регистрации:
20.09.2026
26 окт. 2026 г., 12:21 (GMT+3)
Да, в первом сообщении я смешал два случая. Проверка готовности при старте и судьба уже отправленной работы — разные вещи. Для разбора взял бы один условный отчёт: запрос ушёл, ответ не пришёл. Можно ли повторить его целиком, не отправив клиенту два одинаковых письма?
0
M
mike_pg
Junior
Сообщения: 24
Репутация: 9
Дата регистрации:
15.09.2026
26 окт. 2026 г., 12:53 (GMT+3)
Сначала выяснил бы, что к этому моменту уже записано. Отсутствие ответа не доказывает, что действие не выполнилось. В условном отчёте особенно важно отделить получение текста от сохранения результата и отправки письма.
0
tema_py
Junior
Сообщения: 91
Репутация: 71
Дата регистрации:
18.08.2026
26 окт. 2026 г., 13:25 (GMT+3)
Я бы дал заданию свой номер и отдельно отмечал: получили текст, сохранили, отправили. Тогда повторять можно с нужного места, а не опять жать всю цепочку. Но просто приписать номер мало — перед повторной отправкой надо ещё проверить, что по нему уже сделано.
0
M
max_nn
Junior
Сообщения: 26
Репутация: 9
Дата регистрации:
09.09.2026
26 окт. 2026 г., 13:57 (GMT+3)
Получается, зелёное выполнение может быть менее полезной записью, чем понятное «отчёт сохранён, письмо не отправлено». Я бы в истории заданий именно это и хотел видеть. Иначе с утра снова гадаешь: нажать повтор или уже кто-то получил всё дважды.
0
P
polina_smena
Junior
Сообщения: 31
Репутация: 19
Дата регистрации:
28.09.2026
26 окт. 2026 г., 14:29 (GMT+3)
И в уведомлении оставьте тот же номер задания и последний удачный шаг. «n8n упал» заставляет начинать поиск с нуля. «Отчёт такой-то сохранён, отправка не подтверждена» хотя бы объясняет, чего сейчас не стоит повторять вслепую.
0
K
kostya_gw
Junior
Сообщения: 25
Репутация: 13
Дата регистрации:
20.09.2026
26 окт. 2026 г., 15:01 (GMT+3)
Для этого примера порядок понятен: различаем шаги, сохраняем номер задания и не считаем молчание разрешением повторить всё. Проверять надо отдельно случай до сохранения и случай после него. Внедрение пока не объявляю: мы разобрали, что именно должно быть видно при следующей проверке.
0
M
mike_pg
Junior
Сообщения: 24
Репутация: 9
Дата регистрации:
15.09.2026
27 окт. 2026 г., 22:58 (GMT+3)
С номером задания договорились. Ещё одна граница: готовый текст сохранили, а письмо отправить не удалось. При повторе я бы отправлял сохранённый результат, не запускал генерацию заново. Иначе под тем же номером может оказаться уже другой текст, а в истории всё ещё написано «повторная отправка».
0
S
serg_mail
Junior
Сообщения: 23
Репутация: 12
Дата регистрации:
17.09.2026
28 окт. 2026 г., 17:21 (GMT+3)
Для уведомления об ошибке нужен путь, который не зависит от этого же шлюза моделей. Если текст тревоги сначала просит написать упавшую модель, письмо не уйдёт как раз в нужный момент. Обычной строки с названием задачи и ошибкой здесь достаточно.
0
L
leo_msk
Junior
Сообщения: 27
Репутация: 13
Дата регистрации:
12.09.2026
28 окт. 2026 г., 17:53 (GMT+3)
Остался длинный стрим из первого сообщения. Если половина текста пришла, а потом соединение оборвалось, такой отчёт нельзя объявлять готовым. Повтор должен заменить незавершённый черновик, а не дописать к нему начало ответа запасной модели. Иначе в одном письме окажутся два разных недоговорённых объяснения.
1
N
nik_calls
Junior
Сообщения: 10
Репутация: 4
Дата регистрации:
23.09.2026
28 окт. 2026 г., 18:25 (GMT+3)
В условном отчёте я бы отдельно обозначил «данных нет» и «задача не выполнилась». Пустая таблица для менеджера обычно означает, что за ночь ничего не произошло. Если это на самом деле ошибка, он примет рабочее решение по отсутствующим сведениям.
0
M
mike_pg
Junior
Сообщения: 24
Репутация: 9
Дата регистрации:
15.09.2026
29 окт. 2026 г., 17:37 (GMT+3)
Ещё один исход: автоматические повторы закончились, ошибка остаётся. Такое задание нужно перевести в отдельное состояние для ручного разбора. И сохранить причину остановки, чтобы утром его случайно не запустили скопом вместе с обычным расписанием.
1
K
kostya_gw
Junior
Сообщения: 25
Репутация: 13
Дата регистрации:
20.09.2026
29 окт. 2026 г., 18:09 (GMT+3)
Тогда добавляем «нужен разбор» и список таких заданий с датой отчёта. Возвращать их в очередь можно по одному, после решения человека. Починенный шлюз ещё не знает, кому по-прежнему нужен вчерашний отчёт, а кому он уже только запутает работу.
0
M
mike_pg
Junior
Сообщения: 24
Репутация: 9
Дата регистрации:
15.09.2026
30 окт. 2026 г., 18:51 (GMT+3)
Для условного отчёта с сохранённым результатом осталось решить, что хранит номер задания: исходные параметры тоже или только текст ответа. Иначе увидим сохранённый отчёт, но не сможем выяснить, к какому дню и набору данных он относился.
0
L
leo_msk
Junior
Сообщения: 27
Репутация: 13
Дата регистрации:
12.09.2026
30 окт. 2026 г., 19:24 (GMT+3)
Тогда к заданию оставляем входные параметры и выбранный результат, а к отправке — её состояние. Пересчёт за другую дату создаёт другое задание. Повтор доставки старого отчёта не меняет его дату и содержание. Это уже можно показать в истории без слова «всё упало».
1