В статье блога рассматривается возможность интеграции консольного просмотровшика логов lnav для анализа журналов Kablink, appserver и catalina.

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

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

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

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

Установка

Установить lnav можно из репозитория, на сервере ALT Linux. где работает Kablink или скачав с сайта разработчика после чего установить его используя для этого:

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

# apt-get update
# apt-get install lnav
# apt-get install xclip

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

# 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

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

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

вызвать журналы для просмотра и анализа можно набрав

$ sudo lnkb

                      

  • ПРОСТРАНСТВЕННАЯ НАВИГАЦИЯ
    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.

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

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

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

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

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

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

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

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

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

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

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