Основы мониторинга и сбора метрик

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

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

Что такое метрики, мониторинг и система оповещений?

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

Что такое метрики и зачем их собирать?

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

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

Для сбора других метрик – особенно это касается ваших собственных приложений — вам может потребоваться добавить код или интерфейсы.

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

Что такое мониторинг?

Метрики представляют данные о вашей системе, а мониторинг – это процесс сбора, агрегирования и анализа этих данных для улучшения понимания характеристик и поведения компонентов системы. Данные из разных точек среды собираются системой мониторинга, которая отвечает за хранение, агрегацию, визуализацию данных и автоматические реагирует на изменения, когда значения соответствует заданным условиям.

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

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

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

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

Что такое система оповещений?

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

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

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

Основная цель системы оповещений – это все же привлечь внимание человека к текущему состоянию системы. Предупреждение должно содержать информацию о том, что пошло не так и где найти дополнительную информацию. Затем пользователь, отвечающий на предупреждение, может использовать систему мониторинга и связанные с ней инструменты (например, логи) для изучения причины проблемы и ее устранения.

Какие данные нужно отслеживать?

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

Метрики хоста

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

  • CPU
  • Память
  • Дисковое пространство
  • Процессы

Эти метрики определяют факторы, которые могут повлиять на работоспособность одного компьютера.

Метрики приложения

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

  • Частота ошибок
  • Ошибки сервиса и перезагрузки
  • Производительность и задержка ответов
  • Использование ресурсов

Эти показатели помогают определить, насколько правильно и эффективно работает приложение.

Метрики сети и подключений

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

  • Возможность установления связи
  • Коэффициенты ошибок и потери пакетов
  • Латентность сети
  • Использование полосы пропускания

Мониторинг сети поможет улучшить доступность и оперативность ваших внутренних и внешних сервисов.

Метрики пула серверов

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

  • Использование ресурсов пула
  • Индикаторы масштабирования
  • Отказавшие хосты

Сбор данных о пуле серверов важен для понимания реальных возможностей обработки нагрузки и реагирования на изменения.

Метрики внешних зависимостей

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

  • Состояние и доступность сервиса
  • Частота успешных операций и ошибок
  • Эксплуатационные расходы
  • Истощение ресурсов

Есть много других типов метрик, которые полезно собирать. Сбор важной информации на разных уровнях поможет определить метрики, наиболее полезные для прогнозирования или выявления проблем.

Факторы, влияющие на мониторинг

В идеале вы должны отслеживать все данные, связанные с вашими системами. Однако есть много причин, почему это невозможно или даже нежелательно.

Ниже перечислены факторы, которые могут повлиять на список отслеживаемых метрик:

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

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

Важные качества метрик, мониторинга и системы оповещений

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

Независимость от большинства других инфраструктур

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

Надежность

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

Простые и удобные отчеты

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

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

Эффективная стратегия поддержки истории

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

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

Взаимодействие с другими ресурсами

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

Простота добавления новой метрики или инфраструктуры

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

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

Гибкая и производительная система оповещений

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

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

Основные термины

  • Наблюдаемость – это общий термин для описания процессов и методов, связанных с повышением осведомленности и видимости в системах (этот термин довольно размыт). Наблюдаемость может включать мониторинг, метрики, визуализацию, отслеживание и анализ логов.
  • Латентность – это интервал времени, необходимый для завершения действия. В зависимости от компонента это может быть время обработки или ответа на запрос.
  • Пропускная способность представляет собой максимальную скорость обработки или обхода, которую может обрабатывать система. Она может зависеть от программного обеспечения или проекта аппаратного обеспечения. Часто между теоретической пропускной способностью и практической наблюдаемой пропускной способностью есть разница.
  • Производительность – это общая мера эффективности системы. Это широкий термин, который часто охватывает такие факторы, как пропускная способность, латентность или потребление ресурсов.
  • Визуализация – это процесс презентации метрик в визуально удобном формате (графике, диаграмме и т.п.), что позволяет быстро и интуитивно интерпретировать данные.
  • Агрегация логов – это процесс компиляции, организации и индексирования логов для простоты управления, поиска и анализа. В контексте мониторинга агрегация логов помогает определить ошибки и их источники.
  • Точка данных – это одно измерение одной метрики.
  • Набор данных представляет собой набор точек данных той или иной метрики.
  • Единица измерения – это контекст измеренного значения. Единица измерения определяет величину, объем или количество измерений и позволяет сравнивать полученные данные.
  • Процентная единица измерения – это единица, которая принимается как часть конечного целого. Процентная единица показывает, сколько значение занимает от общей возможной суммы.
  • Временные ряды – это ряд точек данных, которые представляют изменения во времени. Большинство показателей лучше всего представляются временными рядами, поскольку отдельные точки данных часто отражают значение только в определенное время.
  • Частота выборки – это измерение того, как часто создается репрезентативная точка данных (в отличие от непрерывного сбора). Высокая частота выборки более точно отражает отслеживаемую метрику, но требует больше ресурсов для обработки дополнительных точек данных.
  • Разрешение – это плотность точек данных, составляющих набор данных. Наборы с более высоким разрешением за один и тот же временной интервал показывают более подробные данные о метрике.
  • Инструментация – это способность отслеживать поведение и производительность программного обеспечения. Она достигается путем добавления в программное обеспечение кода и конфигурации для вывода данных, которые затем могут быть использованы системой мониторинга.
  • Эффект наблюдателя – это воздействие самой системы мониторинга на наблюдаемые метрики. Поскольку мониторинг использует ресурсы, воздействие системы мониторинга будет влиять на производительность и полученные значения. Системы мониторинга стремятся избегать сбора ненужных данных для минимизации этого воздействия.
  • Порог – это граница между допустимыми и неприемлемыми значениями, которые вызывают предупреждение. Часто предупреждения срабатывают, когда метрика превышает пороговое значение в течение определенного периода времени (чтобы избежать отправки предупреждений о временных всплесках трафика).
  • Квантиль – это точка разделения, используемая для разбиения набора данных на отдельные группы на основе их значений. Квантили используются для деления значений на «корзины», которые представляют сегменты данных. Часто это используется для разделения общих и критичных значений.
  • Тенденция – это общее направление, которое обозначает тот или иной набор данных. Тенденции более надежны, чем одиночные значения, при определении общего состояния отслеживаемого компонента.
  • Мониторинг белого ящика – это мониторинг, который зависит от доступа к внутреннему состоянию измеряемых компонентов. Мониторинг белого ящика подробно описать состояния системы и полезен для выявления причин проблем.
  • Мониторинг черного ящика – это мониторинг, который наблюдает за внешним состоянием системы или компонента, отслеживая только его входы, выходы и поведение. Этот тип мониторинга может быть тесно связан с опытом пользователя в системе, но менее полезен при поиске источников проблем.