Вышла новая версия программы для просмотра и анализа логов — 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)
AlexWriter Автор
04.10.2023 08:21+1DLT & SOME IP особенно порадовало
Спасибо, очень надеюсь chipmunk будет полезным иструментом для вас. Кстати мы добавили поддержку attachments для DLT. Так что если trace включает в себя какие-то файлы, они будут отображены на табе Attachments. Текстовые файлы и графические можно просмотреть прямо в chipmunk.
aleks_raiden
04.10.2023 08:21спасибо, крутой инструмент. Работал с финансовым логом, все инструменты самого крупного рынка самого крупного провайдера - как будто просто открыл заметки, все летало
ababo
04.10.2023 08:21Скажите, вы рассматривали возможность отказаться от Electron в пользу более современного Web-UI фреймворка, использующего системный движок рендеринга? Очень расстраивает размер app-bundle.
AlexWriter Автор
04.10.2023 08:21+3Конечно рассматривали, я даже в статье упомянул об этом - "не electron'ом единым"... На данный момент стабильной и удовлетворяющей нашим требованиям альтернативы electron'у я не вижу... могу ошибаться, конечно.
Дело же не только в том, чтобы браузер обернуть во что-то, дело же ещё в OS API... ну банально - системные диалоги, пуши и прочее. В 2021 мы, например, играли с https://tauri.app/... написан на rust, шустрый до безобразия, но базируется на webview, что не приемлемо с точки зрения производительности клиента (надо проверить, может что изменилось за 2 года). Так что пока мы остались на electron, но, как я уже отметил, ядро очень легко связать с любым клиентом и никакой прямо вот привязанности к electron команда не испытывает... просто сейчас он в наибольшей степени соответствует нашим требованиям.
Vinni37
04.10.2023 08:21Спасибо за хороший инструмент. Единсввенное не получилось завести под виндой выполнение консольных команд, к примеру ввожу "ping google.com -t" и сразу получаю сообщение что команда финишировала и никакого вывода, куда можно копать?
AlexWriter Автор
04.10.2023 08:21Спасибо за рапорт. Создал issue с высоким приоритетом. Проверим обязательно в самое ближайшее время.
AlexWriter Автор
04.10.2023 08:21Проверил на windows 11. Воспроизвести проблему не могу. Работает. Попросил коллегу проверить на windows 10, но это займёт какое-то время.
Если у вас есть возможность, присоединяйтесь к обсуждению на github, что бы дать немного больше дополнительной информации.
KommanderSER
DLT & SOME IP особенно порадовало