Как настроить управляемую базу ClickHouse с данными для Graphite




При развитии Яндекс.Облака мы, с одной стороны, наращиваем функциональность самой платформы, а с другой — следим, чтобы компоненты было несложно интегрировать с внешними продуктами. Graphite — пример ПО, лёгкость интеграции с которым является важным свойством баз данных Облака. Это библиотека с открытым кодом для хранения и визуализации метрик.

Graphite удобно настроить так, чтобы данные хранились в столбцовой аналитической базе ClickHouse. Специально для этого разработан один из множества движков — GraphiteMergeTree. Он лучше всего подходит для прореживания и агрегирования (либо усреднения) содержимого БД. Саму базу полезно разместить в Яндекс.Облаке через платформенный сервис Yandex Managed Service for ClickHouse. Тогда её не потребуется обслуживать и обновлять — все подобные функции сервис возьмёт на себя.

В этом посте мы опишем процесс настройки Yandex Managed Service for ClickHouse специально под Graphite.

1. Регистрация конфигурации rollup в ClickHouse
Создание конфигурации rollup в существующем кластере Managed Service for Clickhouse можно произвести через CLI или API.

CLI
Если вы выбрали интерфейс командной строки, подготовьте yaml-файл с описанием параметров rollup, например:
graphite-rollup.yaml:
          name: test_rollup
patterns:    
  - regexp: click_cost
    function: max
    retention:
      - age: 86400
        precision: 60

Указанные в файле параметры соответствуют конфигурации, описанной в документации.

Далее выполните команду, указав ID кластера ClickHouse и имя файла конфигурации, созданного на предыдущем шаге:
$ yc managed-clickhouse cluster add-graphite-rollup <CLUSTER_ID> --rollup-file-name graphite_rollup.yaml


API
Используйте метод update для кластера ClickHouse, передав в теле запроса требуемые параметры rollup:
"graphiteRollup": [
          {
            "name": "test_rollup",
            "patterns": [
              {
                "regexp": "click_cost",
                "function": "max",
                "retention": [
                  {
                    "age": "86400",
                    "precision": "60"
                  }
                ]
              }
            ]
          }
        ]


2. Создание таблицы на основе GraphiteMergeTree
Подключитесь к хосту ClickHouse и выполните запрос на создание таблицы на основе GraphiteMergeTree. В качестве параметра передайте имя секции rollup, описанной на предыдущем этапе. Вот пример:
CREATE TABLE GraphiteTable
(        
    metric String, 
    time DateTime, 
    value Int64, 
    version UInt64
)
ENGINE = GraphiteMergeTree('test_rollup')
PARTITION BY time
ORDER BY cityHash64(version, metric)

Теперь можно настроить Graphite для сохранения значений метрик на выбранном хосте ClickHouse. При этом прореживание данных будет проводиться автоматически средствами сервера ClickHouse в соответствии с параметрами, которые вы указали.

0 комментариев

Оставить комментарий