Перейти к основному содержимому
Перейти к основному содержимому

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:

к сведению

Шаблоны должны быть строго упорядочены:

  1. Шаблоны без function или retention.
  2. Шаблоны с обеими function и retention.
  3. Шаблон 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 для более простого описания метрики в формате 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. Среднее значение рассчитывается неточно, как среднее из средних.

Пример конфигурации без типов правил

Пример конфигурации с типами правил

примечание

Агрегация данных выполняется во время слияний. Обычно для старых партиций слияния не запускаются, поэтому для агрегации необходимо инициировать незапланированное слияние с помощью optimize. Также можно использовать дополнительные инструменты, например graphite-ch-optimizer.