journalctl: нашёл причину падения сервиса за 30 секунд
Сервис упал. Прод молчит. Логи — простыня на сто строк.
Знакомо? Это случилось со мной вчера в два ночи. Клиентский API лёг, а в journalctl — мешанина из INFO, WARNING и одного ERROR, затерянного в середине.
Предыстория
Я запускаю production-стенды через systemd. Стандартная ситуация: unit-файл, хорошая практика, всё под контролем. Пока не наступает сбой.
В эту ночь ребята из команды деплоя обновили конфиг. Через час мониторинг показал 502. Я открыл journalctl и провалился в тонну шума: куча сообщений от других юнитов, таймстемпы скачут, нужная ошибка где-то на пятой странице.
Проблема
Журнал systemd по умолчанию показывает всё подряд. Если у вас на сервере 20 сервисов — вы получите общий поток: логи nginx, sshd, cron и вашего упавшего демона перемешаны в одну кашу.
Найти конкретный ERROR без фильтрации — это как искать иголку в стоге сена. Теряешь время, растёт MTTR, растёт злость.
Почему это важно
Каждая минута простоя — это деньги. Пока вы скроллите journalctl вручную, бизнес теряет клиентов. Я видел команды, которые тратили 15-20 минут на поиск одной строчки. При цене часа простоя в $1000 — это прямые убытки.
Системный администратор должен уметь вытащить суть за пару команд. Без магии, без сторонних утилит.
Решение
Фильтруй журнал по имени юнита — это убирает 90% шума.
Я перестал смотреть общий journalctl. Теперь всегда использую ключ -u.
Вот что реально работает. Три команды, которые я применяю ежедневно:
- 🔍 journalctl -u myapp.service — логи только одного сервиса, без соседей
- ⏰ journalctl -u myapp.service --since '5 min ago' — срез за последние минуты до падения
- ⚠️ journalctl -u myapp.service -p err — только ошибки и критическое
Комбинирую их. Например: journalctl -u myapp.service --since '10 min ago' -p err. Получаю 2-3 строки вместо сотни. Место падения видно сразу.
В моём случае ошибка была в неверном параметре в конфиге. Без фильтрации я бы потратил 10 минут. С фильтрацией — нашёл за 20 секунд.
Результат
Сейчас я проверяю любой сбой за минуту. Прод упал — запускаю journalctl с -u и -p err, смотрю таймстемпы, иду в конфиг. Никакой паники.
Хотите совет? Повесьте эти три команды на стену или в заметки. Когда сервис ляжет в час ночи, вы скажете спасибо.
📬 Свяжитесь с нами
Хотите внедрить это в своем бизнесе? Пишите нам!
- 📧 Email: [email protected]
- 🌐 Сайт: 1it.pro
- 📝 Блог: blog.1it.pro
- ✈️ Telegram Global (EN): Admin_global
- ✈️ Telegram (RU): Admin