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

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

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

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

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

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

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

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

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

Грануляция

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

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

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

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

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