Вышла новая версия программы для просмотра и анализа логов — 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 и иметь доступ к файлам также через домашний экран.
![](https://habrastorage.org/getpro/habr/upload_files/c64/50a/379/c6450a3797e3e0ca305f26c098368271.gif)
Графики
За счёт того, что все расчёты и применение «ужимающих» данные алгоритмов производятся в ядре (на территории rust), а клиент получает лишь необходимые порции данных, chipmunk стал значительно менее чувствителен к объёму данных на графиках. Конечно, gif анимация с 10 fps не может передать плавности работы рендера, поэтому настоятельно советую попробовать самостоятельно.
Как создать график?
Если вы создали условие поиска, то на графике вы увидите частоту совпадений в виде столбиков.
Для создания графика по значениям, вам нужно ввести регулярное выражение с группой (то есть обозначить искомые данные скобками), которая будет браться в качестве значения. Например, у вас в логах встречается запись вроде CPU=43,89%
. Используя регулярное выражение CPU=(\d{1,},\d{1,})
, вы сумеете построить график изменения CPU.
![](https://habrastorage.org/getpro/habr/upload_files/d53/8d2/1eb/d538d21eba373997ad12b45b3390b8a9.gif)
Крошки
Chipmunk v.3 обзавёлся новым режимом поиска/анализа — breadcrumbs (хлебные крошки). Суть до безобразия проста, но функция весьма полезна — chipmunk совмещает результаты поиска и основой контент файла/стрима. Таким образом вы легко можете видеть: что предшествовало ошибке (или какому-то событию) и что было после.
![](https://habrastorage.org/getpro/habr/upload_files/b96/850/bb3/b96850bb34ac0254c19868ba103686a2.gif)
Совмещение потоков
Появилась возможность совмещать потоки данных в одну сессию. Например, вам ничто не мешает запустить в рамках одной сессии пару консольных команд и видеть скомбинированный вывод (естественно цветами потоки будут разграничены для удобства восприятия источника).
Равным образом вы можете совместить консольную команду и, скажем, вывод из serialport. Единственное ограничение — парсер. Нельзя соединить DLT стрим и текстовый вывод.
![](https://habrastorage.org/getpro/habr/upload_files/d65/921/d74/d65921d74f8332d365cd6dc19af8cb7f.gif)
И раз уж я упомянул консольные команды, то само собой разумеющееся chipmunk позволять не только получать вывод, но и «бросать» данные в процесс, что справедливо и для других потоков, того же serialport.
Кроме того, мы «подвезли» и менеджер подключения к потоку, где можно изменить и парсер, и источник данных.
![](https://habrastorage.org/getpro/habr/upload_files/71f/726/ac1/71f726ac159aaeb49c9f8fbeb7f5a51e.gif)
Фильтры, графики, пресеты
Радикально обновилось и то, как chipmunk запоминает ваши поиски и графики. Если вы открыли файл с расширением *.log и создали пару фильтров, то при открытии нового файла с таким же расширением вам будет предложены ранее использованные фильтры. Это же касается и терминальных команд и потоков — программа запоминает какие фильтры и графики вы использовали для той или иной команды.
![](https://habrastorage.org/getpro/habr/upload_files/497/b53/9d8/497b539d83f0164ca9b61bd4f115cf1c.gif)
Пожалуй — это самые заметные изменения.
К сожалению некоторыми возможностями нам пришлось пожертвовать в первую очередь из-за ограниченности ресурсов. Так в v.3 не вошли:
возможность мерить время между строками
функция merge files по временной метке
комментирование логов
Возвращение данных функций вопрос времени, а то насколько это время будет коротким во многом зависит и от вашей обратной связи. Напомню, что проект до последнего байта open source. Поэтому я призываю вас заглянуть на страницу github и поставить звёздочку. Два года назад вы оставили нам ~200 звёзд и появился chipmunk v.3, благодаря вашей поддержке.
Поверьте, я ничуть не принижаю степени влияния этого банального действия.
Спасибо за ваше внимание и с радостью отвечу на вопросы в комментах, если таковые появятся.
Удачи, света, тепла и логов без сообщений об ошибках!