KernelHub®
← Все материалы
LINUX / РУКОВОДСТВО 03 / 5 МИНУТ

Читать логи, а не угадывать

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

Выберите сервис

На системах с systemd проверьте состояние нужного юнита. В примерах используется example.service; замените его на имя своего сервиса.

systemctl status example.service --no-pager
journalctl -u example.service -n 80 --no-pager

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

Ограничьте временное окно

journalctl -u example.service --since "30 minutes ago" --no-pager
journalctl -u example.service -b --no-pager
journalctl -u example.service -f

-b выбирает текущую загрузку, -f следит за новыми сообщениями. Завершить наблюдение можно Ctrl+C. Для расследования сбоя запишите часовой пояс сервера: локальное время клиента может отличаться.

Ошибки — начало, не весь контекст

journalctl -u example.service -p warning -n 100 --no-pager

Фильтр приоритета оставляет предупреждения и более серьёзные сообщения. Но причина может находиться в обычной информационной строке чуть раньше. После обнаружения ошибки прочитайте соседние записи без фильтра по приоритету.

Подготовьте журнал к передаче

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

Если журнал пуст, проверьте, пишет ли приложение в journald: контейнер или приложение могут использовать отдельный файл. Отсутствие записи в одном месте не означает отсутствие ошибки.

Читать в первоисточниках

Сначала понять. Затем изменить.Другие материалы →