Логи и диагностика
Что это такое
Диагностика хоста Linux — это в основном чтение того, что он уже записал. Ядро сообщает о событиях оборудования и ресурсов, супервизор служб сообщает о запусках и сбоях, а каждая служба пишет собственный вывод; всё это собирается в одном месте и ротируется, чтобы не заполнить диск. Навык в том, чтобы знать, какой источник отвечает на какой вопрос, и читать от симптома назад, а не гадать вперёд.
Почему это важно
Большинство инцидентов на хосте разрешается строкой журнала, которая уже была там: служба, не сумевшая занять порт, истёкший сертификат, файловая система, у которой кончилось место, отказанное право. Люди, не читающие логи, перезапускают службу и надеются — это работает достаточно часто, чтобы стать привычкой, и отказывает ровно тогда, когда ставки выше всего. Чтение собственного отчёта системы первым быстрее любой гипотезы, и оно оставляет запись о том, что произошло на самом деле.
Ключевые идеи
У каждого вопроса есть источник
Сообщения ядра описывают оборудование, сеть и убийства из-за нехватки памяти. Супервизор сообщает, какая служба запустилась, остановилась или отказала. Собственный журнал службы сообщает, чем она занималась, когда отказала. Начать с симптома — служба не работает, сайт медленный, диск полон — и перейти к источнику, которому принадлежит этот симптом, и есть весь метод.
служба не запускается -> журнал супервизора для юнита, затем вывод службы
хост перестаёт отвечать -> журнал ядра об исчерпании ресурсов
диск полон -> использование файловой системы, затем крупнейший журнал или открытый удалённый файл
Время — организующее измерение
Полезное чтение хронологично: что было последним перед симптомом? Сопоставление отметки времени супервизора о перезапуске с последней строкой вывода службы обычно выявляет причину за один шаг. Часовые пояса важны, потому что служба может писать в поясе, отличном от системного, поэтому согласованные отметки времени стоит навязывать.
Ротация — вот что не даёт логам стать инцидентом
Логи растут без границ, если что-то не ротирует, не сжимает и не удаляет их. Обычный отказ — служба, пишущая огромный объём на уровне, которого никто не читает, заполняет диск, что затем вызывает отказ, который наполняет логи ошибками. Осознанно задать хранение и отправлять важные логи с хоста — обе части ответа.
Уровни существуют, чтобы отделить обычное от исключительного
Журнал на уровне debug бесценен при диагностике и гибелен в спокойном состоянии. Задать разумное значение по умолчанию и временно поднять уровень — это дисциплина; оставить debug включённым в продакшене — вот как хост тихо заполняет свой диск.
Отказы записаны и называют решение
Отказы в правах появляются в журнале аудита ядра и в выводе службы, обычно называя пользователя, путь и операцию. Прочитать эту строку куда быстрее, чем подбирать права наугад, и это предотвращает привычку ослаблять доступ, пока что-нибудь не заработает.
Симптом — не причина, а перезапуски уничтожают улики
Перезапуск падающей службы очищает её состояние и часто её временную диагностику, поэтому второй отказ выглядит новым. Читать логи до перезапуска и фиксировать состояние, породившее отказ, — привычка, которая делает повторяющиеся инциденты решаемыми.
Практика
Диагностируйте только по логам
Возьмите службу, которая не запускается, потому что её порт уже занят. Найдите в журнале супервизора и в сообщениях ядра улику, называющую конфликт, ничего не меняя сначала.
Готово, когда: вы можете назвать конфликтующий процесс и строку журнала, которая его выявила.
Задайте хранение осознанно
Настройте ротацию и хранение для логов службы и убедитесь, что старые записи сжимаются и в конце концов удаляются.
Готово, когда: вы можете назвать максимальное место на диске, которое могут занимать логи, и видите, что политика соблюдается.
Частые ошибки
- Перезапуск до чтения логов — улика о первом отказе пропала; исправить: сначала прочитайте журнал супервизора и вывод службы.
- Оставленный включённым debug в продакшене — диск заполняется и вызывает следующий отказ; исправить: задайте разумный уровень по умолчанию и поднимайте его временно.
- Логи, которые никогда не ротируются — рост безграничен, пока диск не откажет; исправить: ротируйте, сжимайте и задавайте хранение осознанно.
- Ослабление прав, пока ошибка не исчезнет — причина записана как отказ, называющий путь и пользователя; исправить: прочитайте отказ и дайте конкретный доступ.
- Сравнение отметок времени из разных поясов — события выглядят не по порядку, и сопоставление ломается; исправить: навяжите единый часовой пояс в логах.
Что читать дальше
- Файловая система (06-cloud-devops/09-linux-administration/03-the-filesystem) — где живут эти логи и что происходит, когда они заполняют том.
- Администрирование Linux (06-cloud-devops/09-linux-administration) — хост, к которому применяется эта диагностика.
- Мониторинг и наблюдаемость (Prometheus / Grafana) (06-cloud-devops/18-monitoring-observability-prometheus-grafana) — как это чтение по одному хосту становится взглядом на всю систему.