Мониторинг логов в линукс на примере модуля Noolite в Majordomo.

Короткая заметка о мониторинге логов в реальном времени и вызову файлов по маске.

В некоторых ситуациях приходится достаточно часто обращаться к логам каких-то модулей. Из x-ray это не всегда бывает удобно, лучше из командной строки, тем более команда tail с ключом -f позволяет выводить лог в реальном времени. Вот так и мне во время отладки системы Noolite пришлось поковыряться в логах одноименного модуля, лог файл которого создается каждые сутки новый и в имени которого присутствует текущая дата. Вызов такого файла с выводом в консоль в реальном времени будет выглядеть так:

При чем, если запустить в виде tail -F, то при наступлении следующих суток, по идее должен подхватиться следующий файл.
Но мы сутками мониторить не собираемся и чтобы каждый раз не вписывать точную дату в команду вывода лог файла, можно делать вызов по маске таймштампа:

Чтобы выводить в реальном времени определённые строки логов, например, для отслеживания работы датчика движения, привязанного к определённому каналу можно использовать grep, получится (где 44 это номер канала):

если добавить в конце строки «> имя_файла.txt» , то выборка лога будет выводиться вместо консоли в текстовый файл:

«>>» вместо «>» позволяет дописывать в конец файла, не затирая его.

Если в конце строки добавить «&», то это освободит консоль, а выполнение задачи уйдет в фон, выведя в консоль id процесса. Завершить задачу можно через kill.
Кроме tail существуют и другие более продвинутые утилиты, например, lnav позволяет мониторить сразу несколько логов, подсвечивает вывод и имеет множество других возможностей.

Чтобы не запоминать пути к логам и синтаксис маски таймштампа, можно единожды всё это заскриптить и вызывать простой командой без указания пути. Для этого создадим файл noolog в директории /usr/local/bin

вписываем в него 2 строки:

Сохраняем файл:

делаем файл исполняемым:

Всё! Теперь в любой момент набираем в консоли «noolog» и мониторим актуальный лог модуля noolite.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *