LNAV — просмотрщик логов в терминале
Что такое LNAV
LNAV (Lateral Navigation) — лёгкий curses‑просмотрщик логов для Linux и macOS. Он индексирует сообщения по времени и типу, объединяет логи из нескольких файлов в одном окне, позволяет выполнять SQL‑запросы к логам и применять фильтры в реальном времени. Поддерживает распознавание многих форматов логов, подсветку по уровню (info/warn/error) и чтение gzip/bzip2.
Короткое определение: LNAV — терминальный инструмент для быстрого интерактивного анализа логов.
Ключевые возможности
- Поиск «по мере ввода»: строки автоматически ищутся и подгружаются по мере появления.
- SQL‑запросы к логам для точного анализа и агрегаций.
- Поддержка множества форматов логов и автоматическое определение шаблонов.
- Подсветка уровней логов (информация/предупреждение/ошибка).
- Чтение сжатых файлов (gzip, bzip2) без предварительной распаковки.
- Просмотр нескольких файлов в одном окне и «живое» обновление.
Требования
- Сервер с Ubuntu 16.04 (или рабочая машина с Linux/macOS).
- Неразовый пользователь с правами sudo.
Установка
В репозитории Ubuntu 16.04 lnav уже доступен, поэтому установить можно одной командой:
sudo apt-get install lnav -yПроверить версию:
lnav -V(команда выведет версию, например: lnav 0.6.2)
Быстрый обзор опций
Все доступные опции можно посмотреть так:
lnav -h(Ниже — полный оригинальный вывод справки, сохранённый без изменений.)
usage: lnav [-hVsar] [logfile1 logfile2 ...]
A curses-based log file viewer that indexes log messages by type
and time to make it easier to navigate through files quickly.
Key bindings:
? View/leave the online help text.
q Quit the program.
Options:
-h Print this message, then exit.
-C Check configuration and then exit.
-d file Write debug messages to the given file.
-V Print version information.
-s Load the most recent syslog messages file.
-a Load all of the most recent log file types.
-r Load older rotated log files as well.
-t Prepend timestamps to the lines of data being read in
on the standard input.
-w file Write the contents of the standard input to this file.
Optional arguments:
logfile1 The log files or directories to view. If a
directory is given, all of the files in the
directory will be loaded.
Examples:
To load and follow the syslog file:
$ lnav -s
To load all of the files in /var/log:
$ lnav /var/log
To watch the output of make with timestamps prepended:
$ make 2>&1 | lnav -t
Version: lnav 0.6.2
Основные сценарии использования
- Просмотр логов из /var/log (все типы последних логов):
sudo lnav- Просмотр логов из конкретной директории, например Apache2:
sudo lnav /var/log/apache2- Подключение старых (ротированных) логов:
sudo lnav -r- Подключить метки времени при чтении stdin (полезно при просмотре вывода других команд):
sudo lnav -t- Загрузить все последние типы логов:
sudo lnav -a(Во всех примерах код блоки приведены без изменений — LNAV ожидает те же опции.)
Горячие клавиши и представления
Запустите lnav (sudo или под пользователем, который может читать нужные логи):
sudo lnavИз основных клавиш:
- q — выйти.
- ? — справка внутри интерфейса.
- i — переключиться в гистограмму (histogram) по времени сообщений.
- p — показать результат парсера (parser view) и распознанные поля.
- m — пометить/отметить строки или файлы.
Примеры интерфейса (изображения сохранены в оригинальном каталоге):




Важно: изображения показывают интерфейс в терминале; они иллюстрируют переключения между представлениями.
Быстрая методика анализа инцидента с LNAV (mini‑SOP)
- Откройте все релевантные логи вместе:
sudo lnav /var/log/foo /var/log/bar- Используйте i для просмотра гистограммы и найдите аномалии по временным всплескам.
- Нажмите p, чтобы увидеть распарсенные поля (таймстемпы, уровни, PID, и т.д.).
- Примените поиск и фильтры (наберите текст — поиск работает в реальном времени).
- Выполните SQL‑запросы для агрегации (пример ниже).
- Отметьте важные строки m и экспортируйте результат при необходимости.
Пример простого SQL‑запроса (в интерфейсе LNAV, вводится в командной строке):
SELECT log_time, level, message FROM log WHERE level = 'ERROR' ORDER BY log_time DESC LIMIT 50;Чек‑лист по ролям
Администратор систем:
- Убедиться, что у пользователя есть права на чтение нужных логов.
- Запустить lnav с sudo для системных логов.
- Использовать -r для старых записей.
Разработчик приложений:
- Открыть директорию приложения (например, /var/log/myapp).
- Искать по уникальным маркерам (request_id, trace_id) через поиск.
- Экспортировать отфильтрованные записи для пост‑обработки.
Операционный инженер (on‑call):
- Быстро переключиться на гистограмму и найти всплески.
- Фильтровать по ERROR/WARN и оценить масштаб.
- Пометить критичные строки и создать тикет с выдержкой.
Когда LNAV не подходит
- Для очень больших лог‑хранилищ (типа terabytes) лучше использовать централизованные решения (ELK/Graylog/Promtail+Loki) с индексацией и долгосрочным хранением.
- Для сложной корреляции между машинами в распределённой системе удобнее использовать распределённые трейсинг‑решения (Jaeger, Zipkin).
- Если требуется хранение и ролевой доступ к логам с аудитом — выбирайте специализированные системы.
Альтернативы
- grep/awk/sed + less — для простых быстрых проверок.
- multitail — мониторинг нескольких логов в реальном времени.
- ELK Stack (Elasticsearch, Logstash, Kibana) — для масштабных аналитики и визуализации.
- Grafana Loki — для лёгкой агрегации логов и интеграции с Grafana.
Ментальные модели для работы с логами
- Событие → Контекст → Сопоставление: найдите событие (error), соберите контекст (предыдущие 1–2 минуты), сопоставьте с другими логами по таймстемпу.
- От аномалии к гипотезе: гистограмма → выделение всплеска → фильтрация по уровню → проверка причин.
Критерии приёмки
- LNAV успешно открывает заданные логи (без ошибок доступа).
- Можно найти и пометить записи по ключевому слову.
- Гистограмма отражает временную картину активности.
- SQL‑запросы возвращают ожидаемые агрегаты.
Глоссарий (1‑строчно)
- Log: запись о событии в приложении/системе.
- Timestamp: временная метка события.
- Rotated log: старый файл лога, переименованный системой ротации.
- Parser: компонент, разбивающий лог на поля (time, level, message).
Заключение
LNAV — удобный инструмент «на каждый день» для инженеров и разработчиков. Он прост в установке, позволяет быстро находить и агрегировать события и отлично работает при локальном анализе логов. Для масштабного хранения и ретроспективного анализа имеет смысл комбинировать LNAV с централизованными решениями.
Если есть вопросы или нужен пример SQL‑запроса под вашу структуру логов — оставьте комментарий.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента