LINUX.ORG.RU

Nerdlog: быстрый TUI-просмотрщик логов с удалённых хостов с таймлайном

 , , ,

Nerdlog: быстрый TUI-просмотрщик логов с удалённых хостов с таймлайном

5

4

Терминальное приложение Nerdlog позволяет удобно просматривать логи с одного или сразу нескольких серверов Linux и FreeBSD. Поддерживает как обычные текстовые лог-файлы (например, /var/log/messages или /var/log/syslog), так и вывод journalctl.

Визуально отображает активность в виде интерактивной псевдографической таймлайн-гистограммы, аналогично таким инструментам, как Graylog, Kibana или Splunk.

Ключевые особенности:

  • Без центрального сервера: Nerdlog подключается по ssh к каждому хосту напрямую.
  • Минимум передаваемых данных: фильтрация и анализ логов выполняется на удаленных хостах, клиенту передаётся только результат для отображения: данные для гистограммы и последние логи из выбранного периода, с возможностью постраничной подгрузки. Данные от всех хостов объединяются и отображаются в одном интерфейсе.
  • Без установки на серверах: для фильтрации и анализа логов используется только стандартный набор GNU-утилит, присутствующих в большинстве современных Linux-дистрибутивов по умолчанию (bash, gawk, tail, head и др.)
  • Данные с удаленных хостов передаются в сжатом виде для экономии трафика.
  • Фокус на производительность: работает быстро даже с большими лог-файлами (более 1 GB) и с большим количеством серверов (регулярно использовался на кластере из 20+ хостов).

Первоначальный прототип был разработан еще в 2022г. как альтернатива Graylog, подробнее об истории возникновения можно прочитать на Хабре.

Программа написана на Go и распространяется на условиях BSD-2-Clause license.

>>> GitHub проекта



Проверено: CrX ()
Последнее исправление: hobbit (всего исправлений: 18)
Ответ на: комментарий от dimonomid

и собственный конфиг nerdlog: ~/.config/nerdlog/logstreams.yaml
yaml

В голос. Нахрена?

Но я согласен, что было бы хорошо реализовать это удобнее, с интерактивным запросом пароля sudo, если необходимо.

Не надо.

это обычно не только этот единственный файл, а два: /var/log/syslog.1 + /var/log/syslog. Или вообще может читаться не из файлов, а из journalctl. В целом, как общий термин - поток логов (logstream).

Вот это по моему мнению притянуто за уши, но это только по моему мнению по причине того, что я подобное привык называть LOG и без разницы из скольких файлегов оно берется или берется из выхлопов других утилит.

anc ★★★★★
()
Ответ на: комментарий от anc

и собственный конфиг nerdlog: ~/.config/nerdlog/logstreams.yaml

В голос. Нахрена?

Что именно? Собственный конфиг-файл? Если вопрос в этом - потому, что кроме этого yaml конфига, Nerdlog может читать логстримы только из ssh-конфига; а как мы знаем, в ssh конфиге не указать конкретные лог файлы, если нужно читать что-то отличного от дефолта (/var/log/messages, /var/log/syslog, или из journalctl).

Так что нужен был какой-то способ указать логстримы с хостами, портами, юзерами, и лог файлами (ну и другими опциями тоже, вообще-то; например вот там же можно указать, что логи надо читать с sudo).

Если у вас есть идея лучше, чем yaml-конфиг - напишите.

Но я согласен, что было бы хорошо реализовать это удобнее, с интерактивным запросом пароля sudo, если необходимо.

Не надо.

Ну вон человеку ведь надо было. Как всегда, конечно, переусложнять не нужно, но если уж чтение файлов логов на удаленных машинах - это основной use case, то поддерживать интерактивный sudo может иметь смысл. Не самая важная фича, конечно (поэтому и не реализовано, по крайней мере пока).

это обычно не только этот единственный файл, а два: /var/log/syslog.1 + /var/log/syslog. Или вообще может читаться не из файлов, а из journalctl. В целом, как общий термин - поток логов (logstream).

Вот это по моему мнению притянуто за уши, но это только по моему мнению по причине того, что я подобное привык называть LOG и без разницы из скольких файлегов оно берется или берется из выхлопов других утилит.

Ну как всегда, naming is hard. По-моему logstream лучше передает смысл, и достаточно кратко, но, конечно, не все с этим согласятся.

dimonomid
() автор топика
Последнее исправление: dimonomid (всего исправлений: 1)
Ответ на: комментарий от dimonomid

Nerdlog для соединения по ssh использует не внешнюю программу ssh, а почти-стандартную Go библиотеку ssh. Эта библиотека, к сожалению, не поддерживает чтение ssh конфига Я в пути!.

А вот это уже имхо комбайнерство. :(

anc ★★★★★
()
Ответ на: комментарий от mx__

Пример хорош тем, что привели конкретный! Я вот так сходу не могу вспомнить, когда у кого и для чего нужно было в конфиге что-то прописывать. :(

anc ★★★★★
()
Ответ на: комментарий от anc

Нет, нахрена YAML ?

Хотя я и не в восторге от того, что YAML кишит анти-фичами, но он остается одним из самых распространенных форматов конфигурации, поэтому и был выбран. Ну и сравнивая, например, с toml или json, я лично все равно выберу yaml для конфига.

Что посоветуете вместо этого?

dimonomid
() автор топика
Ответ на: комментарий от dimonomid

toml

Пришлось погуглить, что це за зверь. Выяснил, что я не знал, что оно так называется.

Что посоветуете вместо этого?

Скорее его вариант, оно привычное.

anc ★★★★★
()
Ответ на: комментарий от anc

Скорее его вариант, оно привычное.

Ну, на вкус и цвет…

Но добавить поддержку ~/.config/nerdlog/logstreams.toml несложно. Если реквест окажется популярным, можно сделать.

dimonomid
() автор топика
Ответ на: комментарий от iron

Для справки, поддержка внешнего ssh добавлена в 1.10.0: для ее активации, нужно запустить Nerdlog с флагом --set 'transport=ssh-bin'.

По плану этот режим станет дефолтным, но пока что оставляю opt-in, т.к. фича пока немного экспериментальная. В моих тестах работает ок, но подожду пока больше юзеров попробуют.

Буду благодарен, если попробуете в свободную минуту.

Для просмотра debug-информации (где также будет указана фактически выполненная команда ssh для конкретного хоста), можно использовать :conndebug

dimonomid
() автор топика
Последнее исправление: dimonomid (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.