Утром, даже не сделав глотка кофе, вы открываете электронную почту и видите отчеты об ошибках чего-то, что работало вполне хорошо, не давало сбоев и особо вас не беспокоило.
Идей сразу ноль, подозрений не было, больших изменений в коде тоже не было — нужно смотреть логи.
И вы туда так давно не заходили, что файл с логами до 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 , уже через несколько секунд вы почувствуете легкое тепло и улучшение настроения от нашей благодарности за одобрение того, что мы делаем.
Для вас клик означает обратную связь и вдохновение для нас.
Спасибо.
Релизы
Другие ссылки- код
- быстрый старт для разработки плагинов
- документация
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
-
Проект Dropbox Открыт Для Публики
19 Oct, 24 -
Сбор И Анализ Логов Для Новичков
19 Oct, 24 -
Php-Дайджест № 129 (8–22 Апреля 2018 Г.)
19 Oct, 24 -
Разбор Формул С Помощью Функций
19 Oct, 24