Автоматическое сглаживание шумных метрик для выявления тенденций в Datadog

Привет, Хабр! Представляю вашему вниманию перевод статьи «Auto-smooth noisy metrics to reveal trends» автора Yassine Benazzou.

image

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

Давайте рассмотрим несколько примеров, показывающих, как функция Auto Smoother может помочь вам получить больше информации из ваших графиков.

image

Вышеприведенные графики показывают одну и ту же метрику — простой CPU на одном из наших производственных кластеров — до (слева) и после (справа) применения функции Auto Smoother. Данная метрика часто колеблется между очень высокими и очень низкими значениями, что затрудняет просмотр тенденций использования CPU до тех пор, пока мы не применим функцию Auto Smoother. На обоих графиках мы видим, что пара узлов перестала работать около 11:20 утра. Но только сглаженный график дает понять, что после этого оставшиеся узлы в итоге сократили время своего простоя вдвое.

Функция Auto Smoother также поможет нам в выявлении тенденций в метриках, которые демонстрируют сезонность. На обоих графиках ниже показана средняя загрузка системы для каждого узла в приложении. Данная метрика демонстрирует циклическое поведение, причем пики происходят примерно каждые 20 минут.

image

На графике слева видно, что на двух хостах регулярно появляются пики, которые возвышаются над «спагетти», но трудно точно оценить, насколько высока нагрузка эти хостов по сравнению с другими хостами. Также трудно определить, существуют ли какие-либо неровности в этом циклическом поведении. При использовании функции Auto Smoother сразу становится очевидным то, что два хоста имеют примерно вдвое большую нагрузку по сравнению с другими хостами. Функция Auto Smoother также помогает выявлять неровности в нагрузке. Например, мы видим, что второй по величине загруженности узел (желтый) показал заметное снижение нагрузки примерно в 12:00.

Auto Smoother под колпаком


Наш Auto Smoother вдохновлен алгоритмом ASAP (автоматическое сглаживание для приоритизации внимания), разработанным Stanford’s Future Data Systems Research Group. Как и ASAP, наш алгоритм использует скользящее среднее значение для сглаживания временных рядов, автоматически выбирая оптимальный размер для окна скользящего среднего значения на основе двух свойств сглаженных временных рядов: шероховатости и коэффициента эксцесса (определения указаны ниже). Размер окна относится к количеству точек данных, которые будут использоваться для вычисления скользящего среднего значения, другими словами, больший размер окна приведет к большему сглаживанию.

Шероховатость — это измерение шумности временных рядов. Она определяется как среднеквадратичное отклонение первой разностной серии. Коэффициент эксцесса — это четвертый стандартизованный момент случайной величины. Он измеряет «хвостовость» или «отдаленность» распределения вероятностей временного ряда: метрика с большими хвостами в распределении вероятности будет иметь более высокий коэффициент эксцесса. Функция Auto Smoother использует это измерение для гарантии того, что сглаженный ряд сохранит крупномасштабную тенденцию первоначальных шумных временных рядов. Другими словами, это помогает избежать чрезмерное сглаживание алгоритма.

В сочетании, эти два измерения определяют целевую функцию, которую использует наш алгоритм Auto Smoother для расчета оптимального размера окна для скользящего среднего значения. Размер окна выбирается таким образом, чтобы скользящее среднее значение уменьшало шум или измерение шероховатости, гарантируя, что коэффициент эксцесса сглаженных данных останется достаточно высоким, чтобы пользователь мог обнаружить важные отклонения и тенденции во временных рядах.

Алгоритм, предназначенный для крупномасштабного мониторинга


Чтобы конкретно учитывать уровень колебаний, присутствующих во временных рядах, собранных из крупномасштабной инфраструктуры и приложений, наш алгоритм Auto Smoother оценивает шероховатость и коэффициент эксцесса отлично от ASAP. В нашем алгоритме также используется другая технология оптимизации, которая позволяет нам непрерывно сглаживать показатели и давать более быстрые результаты для данных, отображаемых на наших панелях мониторинга в реальном времени.

Преимущества функции Auto Smoother


По сравнению с другими традиционными функциями сглаживания, Datadog Auto Smoother имеет ряд преимуществ:

  • Она автоматически выбирает оптимальный размер окна, чтобы сгладить ваши временные ряды, а это означает, что вам не нужно перебирать различные параметры, прежде чем найти тот, который лучше всего подходит для ваших временных рядов. Например, следующие временные ряды демонстрируют некоторую сезонность. Функция Auto Smoother обнаруживает периодическое поведение и использует его для расчета идеального параметра размера окна для сглаживания:


image

  • Auto Smoother постоянно адаптирует окно сглаживания, основанное на шумности новых точек данных, поскольку они собираются в реальном времени. (Если новые собранные точки делают временные ряды слишком шумными, функция Auto Smoother изменит окно сглаживания соответственно.)
  • При изменении временного диапазона панели мониторинга, Auto Smoother автоматически адаптирует и заново выбирает лучший размер окна. На разных уровнях масштабирования, оптимальный размер окна может сильно различаться (например, увеличенный график часто требует гораздо большего сглаживания, чем уменьшенный график для тех же самых временных рядов).
  • Когда вы применяете Auto Smoother к нескольким временным рядам, используя группировку по запросу (например, avg by), тот же размер окна применяется во всех временных рядах, обеспечивая последовательное сглаживание для удобства сравнения и визуального осмотра хостов или других компонентов инфраструктуры:


image

Наша функция Auto Smoother также может сочетаться с другими алгоритмами, такими как обнаружение выбросов, чтобы помочь выделить важные отклонения в ваших метриках.

image

В этом примере мы применили алгоритм обнаружения выбросов к той же самой метрике простоя CPU, о которой говорилось в первом примере выше. Шум скрывает выбросы на графике слева, тогда как на графике справа Auto Smoother делает очевидным то, что два хоста (выделенные синим и фиолетовым) ведут себя значительно иначе, чем другие хосты, как было определено алгоритмом обнаружения выбросов.

Проведите тест драйв функции Auto Smoother


Чтобы использовать функцию Auto Smoother, просто нажмите кнопку + рядом с выражением в редакторе запросов графика временных рядов, чтобы открыть меню функций. Затем перейдите в раздел «Сглаживание», где вы найдете функцию Auto Smoother (autosmooth()):

image

Auto Smoother теперь доступен в Datadog, поэтому вы можете сразу же начать использовать его для уменьшения шума в визуализациях временных рядов. Если вы новичок в Datadog и хотите использовать этот алгоритм для извлечения ценных сигналов из данных шумных временных рядов, вы можете начать работу с 14-дневной бесплатной пробной версией.
Tags:
datadog, monitoring, auto-smooth, metrics, trends

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.