Вышла новая версия программы для просмотра и анализа логов — Chipmunk v.3. Инструмент был полностью переработан с упором на производительность и переосмыслен с акцентом на простоту и удобство использования. Под капотом краткое описание нововведений и возможностей.


С момента последнего changelog на хабре прошло без малого два с половиной года. Справедливости ради, Chipmunk v.3 вышла ещё в сентябре 2022, но задержалась в альфе на год, дабы отполироваться и прийти к той производительности, которую мы хотели видеть, а не ту, что считали «приемлемой».

Наша наиболее широко представленная группа пользователей — это разработчики из мира embedded и особенно automotive, где приходится иметь дело с весьма специфичными форматами данных и, как правило, их огромным объёмом. Скажем какой-нибудь DLT (Diagnostic Log and Trace) файл размером под 10 Гб — дело в индустрии обычное и нужен инструмент, позволяющий быстро открыть и быстро анализировать.

Меж тем, я уверен, chipmunk будет весьма полезным средством и в повседневных нуждах по ряду тривиальных причин:

  • без труда читает файлы любых размеров. 1 Гб, 5Гб, да хоть 20.

  • быстро ищет по файлу как регулярки, так и простые совпадения.

  • запоминает условия поисков и связывает их не только с конкретным файлом, но и со схожими форматами.

  • умеет строить графики по регулярным выражениями и быстро по ним «бегать» без оглядки на объём данных.

  • работает с консолью/терминалом, знает что такое serialport, TCP, UPD.

  • умеет соединять данные из многих источников в одну сессию.

И это, конечно, лишь малая часть того, что делает chipmunk. Решительно не хочется вас утомлять длинным списком базовых функций и того, что появилось в v.3. Поэтому я пробегу по наиболее ярким, или, если хотите, заметным нововведениям.

Под капотом все изменилось радикально

Если в chipmunk v.2 мы лишь «примерялись» к возможностям rust и использовали его для написания небольшого модуля по работе с самыми «дорогими» задачами, то в версии нового поколения ядро полностью написано с нуля на rust. Ни electron, в который «оборачивается» ядро, ни уж тем более клиент — не отвечают больше за обработку/хранение данных — всё крутится на rust’e.

Фактически это означает, что ядро отделимо и к нему можно прикрутить по сути любой front-end — не electron’ом единым в конце концов.

Домашний экран

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

Сессия в chipmunk — это не только открытие файла, а это и консольная команда, и подключение по сети, и подключение к порту — это вообще любое ваше действие. И всё это chipmunk запоминает и отображает вам на домашнем экране или же в выпадающем списке на Ctrl/Command + P.

Кроме этого если вы храните логи в нескольких папках, вы можете добавить их в favorites places и иметь доступ к файлам также через домашний экран.

Графики

За счёт того, что все расчёты и применение «ужимающих» данные алгоритмов производятся в ядре (на территории rust), а клиент получает лишь необходимые порции данных, chipmunk стал значительно менее чувствителен к объёму данных на графиках. Конечно, gif анимация с 10 fps не может передать плавности работы рендера, поэтому настоятельно советую попробовать самостоятельно.

Как создать график?

Если вы создали условие поиска, то на графике вы увидите частоту совпадений в виде столбиков.

Для создания графика по значениям, вам нужно ввести регулярное выражение с группой (то есть обозначить искомые данные скобками), которая будет браться в качестве значения. Например, у вас в логах встречается запись вроде CPU=43,89%. Используя регулярное выражение CPU=(\d{1,},\d{1,}), вы сумеете построить график изменения CPU.

Крошки

Chipmunk v.3 обзавёлся новым режимом поиска/анализа — breadcrumbs (хлебные крошки). Суть до безобразия проста, но функция весьма полезна — chipmunk совмещает результаты поиска и основой контент файла/стрима. Таким образом вы легко можете видеть: что предшествовало ошибке (или какому-то событию) и что было после.

Совмещение потоков

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

Равным образом вы можете совместить консольную команду и, скажем, вывод из serialport. Единственное ограничение — парсер. Нельзя соединить DLT стрим и текстовый вывод.

И раз уж я упомянул консольные команды, то само собой разумеющееся chipmunk позволять не только получать вывод, но и «бросать» данные в процесс, что справедливо и для других потоков, того же serialport.

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

Фильтры, графики, пресеты

Радикально обновилось и то, как chipmunk запоминает ваши поиски и графики. Если вы открыли файл с расширением *.log и создали пару фильтров, то при открытии нового файла с таким же расширением вам будет предложены ранее использованные фильтры. Это же касается и терминальных команд и потоков — программа запоминает какие фильтры и графики вы использовали для той или иной команды.

Пожалуй — это самые заметные изменения.

К сожалению некоторыми возможностями нам пришлось пожертвовать в первую очередь из-за ограниченности ресурсов. Так в v.3 не вошли:

  • возможность мерить время между строками

  • функция merge files по временной метке

  • комментирование логов

Возвращение данных функций вопрос времени, а то насколько это время будет коротким во многом зависит и от вашей обратной связи. Напомню, что проект до последнего байта open source. Поэтому я призываю вас заглянуть на страницу github и поставить звёздочку. Два года назад вы оставили нам ~200 звёзд и появился chipmunk v.3, благодаря вашей поддержке.

Поверьте, я ничуть не принижаю степени влияния этого банального действия.

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

Удачи, света, тепла и логов без сообщений об ошибках!

Комментарии (10)


  1. KommanderSER
    04.10.2023 08:21

    DLT & SOME IP особенно порадовало


  1. AlexWriter Автор
    04.10.2023 08:21
    +1

    DLT & SOME IP особенно порадовало

    Спасибо, очень надеюсь chipmunk будет полезным иструментом для вас. Кстати мы добавили поддержку attachments для DLT. Так что если trace включает в себя какие-то файлы, они будут отображены на табе Attachments. Текстовые файлы и графические можно просмотреть прямо в chipmunk.


    1. KommanderSER
      04.10.2023 08:21
      +1

      заметил, просто улёт


  1. aleks_raiden
    04.10.2023 08:21

    спасибо, крутой инструмент. Работал с финансовым логом, все инструменты самого крупного рынка самого крупного провайдера - как будто просто открыл заметки, все летало


    1. AlexWriter Автор
      04.10.2023 08:21

      спасибо!


  1. ababo
    04.10.2023 08:21

    Скажите, вы рассматривали возможность отказаться от Electron в пользу более современного Web-UI фреймворка, использующего системный движок рендеринга? Очень расстраивает размер app-bundle.


    1. AlexWriter Автор
      04.10.2023 08:21
      +3

      Конечно рассматривали, я даже в статье упомянул об этом - "не electron'ом единым"... На данный момент стабильной и удовлетворяющей нашим требованиям альтернативы electron'у я не вижу... могу ошибаться, конечно.
      Дело же не только в том, чтобы браузер обернуть во что-то, дело же ещё в OS API... ну банально - системные диалоги, пуши и прочее. В 2021 мы, например, играли с https://tauri.app/... написан на rust, шустрый до безобразия, но базируется на webview, что не приемлемо с точки зрения производительности клиента (надо проверить, может что изменилось за 2 года). Так что пока мы остались на electron, но, как я уже отметил, ядро очень легко связать с любым клиентом и никакой прямо вот привязанности к electron команда не испытывает... просто сейчас он в наибольшей степени соответствует нашим требованиям.


  1. Vinni37
    04.10.2023 08:21

    Спасибо за хороший инструмент. Единсввенное не получилось завести под виндой выполнение консольных команд, к примеру ввожу "ping google.com -t" и сразу получаю сообщение что команда финишировала и никакого вывода, куда можно копать?


    1. AlexWriter Автор
      04.10.2023 08:21

      Спасибо за рапорт. Создал issue с высоким приоритетом. Проверим обязательно в самое ближайшее время.


    1. AlexWriter Автор
      04.10.2023 08:21

      Проверил на windows 11. Воспроизвести проблему не могу. Работает. Попросил коллегу проверить на windows 10, но это займёт какое-то время.
      Если у вас есть возможность, присоединяйтесь к обсуждению на github, что бы дать немного больше дополнительной информации.