Рубрики
Uncategorized

Разработчики не должны тратить временные структурирующие журналы

Как разработчик, либо член команды DEVOPS, вы, несомненно, имели дело с журналами; Вероятно, вот … Теги с DevOps.

Как разработчик, либо член команды DEVOPS, вы, несомненно, имели дело с журналами; Вероятно, много и много грязных журналов. Это одна из первых вещей, которые мы все смотрят, пытаясь добраться до дна проблемы и определить корневую причину.

Большая проблема со всеми этими журналами заключается в том, что они неструктурированы и в омриаде форматов. В одиночестве Syslog у вас будут потенциально десятки различных генераторов журналов (процессов) соревнований для ведения журнала со своими собственными стилями префикса (форматы временем, выраженностью, представлением процесса/модуля/имен функций/объектов, заказа полей и т. Д.). И со сложными распределенными системами мы все строительство и ведение в настоящее время, проблема усиливается количеством микросервисов, использование пакетов с открытым исходным кодом и коммерческими товарами или коммунальными услугами, которые имеют свои собственные форматы ведения журнала.

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

Я уверен, что большинство всех нас имели дело с этими вопросами, и, вероятно, предприняли некоторые шаги для облегчения боли. Использование любого из популярных систем управления журналом на основе индекса может быть хорошим первым шагом. Они, безусловно, будут справиться со многими популярными журналами с открытым исходным кодом, и знают, как структурировать префиксную информацию для индексации и нормализации форматов Timestamp, например. Кроме того, вы, несомненно, создаете и должны поддерживать рисунки Regexes или Grok, чтобы обрабатывать некоторые из ваших пользовательских журналов приложений, особенно для «структуры» (и индекса) некоторых событий, которые вы предоставляете, как вам важно. Также вероятно, у вас не было времени, чтобы написать REGEXES для каждого элемента события и элемента данных во всей стеке (это было бы большую работу). И в конце дня вы все еще застряли с указателем.

Там может быть лучший подход … Войти, структурированное ведение журнала

Что если все ваши журнальные события были структурированы? Что делать, если каждое событие в Syslog, my-app.log и my-opensource.log были представлены как пары JSON или NAME? Вы бы сделали! Ну, не совсем. Давайте посмотрим на то, что это повлечет за собой.

Вам придется изменить каждое событие журнала в вашем продукте, чтобы использовать новый структурированный механизм ведения журнала. Скажи что-то вроде Siroupsen/logrus goalang/logrus или nlog для .net или apache log4net или, возможно, просто кататься самостоятельно.

Чтобы узнать, сколько работы, которая может быть, я проводил исследование трех 3-го вечеринок (3P), чтобы понять масштабы журнальных событий в каждом. Каждый тест захватил пример набора событий журнала из систем при тривиальной нагрузке только на несколько часов. Таким образом, данные, вероятно, будут представлены полной сферы усилий:

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

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

«Вы шутите, это смешно» «Это не происходит»

Хорошо, давайте предположим, что вы убедили своих инженеров, и все они не вышли. Теперь у вас есть этот красиво структурированный JSON и ваши файлы журнала теперь выглядят так:

Эта структура может быть немного грязной для ваших инженеров, чтобы иметь дело, если они используют утилиты, такие как GREP или текстовый редактор для просмотра данных RAW LOG. Но предположительно это будет намного проще справиться с вашей системой управления журналом, предполагая, что она обрабатывает JSON. Он должен сопоставить эти десятки тысяч полей в вашем индексе автоматически. Просто будьте в курсе возможного «сопоставления взрыва» теперь, когда вы пошли на все это усилие к структуре.

Как видите, усилия по преобразованию в структурированное ведение журнала являются существенными и продолжающимися и, вероятно, окажут некоторое влияние на сроки развития вашего продукта, когда вы предпринимаете эти усилия.

Далее в структурированной очереди легинга: программное обеспечение с открытым исходным кодом вы используете … А затем поставщики, чьи библиотеки вы используете … А потом ядро … И так далее.

Это довольно ясно, что это решение будет либо ограничено в его применении, либо в целом не стартера. Итак, то что?

Вот лучший способ, ничего не позволь мне объяснить …

На самом деле, возможно, имеет смысл просто показать вам то, что вы получаете с этим «ничего не делайте». То, что вы получаете, это полностью структурированная, масштабируемая аналитика «Журналы». Это так просто. В случае, если вы заинтересованы, мы используем неподременавливаемые машины, обучающиеся в структуре журналов и метрик. Каждая линия журнала схематизируется по типу события, с параметрами, захваченными в их собственные типизированные столбцы и оптимизированные для запроса.

Давайте посмотрим, что у нас в нашей базе данных после проглатывания того же события журнала, которое мы показали ранее. Это было сделано без необходимости делать какие-либо ручные структурирования. Эти журналы находятся на нашем находящемся на месте Atlassian Server. Мы структурировали весь корпус нашего Bitbucket, Collection, Jira и Syslog событий в 215 секунд.

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

И вот пара простых SQL-заявлений, осуществляющих эту структуру. Этот запрос показывает значения столбцов для всех экземпляров этого типа события:

И этот просто получает мин, максимальное и среднее время для всего набора данных:

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

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

(Опубликовано с разрешением автора стержень Bagg)

Оригинал: «https://dev.to/gdcohen/developers-shouldn-t-waste-time-structuring-logs-5goo»