Как настроить управляемую базу 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 в соответствии с параметрами, которые вы указали.