Рубрики
Uncategorized

Управление журналами все еще является лучшим подходом?

Раскрытие — я работаю в зевия. Часть нашего продукта делает то, что делают большинство менеджеров журнала: журналы агрегатов … Tagged с DevOps, Kubernetes.

Раскрытие — я работаю на Зебриум Анкет Часть нашего продукта делает то, что делают большинство менеджеров журнала: журналы агрегатов делают их доступными для поиска, позволяет фильтрации, обеспечивает легкую навигацию и позволяет создавать правила оповещения. Так зачем писать этот блог? Поскольку в современном облачном нативном мире (микросервисы, Kubernetes, распределенные приложения, быстрое развертывание, тестирование в производстве и т. Д.) В то время как полезные менеджеры журналов могут быть погрузкой, когда речь идет о обнаружении и отслеживании основной причины инцидентов программного обеспечения.

Быстрая история

При устранении проблем с программным обеспечением, инженеры навсегда охотились через журналы, чтобы найти первопричину.

Раньше это делалось вручную, написав сценарии Perl или используя такие нативные инструменты, как VI, GREP, SED, AWK и т. Д. Это изменилось в начале 2000 -х годов, когда на сцене появились менеджеры журналов, что делает этот процесс более плавным, быстрее и масштабируемым. Splunk, первый коммерческий продукт, который появился, был удачно назван «Google для файлов журналов».

С тех пор инструменты управления журналами пролиферировали сочетанием инструментов с открытым исходным кодом, таких как эластичный стек (часто называемый стеком Elk, короткие для Elasticsearch, Logstash и Kibana), и коммерческие продукты, такие как Sumologic. Сегодня они соперничают за лидерство в таких измерениях, как стоимость, масштабируемость и скорость поиска, но все они все еще основаны на фундаментальной идее Упрощает поиск журналов Анкет

Поиск все еще правильная парадигма?

Устранение неполадок и поиска первопричины требует терпения, мастерства, опыта и интуиции. С достаточным временем квалифицированный оператор обычно может определить основную причину. Процесс обычно начинается с поиска ключевых слов, таких как ошибка, критическая, прерванная, паника и т. Д. А затем продолжается с путешествием итеративных поисков, которые сужают вещи до коренной причины.

» Я не знаю, что ищу, но я знаю, когда найду это! «

Но некоторые проблемы не проявляются через очевидные события жестки по ошибке, а некоторые неуловимы, потому что они прерывисты и трудно охарактеризовать и т. Д. С чего ты вообще начинаешь, когда все, что ты знаешь, это это пользователь сказал: «Мой экран просто замерз»?

Сложность и масштаб ухудшают ситуацию

Когда Splunk был основан в 2003 году, все было намного проще: приложения были монолитными, в основном развернутые в Prem, а объемы журнала были относительно небольшими (меньше файлов журнала с меньшим количеством строк на файл). Когда что -то пошло не так, это обычно повлияло бы на одного клиента за раз.

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

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

Анализ, чтобы получить полезную нагрузку

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

Это даже верно для журналов, которые соответствуют таким стандартам, как Syslog RFC 5424 Анкет Он определяет, что линия журнала должна иметь структурированные компоненты, такие как метка времени, серьезность, идентификатор процесса и т. Д. Но то, что часто является наиболее важной частью линии журнала-ее полезной нагрузки-вообще не имеет структуры (от RFC »,« часть MSG содержит сообщение о свободной форме, которое предоставляет информацию о событии »). Даже недавняя тенденция структурирования журналов в JSON или XML часто страдает от той же проблемы, где похоронены в чисто структурированной Blob, расположенную ту же старую полезную нагрузку в одном неструктурированном поле!

Введите анализатор …

Допустим, очень важно получить определенную информацию внутри строк журнала, чтобы решить проблему. Например. Вы хотите сравнить количество времени, которое «время ожидания» статуса произошло во всех различных случаях сервиса для такого события, как это:

May 27 11:56:11 host-47 myservice[24112]: Service instance X completed with status Y

Вам нужно будет проанализировать поля X и Y. В прошлом вы бы написали сценарий и создали обычные выражения (regex) с использованием grep, sed или awk. Сегодня каждый инструмент управления журналами предоставляет свой собственный механизм для анализа конкретных полей. Например, logstash с открытым исходным кодом Грок плагин фильтр Анкет К сожалению, требуется много времени и усилий, чтобы построить и поддерживать эти хрупкие выражения анализа. Тем более, что события журнала меняются в разных версиях программного обеспечения.

Помогает ли к поиску автоматизации управляющие журнала?

Автоматизация — это то, что выделяет лучшие команды DevOps. Google посвящает целую главу автоматизации в их знаменитом SRE Book Анкет Один из заголовков в этой главе, как известно, гласит:

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

Вы не можете автоматизировать неизвестные неизвестные

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

Есть ли способ лучше?

Идея создания инструмента, который агрегирует и делает ваши журналы, была революционной, и менеджеры журналов оказались полезными и лучше, чем альтернатива написания сценариев и строительства трубопроводов для сбора и управления журналами. Но то, что сработало хорошо почти два десятилетия назад («Google for For for Files») не поспешило на сложности сегодняшнего дня. Ручной процесс поиска неясной, ранее неизвестной неудачи среди сотен потоков журнала может быть чрезвычайно дорогостоящим.

Мы считаем, что необходим принципиально иной подход-тот, который основан на машинном обучении, а не на поиске человека. Это может показаться надуманным, но, несмотря на сложность современных приложений, программное обеспечение все еще ломается фундаментальными способами, которые видны как изменения в журналах. Точно так же, как квалифицированные инженеры DevOps искусны в поиске этих моделей, модели машинного обучения могут быть обучены делать то же самое. И машинное обучение, в отличие от людей, может масштабироваться со сложностью. Если вы заинтересованы в том, чтобы узнать больше, прочитайте наш блог: Будущее мониторинга является автономным Анкет

Написано: Гэвин Коэн

Оригинал: «https://dev.to/gdcohen/is-log-management-still-the-best-approach-3keh»