Вы умеете просматривать файлы в Linux. Для этой цели вы используете команду cat или, возможно, команду less.
Это хорошо для файлов со статическим содержимым. Но файлы журналов динамичны, и их содержимое меняется со временем. Чтобы отслеживать журналы, вам необходимо следить за изменением содержимого файла журнала.
Как вы видите содержимое файлов журналов в реальном времени? Tail – самая популярная команда для этой цели, но есть и другие инструменты.
Метод 1. Просмотрите файлы журнала с помощью команды tail
Команда tail настолько популярна для просмотра файлов журнала в реальной жизни, что системные администраторы используют термин «tail the log file (хвост файла журнала)».
Команда tail в основном используется для отображения строк файла с конца, отсюда и термин «tail».
Вы можете использовать опцию -f отслеживания хвоста файла, что означает, что он будет постоянно показывать новые строки, добавленные в файл.
tail -f location_of_log_file
Для того, чтобы остановить хвостохранилищ лог – файла, используйте Ctrl + C терминала ярлык.
Tail и grep
Хорошо! Таким образом, команда tail решает проблему, показывая изменения файла в реальной жизни. Но постоянное наблюдение за файлом журнала, когда происходит так много быстрых изменений в реальном времени, не очень полезно.
Вы часто будете искать конкретный термин при мониторинге файла журнала. Обнаружить это в потоке входящих новых строк практически невозможно.
Чтобы упростить задачу, объедините команду tail и grep следующим образом:
tail -f log_file | grep search_term
Это хорошо, правда? Давайте сделаем это немного лучше.
Строки с искомыми словами не раскрывают необходимых деталей. Вот почему мы используем команду grep, чтобы показать несколько строк до и после искомого термина с опцией -C.
tail -f log_file | grep -C 3 search_term
Теперь вы увидите строки, соответствующие поисковому запросу, а также 3 строки до и после него. Это даст лучшее представление о том, что происходит.
Хотите сделать его еще лучше? Вы можете использовать grep для нескольких поисковых запросов и даже сделать поиск без учета регистра:
tail -f log_file | grep -C 3 -i - E 'search_term_1|search_term_2'
Сохранение файла с ротацией журнала
Если вы работаете на корпоративном сервере, есть вероятность, что журналы будут чередоваться. Это означает, что после того, как текущий файл журнала достигает определенного размера, он переименовывается и архивируется.
Это создает проблему, если вы отслеживаете файл журнала в реальном времени. По умолчанию команда tail работает с файловым дескриптором. Если текущий файл журнала повернут, команда tail теперь будет указывать на заархивированный файл журнала, который не будет записывать никаких изменений.
Решение состоит в том, чтобы следить за файлом журнала по его имени. Таким образом, даже когда происходит ротация журнала, хвост будет указывать на текущий файл журнала (потому что его имя никогда не меняется).
tail --follow=name log_file | grep -C 3 -i - E 'search_term_1|search_term_2'
Сейчас это намного лучше. В следующий раз, когда вы будете отслеживать файл журнала, используйте его таким образом, чтобы отслеживать его более эффективно.
Tail удобен для мониторинга файла журнала в реальном времени, но что, если вам нужно анализировать более одного файла журнала одновременно? Ответ кроется в следующем разделе.
Просмотр нескольких файлов журнала с помощью хвоста
Это должно работать в системах Linux. Вы можете отслеживать несколько файлов журнала одновременно с помощью команды tail. Просто укажите путь к файлу следующим образом:
tail -f log_file_1 -f log_file_2
Вы увидите, что он начинает показывать изменения в реальном времени вместе с именем файла перед ним, чтобы вы могли различать разные источники журналов.
Есть немного лучший способ просматривать сразу несколько файлов журнала с помощью утилиты multitail.
Метод 2: одновременный мониторинг нескольких файлов журналов с помощью многопользовательской
Multitail, как следует из названия, используется для одновременного отображения нескольких файлов.
Команда tail тоже может делать то же самое, верно?
Но у Multitail есть некоторое преимущество перед обычной командой tail. Он показывает файлы в разделенных представлениях, и вы даже можете отображать разные файлы в разных строках и столбцах.
Помните, что хвост показывает все в одном ракурсе, и за этим становится трудно следить. Multitail преодолевает эту трудность, предоставляя разделенный вид, как команда экрана.
Вы можете предоставить ему несколько файлов, но я думаю, что будет сложно отслеживать одновременно более трех файлов.
multitail log_file_1 log_file_2
По умолчанию multitail работает так же, как tail -f. Он показывает последние 100 строк, а затем переходит в режим реального времени. По умолчанию вид разбивается на строки.
Вы можете нажать b, чтобы открыть окно выбора и выбрать файл журнала по вашему выбору, чтобы просмотреть его и прокрутить для дальнейшего и более глубокого анализа.
Нажмите q, чтобы выйти из всех видов просмотра в многоадресном режиме.
Вы можете разделить представления на столбцы следующим образом:
multitail -s 2 log_file_1 log_file_2
Между -sи количеством столбцов есть обязательный пробел.
Multitail может выполнять и другие функции, но я не буду вдаваться в подробности в этом руководстве.
До сих пор вы видели два способа мониторинга файлов журналов. Есть еще один, менее традиционный способ увидеть изменения файлов в реальной жизни, и он использует команду less.
Метод 3: просмотр изменений файла журнала в реальном времени с меньшим количеством команд
Команда less больше подходит для чтения текстовых файлов, не загромождая экран. Его также можно использовать для чтения файлов с изменениями в реальном времени.
Эта опция +Fпозволяет меньше отслеживать изменения, внесенные в текстовый файл.
less +F log_file
Он открывает файлы журнала, в которые записываются изменения, отображаемые в реальном времени.
Нажмите Ctrl + c, чтобы прервать и q, чтобы выйти из представления.
Этот метод позволяет быстро просматривать изменения журнала, не загромождая экран, в отличие от команды tail.
Заключение
Этот метод мониторинга файлов журналов в Linux работает с традиционными текстовыми файлами журналов. Для системных журналов системные журналы все еще существуют, но многие дистрибутивы Linux перешли на журнальные журналы, и для просмотра и анализа журналов журнала вы должны использовать команды journalctl.
Помимо этого, есть и другие сложные инструменты, такие как Graylog, для более глубокого анализа журналов с помощью панелей мониторинга и графиков. Подробнее об этом в другой статье.
Надеюсь, вы узнали пару новых вещей из этой, казалось бы, простой темы о мониторинге журналов в реальном времени в Linux. Ваше мнение приветствуется.