Сумасшедшие Журналы

Утром, даже не сделав глотка кофе, вы открываете электронную почту и видите отчеты об ошибках чего-то, что работало вполне хорошо, не давало сбоев и особо вас не беспокоило.

Идей сразу ноль, подозрений не было, больших изменений в коде тоже не было — нужно смотреть логи.

И вы туда так давно не заходили, что файл с логами до 100 Мб.

или до 500 МБ.

Дерьмо! А может и до 10 ГБ (*).

И где-то среди 10 737 418 240 байт есть драгоценные подсказки, которые нам срочно нужно пробежаться, чтобы выяснить, что происходит, пока кофе уже остывает. А может к отчету прилагался архив с двумя сотнями файлов (скажем по 5 Мб) битых логов и их нужно как-то склеить, а потом смотреть, копать и думать.

Звучит знакомо? В общем, все мы так или иначе сталкиваемся с необходимостью анализа «следов жизнедеятельности» наших творений, и хорошо, если файл весит пару МБ, ведь открытие лога размером в 1 Гб с помощью блокнот, да еще и пытаться сделать поиск - весьма сомнительная задача.

Ниже под катом я расскажу об одном инструменте, который не имеет ограничений (**) на размер открываемых файлов, но имеет очень быстрый поиск.

Я также приглашу вас присоединиться к разработке.

И да, будет много интересных фотографий.

Так что, казалось бы, тривиальная задача — открытие логов и поиск — иногда может упираться в банальный размер файла.

Мелочь, открыть можно чем угодно, хоть тем же блокнотом или блокнотом++, но на Маках и Линуксах иногда проще просто кинуть все в консоль котом и сделать поиск.

Помимо всего прочего, вы можете использовать упомянутый блокнот++, атом, logExpert, sublime, голый vim, bbedit, glogg и т. д. Сразу скажу, что не все откроют 2 гигабайта, а некоторые из выживших, увы, сломаются.

вниз во время поиска.

И из всего вышеперечисленного, пожалуй, только Atom является по-настоящему кроссплатформенным, а иметь что-то одно очень хочется, когда вы вынуждены работать на нескольких платформах параллельно.

А уж сколько оперативной памяти некоторые люди будут потреблять для обработки хотя бы пары сотен мегабайт логов – это уже другая история.

Собственно, поэтому у нас есть инструмент «Бурундук», который создавался для узких задач, но быстро превратился в комплексное решение для анализа логов.

Ничего другого бурундук делать не умеет, его задачи сводятся к простым вещам:

  • открывать логи, не беспокоясь о размере файла;
  • ищите так, чтобы не пришлось ждать, а сразу увидеть результат;
  • запоминайте все свои поиски и бережно храните их до тех пор, пока они не понадобятся;
  • помогают визуально воспринимать информацию;
  • вести себя скромно по отношению к ОЗУ;
  • решайте другие, более узкие задачи, но всегда сводитесь к анализу логов.

Что ж, давайте обо всем по порядку.



Ресурсы

Бурундук ничего в оперативку не загружает, кроме того куска лога, который виден на экране (ну еще немного буферизации, но это мелочь).

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

Благодаря этому аппетит к оперативной памяти вполне разумен и не колеблется, а первый «экран» с содержимым файла показывается сразу (хотя индексация будет продолжаться в фоновом режиме).



Удобство и визуализация



Сумасшедшие журналы

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

Можно, например, посмотреть частоту совпадений в файле (чем выше полоска, тем больше совпадений во фрагменте файла).



Сумасшедшие журналы

Или можно указать группу в регулярном выражении и получить красивый график (в приведенном примере используется выражение Использование ЦП:\s+(\d+\.

\d+) ).

И теперь вы можете увидеть, где потребление процессора было аномальным и какую часть логов следует изучить более внимательно.



Сумасшедшие журналы

Помимо самого поиска, в закладки можно добавлять отдельные строки логов, которые всегда будут представлены в окне результатов поиска.

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



Объединение файлов

Для решения проблем, связанных с несколькими файлами, бурундук может объединять файлы в один (например, по дате последнего изменения файла).

Все что необходимо:

  • кинуть группу файлов в окно бурундука
  • если вам нужно отсортировать файлы по своему усмотрению
  • кроме того, можно выполнить поиск по всем файлам и, например, исключить те файлы, у которых нет совпадений по слову «ошибка» (ну зачем нам вообще идти туда, где все спокойно?)


Сумасшедшие журналы

В результате мы получим последовательность всех выбранных файлов в окне.

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



Сумасшедшие журналы

Обратите внимание на цветные метки слева от вывода — это метки файлов.

То есть вы видите не вывод одного файла за другим (конкатенация), а вывод всех файлов, отсортированных по времени (слияние).



Особые вещи

Если вы когда-либо сталкивались с DLT, то знаете, как сложно использовать DLTViewer. Хорошей новостью является то, что бурундук предоставляет альтернативу для открытия и анализа файлов DLT. Кроме того, он поддерживает потоковое соединение DLT.

Сумасшедшие журналы

Открыв файл DLT, вы сразу увидите сводную информацию о файле, включая список всех компонентов, что удобно, если вас интересует конкретный APID, а не весь журнал.



Кстати, о потоках

Из коробки с бурундуком идет простой плагин «Команды», который позволит вам запустить любую консольную команду и получить вывод в бурундуке с возможностью поиска по этому выводу.

Естественно, если у вас есть активный поиск (например, сохраненный фильтр), то данные результатов будут обновляться по мере обновления потока из вашей консольной команды.



Сумасшедшие журналы



Ах да, плагины

Их пока немного.

Этого действительно недостаточно.

Публичных всего 5 (тех, что общедоступны и доступны менеджеру плагинов), непубличных, даже не знаю, может, пару десятков.

Написать свой плагин очень легко (скажу так, для простой задачи).

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

А может даже декодировать на лету и отображать понятный текст на экране, а не A5 FF 13 EE. и т. д. Вообще есть два типа расширений: первые работают с рендером, то есть позволяют менять выходное представление: хотите столбцы - пожалуйста; Если вы хотите что-то декодировать на лету, вы можете это сделать; Если вы хотите вставить графику (например, иконки) - непонятно, зачем это нужно, но можно.

Другой тип плагинов (и более интересный) — это те, которые могут предоставлять данные (создавать потоки).

Например, хотите ли вы увидеть вывод последовательного порта? Не проблема: мы работаем над новым npm-проектом, включаем нашу любимую библиотеку для работы с портами, добавляем немного пользовательского интерфейса по своему вкусу, и теперь ваш плагин может отправлять данные в бурундук.

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

Если вам интересно, дайте знать в комментариях — я сделаю отдельный пост-руководство по созданию и публикации плагинов (кстати, для публикации не требуется регистрация).



Вместо заключения

Пожалуй, это все.

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

Моя цель — поделиться с вами еще одним инструментом для работы с логами, который может стать полезным подспорьем для решения многих проблем.

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

Хотите увидеть поддержку чего-то подобного? Создайте задачу и выберите «Запрос функции».

Нашли ошибку? Мы будем рады увидеть от вас баг-репорт с кратким (но достаточным) описанием проблемы.

Английский приветствуется, но русский не запрещен.

И конечно, поставив заветную звезду github , уже через несколько секунд вы почувствуете легкое тепло и улучшение настроения от нашей благодарности за одобрение того, что мы делаем.

Для вас клик означает обратную связь и вдохновение для нас.

Спасибо.

Релизы

Другие ссылки Разъяснение ( * ) за счет раздутых до неприличия логов (1 Гб <).

Don't rush to conclusions that software shouldn't generate so many logs. Must. For some situations, a file of 10-20 GB is quite normal. In embedded this happens all the time. ( ** ), конечно, ничто не безгранично.

А бурундук по-прежнему ограничен объемом свободного места на вашем диске.

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

Теги: #открытый исходный код #Визуализация данных #Rust #node.js #typescript #отладка #angular #Electron #trace #logs #dlt

Вместе с данным постом часто просматривают: