terratensor / tg-svodd-bot

Telegram svodd.ru bot
https://t.me/svoddru
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

Проблема после перезагрузки docker контейнеров #15

Closed audetv closed 11 months ago

audetv commented 11 months ago

TG-SVODD-BOT-16 Event ID: 5296adc8 Oct 7, 2:14 AM pubsub (code=NotFound): Exception (404) Reason: "NOT_FOUND - no queue 'q1' in vhost '/'"

Проблема зафиксирована 28 сентября и 7 октября 2023. После перезагрузки контейнеров, телеграм бот не находит очередь сообщений на сервере, в тот момент пока она ещё физически не создана rabbitmq и на этом останавливает свои попытки восстановить связь, контейнер с ботом продолжает работу, но после создания очереди сообщений на сервере, телеграм бот не обновляет свое состояние и не принимает сообщения. Приходиться в ручную на сервере удалять стек бота и запускать заново.

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

audetv commented 11 months ago

Третий вариант архитектурный, он есть, пришел в голову, но в данный момент слишком «тяжелый» — вынести сервер очередей на отдельный хост, на котором будет только сервер очередей, произвести запуск rabittmq не на базе докера. В такой архитектуре сервер очередей будет выполнять только одну роль, это будет специальная машина под очереди. В идеальном мире)

iprst commented 11 months ago

Вчера вечером два раза были перебои в работе как минимум по несколько минут. Есть связь с тележкиным ботом, или это перпендикулярно?

audetv commented 11 months ago

Не знаю, вряд ли. Ночью была перезагрузка всех сервисов, они восстанавливаются автоматически, но с тг ботом важна последовательность запуска сервисов, надо будет доработать код бота, что бы это перестало так влиять. А позже днем утром после 10:00 случились технические работы у провайдера, что-то на ноде меняли. Пока не восстановили работу. Переписываюсь с поддержкой.

iprst commented 11 months ago

Сайт запустился, но нету новых комментариев с момента Х

audetv commented 11 months ago

Да, сейчас отработают системы и обновится состояние.

iprst commented 11 months ago

Я ночью не писал об остановках сайта, поскольку проблема могла быть с моей стороны у провайдера — 3-го что-то где-то у Ростелекома жирное сломалось, и большая ветка Поволжья, Урала и Сибири испытывала серьёзные перебои, поэтому что-то могли чинить и мало ли какие пути временно отвалились.

audetv commented 11 months ago

Так все запустил, тг тоже заработал, сообщения доставил. Да уж. Прикол — не прикол, после завершения работ у провайдера на ноде, у них там были технические неполадки, подробностей не знаю. но сервер не восстановился в обычном режиме, после завершения работ, отвалились дисик, недоступен ssh был, в общем «ничего не работало» Поддержка его восстанавливала вручную, мне оставалось только ждать. Но спасибо ребятам, сработали четко и все восстановили. Работаем. Совпадения…

iprst commented 11 months ago

Есть атаки — есть волны «прорывов» в цепях где тонко — есть восстановление.

iprst commented 11 months ago

Да, новые комментарии тоже прилетели на страницу и в тележку.

iprst commented 11 months ago

Есть такая идея к обсуждению. Предлагаю рассмотреть модуль для парсера сайта и телеграм канала, который бы обрезал ссылки на телегу, не затрагивая все остальные ссылки. То есть из ссылок вида

https://t.me/aaaaabbbbb111111

Делал текст вида

t.me/aaaaabbbbb111111

Без создания прямой ссылки. Таким образом мусор не будет ретранслироваться в качестве прямых ссылок, что не позволит делать из ресурса ретрансляционную помойку.

iprst commented 11 months ago

Можно рассмотреть в сценарии временной меры, эксперимента.

audetv commented 11 months ago

Ага, идея понятна и вроде не сложная в реализации. Из комментариев показ ссылок на телеграм можно просто отключить по регулярному выражению, там не обязательно схему вырезать из урл. И в тексте комментария в общем-то не настоящая ссылка, а js script работает по тегу, в общем можно настроить. В тг боте надо действительно схему (https/http) вырезать т.к. телеграм парсер сам их обрабатывает. Это надо будет в парсер бота добавить обработку, так же по регулярному выражению, но отрезать схему из урл. Да, можно сделать.

audetv commented 11 months ago

Из комментариев показ ссылок на телеграм можно просто отключить по регулярному выражению, там не обязательно схему вырезать из урл.

Я имею ввиду, что можно просто не подключать js к таким ссылкам и они не будут открываться. будут как обычный текст.

iprst commented 11 months ago

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

audetv commented 11 months ago

Изменена конфигурация rabbitmq сервиса, подробнее в описании https://github.com/terratensor/svodd-rabbitmq/pull/1 Предлагаю пока понаблюдать за поведением, в случае повторного возникновения ошибки с очередью уже решать, что делать. https://github.com/terratensor/tg-svodd-bot/pull/18 — пусть пока повисит, если система будет работать стабильно, то эти изменения не понадобятся и пул реквест будет закрыт без слияния.

audetv commented 11 months ago

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

iprst commented 11 months ago

А что вообще явилось причиной столь частого наблюдения проблемы с перезапуском? Что стало внешним триггером?

audetv commented 11 months ago

А что вообще явилось причиной столь частого наблюдения проблемы с перезапуском? Что стало внешним триггером?

Первое — это проблемы у провайдера, какие точно мне не ведомо, но ранее сервер работал около 90 дней без перезагрузки, до этого я сам его в июле перегружал, а на прошлой неделе было 3 рестарта и один из них 7 окт. 2023 г. с отвалом дисков, так что более 5 часов не работали сервисы и я переписывался с поддержкой, восстанавливали работу сервера. Вообще рестарты случаются, без них не бывает. Это нормально, но не 3 раза в неделю))) Система у нас сложная, состоит из разных сервисов, которые взаимодействуют по сети и выполняют разные функции, сервисы эти могут отваливаться по разным причинам, могу быть перегружены или терять связь друг с другом. В общем то это прямо из теории обработки сигналов следует, что информация может теряться и надо предусмотреть режимы аварийного восстановления. Вот теперь и телеграм бот подходит под этот критерий. Просто это мое «поделие» на коленке, и до этого бот работал вполне нормально, я его 1 раз всего перезапускал в ручную, т.е. это было приемлемо для меня, но если будут ломать и надо будет вставать каждый раз и часто, то теперь будем вставать запланировано ровно и не отвлекаться)

UPD: А второго наверное и нету. Не знаю. Это не проблема сервисов. т.е. не сбои в работе и ошибки, типа криво написано и глючит. Хотя написано местами криво, но не глючит.

iprst commented 11 months ago

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

Да, всё чётко.

на прошлой неделе было 3 рестарта и один из них 7 окт. 2023 с отвалом дисков, так что более 5 часов не работали сервисы и я переписывался с поддержкой, восстанавливали работу сервера

Возможно есть какая-то связь с крупным падением Ростелекома на днях. У меня было в те же даты. Анамнез был ДИКИЙ — роутеры и маршрутизаторы, подключенные к кабелю РТ просто намертво вешались и не реагировали ни на что. Интерфейс недоступен, ничего не работает, комп задумчиво шуршит мозгами. Вынимаешь провод — всё работает. Вставляешь — останавливается. То есть эта ошибка «унаследовалась» откуда-то достаточно издалека.

Это не проблема сервисов. т.е. не сбои в работе и ошибки, типа криво написано и глючит. Хотя написано местами криво, но не глючит.

Да. Я тоже грешил на кабель, но подумал, что проверю, провайдер это так глючит или кабель — перестал его трогать и ждал. В итоге оказалось верное предположение о провайдере, на следующий день читал подобные отзывы с Урала и западной Сибири. А кабель нетронутый работает.