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.