Статистический контроль процессов
Классические системы мониторинга хранят историю значений метрик в реляционной базе данных. Это хорошо работает, когда оборудование опрашивается с достаточно большими временными интервалами, старые события периодически очищаются, а количество устройств относительно невелико.
Но что, если мы опрашиваем десять метрик каждого из одной тысячи устройств с периодом в одну минуту и хотим иметь доступ к этой информации в течение десяти лет? Нам придётся хранить 50 миллиардов записей в базе данных! Более того, мы не заинтересованы в ежеминутной статистике пятилетней давности - для подобных данных нас интересует лишь среднее значение за каждый год. Платформа AggreGate имеет решение как раз для таких случаев.
AggreGate может хранить данные за длительный период в кольцевой базе данных (RRD). Модуль, отвечающий за сбор, хранение и обработку данных временных рядов называется модулем статистического управления процессами (SPC) или просто «Cтатистика».
Кольцевая база данных предназначена для хранения рядов данных, таких как пропускная способность сети, температура, загрузка процессора и другие. Данные хранятся в кольцевом буфере, при этом занимаемое ими место с течением времени остается неизменным.
Кольцевая база данных имеет два важных преимущества для хранения долгосрочных статистических данных:
- Небольшой и постоянный размер базы данных
- Очень быстрый доступ к историческим данным за любой период времени
Другие возможности, включенные в модуль статистики:
- Автоматический расчёт значений (например, загрузка сетевого интерфейса)
- Работа с накапливающими сумматорами и счётчиками
- Отслеживание средних, минимальных и максимальных значений по минутам, часам, дням, неделям, месяцам и годам
- Настраиваемая деградация точности для устаревших значений
- Параллельное хранение данных вместе с «классическими» реляционными БД
Грануляция
Модуль грануляции разработан для разделения непрерывного времени на дискретные секции (гранулы) для расчёта и хранения различных агрегированных значений в каждой грануле. Это похоже на хранение статистики в кольцевой БД, однако вместо сохранения интервалов фиксированной длины грануляция позволяет разбить их на любые временные промежутки:
Календарные дни в конкретном часовом поясе с учётом перехода на летнее время | Утренние, дневные, вечерние и ночные часы каждого дня |
Календарные месяцы с учётом високосных годов | Гибкое рабочее расписание компании |
Рабочие дни, выходные и праздники | И другие более сложные сценарии дробления временных интервалов |
У более высокой по сравнению с кольцевой БД гибкости модуля грануляции есть и обратная сторона, заключающаяся в меньшей скорости записи и чтения данных, а также более высоких требованиях к дисковому пространству.
Гранулы используют стандартное хранилище для сохранения любой выбранной пользователем информации за каждый отрезок времени. Ниже приведены несколько примеров:
- Среднее, минимальное и максимальное значения
- Сумма значений других результатов вычислений
- Первое и последнее значения в указанном отрезке времени, а также их временные метки
- Счётчики значений с разными состояниями («В сети», «Недоступен», «Выключен администратором» и т.д.)
- Гранулированные метки, например, «Данные недоступны»
- А также любые другие числовые, текстовые и бинарные данные, определённые пользователем