GraphiteMergeTree
Этот движок предназначен для сгущения и агрегации/усреднения (rollup) данных Graphite. Он может быть полезен разработчикам, которые хотят использовать ClickHouse в качестве хранилища данных для Graphite.
Вы можете использовать любой движок таблиц ClickHouse для хранения данных Graphite, если вам не нужен rollup, но если вам нужен rollup, используйте GraphiteMergeTree
. Движок снижает объем хранения и увеличивает эффективность запросов из Graphite.
Движок наследует свойства от MergeTree.
Создание таблицы
Смотрите подробное описание запроса CREATE TABLE.
Таблица для данных Graphite должна иметь следующие колонки для следующих данных:
-
Имя метрики (датчик Graphite). Тип данных:
String
. -
Время измерения метрики. Тип данных:
DateTime
. -
Значение метрики. Тип данных:
Float64
. -
Версия метрики. Тип данных: любой числовой (ClickHouse сохраняет строки с наивысшей версией или последней записанной, если версии одинаковы. Другие строки удаляются во время слияния частей данных).
Имена этих колонок должны быть заданы в конфигурации rollup.
Параметры GraphiteMergeTree
config_section
— Имя раздела в файле конфигурации, где установлены правила rollup.
Клаузы запросов
При создании таблицы GraphiteMergeTree
необходимы те же клаузулы, что и при создании таблицы MergeTree
.
Устаревший метод создания таблицы
Не используйте этот метод в новых проектах и, если возможно, переключите старые проекты на описанный выше метод.
Все параметры, кроме config_section
, имеют то же значение, что и в MergeTree
.
config_section
— Имя раздела в файле конфигурации, где установлены правила rollup.
Конфигурация Rollup
Настройки для rollup определяются параметром graphite_rollup в конфигурации сервера. Имя параметра может быть любым. Вы можете создать несколько конфигураций и использовать их для разных таблиц.
Структура конфигурации rollup:
required-columns patterns
Обязательные колонки
path_column_name
path_column_name
— Имя колонки, хранящей имя метрики (датчик Graphite). Значение по умолчанию: 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
:
Шаблоны должны быть строго упорядочены:
- Шаблоны без
function
илиretention
. - Шаблоны с обеими
function
иretention
. - Шаблон
default
.
При обработке строки ClickHouse проверяет правила в секциях 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 для упрощения описания метрики в формате graphitesomeName;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. Среднее значение рассчитывается неточно, как среднее из средних.
Пример конфигурации без типов правил
Пример конфигурации с типами правил
Агрегация данных выполняется во время слияний. Обычно для старых партиций слияния не запускаются, поэтому для агрегации необходимо инициировать внеочередное слияние с помощью optimize. Или использовать дополнительные инструменты, например graphite-ch-optimizer.