Есть ли пошаговая диагностика, когда сайт Discourse возвращает ошибку 502 Bad Gateway?

Я пришел сюда в надежде найти пошаговую диагностику для ситуации, когда сайт Discourse возвращается с ошибкой 502 Bad Gateway. Кажется, что единственные варианты действий сводятся к следующему:

  1. Возможно, обновление Discourse не удалось завершить; используйте команду ./launcher rebuild app.
  2. Обновите систему и перезагрузите сервер.

Именно такие ответы мы получаем от техподдержки первого уровня или от почтового бота.

Что еще мы можем сделать, чтобы изучить логи и точно понять, почему среда перестала работать? С этой информацией мы могли бы научиться предотвращать подобные проблемы в будущем.

Например, уместно ли было бы настроить cron-задачу, которая периодически проверяет доступность Discourse, и если ответ содержит код 502 или аналогичный, автоматически запускает пересборку?

Пересборка кажется довольно радикальным способом решения проблемы. Это не диагностика.

Я очень надеюсь, что кто-то сможет указать нам на популярный документ «Диагностика проблем в Discourse», который такие новички, как я, упустили. :slight_smile:

Спасибо!

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

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

Я могу открыть консоль на этом VPS, но окно с текстом ограничено.
Есть ли какие-то конкретные логи, которые можно проверить внутри контейнера или в операционной системе?
Уже существует какой-либо процесс пинга в хост-ОС или в контейнере, который отслеживает остановку процессов?
Может быть, простая перезагрузка сервера внутри контейнера станет лучшим решением, чем полная пересборка?

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

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

Спасибо!

Я имел в виду логи браузера из инструментов разработчика или их аналог в вашем браузере.

Я так не думаю, но вы всегда можете попробовать.

Заполнен ли диск?

Часто ли это происходит?

Посмотрите файл /var/discourse/logs/rails/production.log

Извините, что так долго не мог вернуться к этому…

Диск используется менее чем на 50%.
ОЗУ обычно находится в диапазоне 80–90%, Swap — менее 40%. Думаю, проблема именно здесь.
Логи находятся в /var/discourse/shared/standalone/log/rails.
production.log и связанные сжатые файлы содержат множество деталей транзакций. На что мне стоит обратить внимание?
В production_error.log записей вообще нет.
«Часто»? Нет. Но достаточно часто, чтобы слегка раздражать и побуждать написать здесь. :slight_smile:
Я просмотрел syslog и ничего не нашёл — не уверен, что там вообще что-то есть, если проблема ограничена контейнером, как и должно быть.

Я новичок в Docker, поэтому извините, что у меня нет информации из контейнера, но буду рад проверить всё, как вы укажете.

Спасибо!

Это не поможет. Проблема здесь на стороне бэкенда. Запрос даже не доходит до получения ответа от сервера (отсюда и ошибка «bad gateway» — «плохой шлюз»).

Вам нужно посмотреть логи бэкенда Rails.

Попробуйте выполнить следующие действия:

  • /var/discourse/shared/standalone/log/rails# tail -n 200 production.log — чтобы проверить наличие очевидных ошибок при запуске.

  • Внутри контейнера (сначала выполните ./launcher enter app):

    curl 0.0.0.0:3000 — чтобы проверить, отвечает ли сервер Rails.

В остальном: удалите все плагины, выполните пересборку, а затем по одному добавляйте их обратно.

Ошибка 502 возникает, когда Rails не возвращает ответ, обычно во время запуска системы или при неправильной настройке.

Стоит проверить логи nginx.

Я считаю, что почти все темы здесь о ошибках 502 возникают, когда Discourse был обновлён, но не возобновил работу. Обновление не удалось, или администратор не подождал достаточно долго, пока служба запустится.

Вы имеете в виду, что у вас есть рабочий Discourse, вы не предпринимаете никаких действий администратора, но он начинает спонтанно возвращать ошибку 502?

И когда это происходит, он всегда возвращает ошибку 502 до перезапуска или же периодически снова начинает работать?