Что проверять при недоступности приложения
Что проверяют
Есть ли у вас порядок действий в инциденте или вы начнёте наугад перезапускать сервисы. Смотрят на два навыка: сузить область отказа сверху вниз и отделить восстановление сервиса от расследования причины.
Как отвечать
Сначала подтвердите факт и масштаб: недоступно всем или из одной сети, целиком или часть запросов, что говорят графики ошибок и нагрузки, что показывают внешние проверки. Дальше первый практический вопрос: что менялось. Выкладка, конфигурация, ротация секрета, миграция, флаг, задание по расписанию. Большая часть отказов ложится на изменение, поэтому журнал выкладок смотрят раньше логов приложения.
Дальше идите по слоям:
- имя разрешается, сертификат не просрочен, соединение устанавливается;
- балансировщик отвечает и видит за собой живые адреса;
- экземпляры запущены, не в цикле перезапуска, проба готовности проходит;
- приложение отвечает на своём адресе в обход балансировщика;
- ресурсы: место на диске, память и срабатывания убийцы процессов, файловые дескрипторы, пулы соединений, ограничения процессора;
- зависимости: база, кэш, очередь, внешние интеграции, блокировки и долгие транзакции, отставание реплики.
Параллельно говорите про восстановление: откат выкладки, снятие нагрузки, отключение тяжёлой возможности флагом. Сначала вернуть сервис, потом искать причину, и по ходу вести хронологию для разбора.
Где спотыкаются
Перезапускают до того, как собрали улики. Сервис поднимается, причина исчезает вместе с контейнером, через сутки всё повторяется, а смотреть уже нечего: ни дампа, ни логов, ни состояния процесса.
Второе: верят зелёной панели мониторинга. Проба, отвечающая успехом, пока жив процесс, ничего не говорит о том, обслуживает ли он запросы, а сам мониторинг может лежать вместе с приложением. Проверяйте со стороны пользователя, с внешней точки.
Третье: меняют несколько вещей сразу и молчат. После такого никто не знает, что именно помогло, а коллеги и пользователи узнают о проблеме последними. В инциденте назначенные роли и регулярное сообщение о статусе стоят не меньше диагностики.