Статистический контроль процессов

Хранение истории значений метрик

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

Но что, если мы опрашиваем десять метрик каждого из одной тысячи устройств с периодом в одну минуту и хотим иметь доступ к этой информации в течение десяти лет? Нам придётся хранить 50 миллиардов записей в базе данных! Более того, мы не заинтересованы в ежеминутной статистике пятилетней давности - для подобных данных нас интересует лишь среднее значение за каждый год. Платформа AggreGate имеет решение как раз для таких случаев.

AggreGate может хранить данные за длительный период в кольцевой базе данных (RRD). Модуль, отвечающий за сбор, хранение и обработку данных временных рядов называется модулем статистического управления процессами (SPC) или просто «Cтатистика».

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

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

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

Другие возможности, включенные в модуль статистики:

  • Автоматический расчёт значений (например, загрузка сетевого интерфейса)
  • Работа с накапливающими сумматорами и счётчиками
  • Отслеживание средних, минимальных и максимальных значений по минутам, часам, дням, неделям, месяцам и годам
  • Настраиваемая деградация точности для устаревших значений
  • Параллельное хранение данных вместе с «классическими» реляционными БД
Модуль статистического управления процессами (SPC)

Грануляция

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

Календарные дни в конкретном часовом поясе с учётом перехода на летнее время Утренние, дневные, вечерние и ночные часы каждого дня
Календарные месяцы с учётом високосных годов Гибкое рабочее расписание компании
Рабочие дни, выходные и праздники И другие более сложные сценарии дробления временных интервалов

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

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

  • Среднее, минимальное и максимальное значения
  • Сумма значений других результатов вычислений
  • Первое и последнее значения в указанном отрезке времени, а также их временные метки
  • Счётчики значений с разными состояниями («В сети», «Недоступен», «Выключен администратором» и т.д.)
  • Гранулированные метки, например, «Данные недоступны»
  • А также любые другие числовые, текстовые и бинарные данные, определённые пользователем
Модуль грануляции