Просмотр и анализ журналов событий Linux с помощью консольной программы Lnav. 

 В статье блога рассматривается возможность интеграции консольного просмотровщика логов lnav для анализа журналов Linux, в качестве примеров используются действующие журналы работы Kablink, appserver и catalina, в качестве стенда используется сервер ALT Linux.

Содержание.

 Встроенный в административную панель Kablink системная кнопка отчёты, даёт администратору возможность контроля работы пользователей и системы в целом, но когда Портал выключен по различным причинам, сделать анализ журнал Tomcat-Apache становится невозможно. Существующие текстовые редакторы tail, cat, less ... не позволяют уверенно ориентироваться в сложных системных сообщениях. Специальные программы для анализа логов, Rsyslog, ElasticsearchFluentd... требуют серьёзного изучения, сложны в настройках и отвлекают для своей работы дополнительные ресурсы. Lnav  — инструмент позволяющий сделать анализ сообщений журнала, в удобном виде без специальных GUI приложений, используя облегчённую систему визуализации аналитики входящих сообщений.

 lnav — расширенный просмотровый навигатор файловых журналов для терминального использования, с дружественным интерфейсом мониторинга и анализа входящей информации и не требует дополнительных усилий при установке. Lnav "всеядный" - может работать практически со всеми известными форматами журналов и и на 'лету' определять, читать, индексировать и выводить на экран полученные результаты. Содержимое сообщений выходного файла журнала объединяется в одно целое представление, на основе отметок времени происходящих событий.

 Регулярный мониторинг и анализ журналов с поморью lnav поможет администратору улучшить эксплуатационные характеристики своих приложений, расширяя этим потенциальные возможности по управлению и мониторингу действующих прграммных комплексов.

Основные возможности Lnav.

  • просмотр одного журнала
  • просмотр и извлечение сообщения нескольких журналов
  • автоматическое определение формата журнала
  • фильтрация сообщений журнала
  • наличие временных отметок журнала
  • включение режима pretty-print view
  • анализ журналов с использованием SQL запросов

Подготовка

 Развернуть lnav можно из официального репозитория ALT Linux, на сервере, работу которого необходимо контролировать или просто скачать с сайта разработчика Lnav.

если система безопасности организации требует, для установки lnav, использовать официальный репозиторий, консультируетесь со специалистами по безопасности ОС вашей организации

# apt-get update
# apt-get install lnav
# ...

скачать с сайта и установить

# apt-get install lnav-x.x.x-x.x86_64.rpm

Теперь надо "нацелить" lnav на каталог, где хранятся журналы Kablink с помощью созданного для этого запускающего сценария lnkb.

#!/bin/bash
# просмотр анализ журнала appserver.log
lnav /opt/novell/teaming/apache-tomcat/logs/appserver.log
# просмотр анализ журнала catalina.out
lnav /opt/novell/teaming/apache-tomcat/logs/catalina.out

поместить сценарий lnkab в каталог

# ls -l /usr/local/bin
-rwxr-xr-x root root lnkb

запуск lnav

$ sudo lnkb

Горячие клавиши Lnav.               

  • ПРОСТРАНСТВЕННАЯ НАВИГАЦИЯ
    PgUp - вниз на страницу
    PgDn  - вверх на страницу
      - вверх на одну строку
    - вниз на одну строку
    l → - право половина страницы
    Shift + l - Право десять столбцов
    n|N - следующий / предыдущий поисковый запрос
    > <  - следующий / предыдущий поисковый запрос по горизонтали
    s|S - следующее / существенное замедление в скорости сообщений журнала формат экрана
    T - отключение s
    u|U  - перемещение по закладкам, вверх низ
    w|W - поиск предупреждений начало, конец
    e|E - поиск ошибок начало, конец
    g|G Начало журнала / конец журнала
    { }  - предыдущее / следующее место в истории
  • ХРОНОЛОГИЧЕСКАЯ НАВИГАЦИЯ
    d|D - переместить на 24h верх или низ
    1-6|Shift 1-6  - следующая |предыдущая 10 мин часа
    7-8  - предыдущая / следующая минута
    0|Shift 0  - предыдущий / следующая день
  • ЗАКЛАДКИ
    m - пометить / снять отметку с верхней строки
    M - пометить / снять отметку диапазона строк от последней помеченной до верхней
    j - пометить следующей строки после ранее отмеченной вниз
    k - снять отметку с предыдущей строки вверх
    c - копировать отмеченные строки в буфер обмена
    C - очистить отмеченные линии
  • ДИСПЛЕЙ
    q - выход возврат предыдущий
    P - симпатичный видов
    T - отображение прошедшего времени между строками
    - гистограмма
    - откл.гистограммы
    p - разбор строки
    L - отключение lnav функций вид становится как простой терминал
    Ctrl-w - отмена переносов всё в одном экране
    Ctrl + f - включение / выключение всех фильтров в текущем представлении
    x  - переключить скрытие полей сообщения журнала. Скрытые поля будут заменены тремя маркерами и выделены желтым цветом.
    СЕССИЯ
    Ctrl + R - сброс утекшей сессии
  • ЗАПРОС
    / -  Поиск строк, соответствующих регулярному выражению
    / - повторное нажатие отменяет поиск

 После первого представления и общих сведений о работе и назначении горячих клавиш навигаций по lnav, рассмотрим применение lnav на практике, используя его для анализа сообщений основного журнала Kablink, appserver.log.

 Практика работы с Lnav.

 Набрав команду $ sudo lnkb  попадаем в окно журнала appserver.log, с указанием места хранения файла журнала, сведения которого нас интересуют.

  если предполагается использования буфера clipboard, то для запуска lnav ввести использовать синтаксис $ sudo -E lnkab 

 Навигатор позволяет сортировать сообщения, выделяя из них строки со статусом WARN или ERROR, используя ← → клавиши перемещать строки в право или в лево, искать информацию выбирая строки с помощью клавиш ↓ ↑листать страницы сообщений с помощью клавиш PgDn PgUp , быстро переходить в начало или конец журнала.

 Для более точного разбора хронологии исследуемых событий журнала, воспользуемся выделением временных врезок по секундно, или увеличим переходы временных интервалов, выбирая: минутныесуточные, часовые или 24 часовые хронологические периоды появляющихся событий.

 Возможность делать отметки в сообщениях журнала с помощью закладок, делает навигатора lnav ещё привлекательней. Закладки можно ставить на одну строку или выделять несколько строк перемещаясь вверх или вниз по журналу, поиск закладок осуществляется с помощью клавиш u|U. Предусмотрена возможность выделения диапазона 1 2 3 строк для дальнейшего разбора, все закладки можно копировать в буфер clipboard, очистить журнал от пометок закладок можно с помощью сочетания клавиш Shift + C.

 Управлять выводимой, дисплейной, информации в удобном для восприятия виде, ещё одна хорошая особенность lnav, нажимая последовательность клавишShift+p мы переключается в режим Pretty-Print View, нажимая одну клавишу p переходим в режим просмотра журналов XML и JSON форматов, при этом можно включить подробную хронологическую историю выводимых сообщений с помощью кнопок Shift+t, плавно перемещаясь в диапазоне времени с помощью кнопок s↑S↓. Выстраивание гистограмм с помощью кнопок iI позволяет оценить наличие сообщений и их количество со статусом Error или Warn, нажимая клавиши zZ мы можем увеличит или уменьшить временной ряд гистограммы. Иногда, для отчёта, требуется показать информацию в привычном терминальном виде без режима подсветки синтаксиса строк журнала, воспользовавшись для этого операции сочетанием клавиш Ctrl+l. Если надо вывести компактный экран сообщений журнала без переносов, нажимаем комбинацию кнопок Ctrl^w. В заключение следует подчеркнуть, что вернутся из многих режимов в главное окно lnav или просто выйти из режима просмотровщика, можно используя для этого клавиши q Q.

 Вся информационная история о манипуляциях пользователя с журналом сохраняются в истории сессии, при следующей загрузки пользователем исследуемого журнала в своём профиле, сеанс lnav, восстанавливает некоторые режимы и позиции предыдущей историии работы lnav:

  • положение в файлах для просмотра
  • информацию о поиске
  • фильтры или подсветки фильтров
  • закладки
  • настройки временных хронологии

 Сбросить историю текущей сессии можно воспользовавшись сочетанием клавиш Ctrl^R, в нижней командной строке экрана lnav.

 Пожалуй самым востребованным режимом при разборе сообщений журнала, является поиск, в lnav этот функционал встроен в командную строку и имеет привычный знак-символ / , имеющий двойное значение - включает и выключает режим поиска.

 На этом обзор навигатора lnav заканчивается, остаётся только напомнить, что всё сказанное относится к разбору сообщений журналов Kablink, и поэтому другие возможности lnav опушены, чтобы не усложнять понимание возможностей использования lnav & Kablink.

Заключение.

 Для проведения анализа и контроля работы ОС Linux в целом, а так же отдельных приложений использующих для своей работы её базовые настройки в частности, созданно много аналитических программ. Большинство из которых имеют собственные программы для анализа журналов входящих в 'коробочные' версии при базовой установке. Все они, как правило имеют графический интерфейс и работают только когда запущенна базовая программа, что является нормой. Просмотр и анализ журналов событий происходит периодически, как правило, когда всё работает штатно и без сбоев. Но такая работа может прерываться неожиданными событиями — приложения не запускаются, логи нельзя просмотреть, телефон надрывается, в дверь стучат возмущённые пользователи, вот здесь и может пригодится небольшой консольный просмотровщик, уж он то доберётся до любого журнала, ему не нужен тяжёлый интерфейс GUI, главное что бы сервер "дышал". Просмотровщик lnav не занимает много места, не требует особых навыков в работе и большого времени на изучение, необходимо только небольшая практика в использовании и вот у Вас в руках ещё один инструмент, который может выручить админа в критическую минуту.