GraphiteMergeTree. Этот движок уменьшает объем хранимых данных и повышает эффективность запросов Graphite.
Этот движок наследует свойства MergeTree.
Создание таблицы
-
Имя метрики (Graphite sensor). Тип данных:
String. -
Время измерения метрики. Тип данных:
DateTime. -
Значение метрики. Тип данных:
Float64. - Версия метрики. Тип данных: любой числовой тип (ClickHouse сохраняет строки с наибольшей версией или последнюю записанную строку, если версии совпадают. Остальные строки удаляются при слиянии частей данных).
config_section— имя секции в файле конфигурации, где заданы правила rollup.
GraphiteMergeTree требуются те же секции, что и при создании таблицы MergeTree.
Конфигурация rollup
- required-columns
- patterns
Обязательные столбцы
path_column_name
path_column_name — Имя столбца, в котором хранится имя метрики (Graphite sensor). Значение по умолчанию: Path.
time_column_name
time_column_name — Имя столбца, в котором хранится время измерения метрики. Значение по умолчанию: Time.
value_column_name
value_column_name — имя столбца, в котором хранится значение метрики на момент времени, заданный в time_column_name. Значение по умолчанию: Value.
version_column_name
version_column_name — имя столбца, в котором хранится версия метрики. Значение по умолчанию: Timestamp.
Шаблоны
patterns:
pattern. Каждая секция pattern (включая default) может содержать параметр function для агрегации, параметры retention или и то, и другое. Если имя метрики соответствует regexp, применяются правила из секции pattern (или секций); в противном случае используются правила из секции default.
Поля для секций pattern и default:
rule_type- тип правила. Он применяется только к определённому типу метрик. Движок использует его, чтобы разделять обычные метрики и метрики с тегами. Необязательный параметр. Значение по умолчанию:all. Он не нужен, если производительность не критична или используется только один тип метрик, например обычные метрики. По умолчанию создаётся только один набор правил. В противном случае, если определён любой из специальных типов, создаются два разных набора. Один для обычных метрик (root.branch.leaf) и один для метрик с тегами (root.branch.leaf;tag1=value1). Правила по умолчанию в итоге попадают в оба набора. Допустимые значения:all(по умолчанию) - универсальное правило, используется, когдаrule_typeне указан.plain- правило для обычных метрик. Полеregexpобрабатывается как регулярное выражение.tagged- правило для метрик с тегами (метрики хранятся в БД в форматеsomeName?tag1=value1&tag2=value2&tag3=value3). Регулярное выражение должно быть отсортировано по именам тегов; первым тегом должен быть__name__, если он есть. Полеregexpобрабатывается как регулярное выражение.tag_list- правило для метрик с тегами, простой DSL для более удобного описания метрики в формате Graphite:someName;tag1=value1;tag2=value2,someNameилиtag1=value1;tag2=value2. Полеregexpпреобразуется в правилоtagged. Сортировка по именам тегов не требуется, это будет сделано автоматически. Значение тега (но не имя) можно задать как регулярное выражение, напримерenv=(dev|staging).
regexp– Шаблон регулярного выражения для имени метрики (обычный или DSL).age– Минимальный возраст данных в секундах.precision– Насколько точно определять возраст данных в секундах. Должен быть делителем 86400 (количество секунд в сутках).function– Имя агрегирующей функции, применяемой к данным, возраст которых попадает в диапазон[age, age + precision]. Допустимые функции: min / max / any / avg. Среднее вычисляется неточно, как среднее от средних.
Пример конфигурации без типов правил
Пример конфигурации с типами правил
rollup данных выполняется во время слияний. Обычно для старых партиций слияния не запускаются, поэтому для rollup нужно принудительно запустить внеплановое слияние с помощью optimize. Либо использовать дополнительные инструменты, например graphite-ch-optimizer.