Skip to content
Roman Lomonosov edited this page Apr 12, 2017 · 13 revisions

Теги

Для поиска по тегам используется отдельная таблица в ClickHouse:

CREATE TABLE graphite_tag (
    Date Date,
    Level UInt32,
    Tag1 String, 
    Path String, 
    IsLeaf UInt8,
    Tags Array(String),
    Version UInt32
) ENGINE = ReplacingMergeTree(Date, (Tag1, Level, Path), 8192, Version);
Колонка Описание
Date Дата. Просто потому что это обязательно в ClickHouse. У всех записей должна быть одинаковая
Level Уровень вложенности метрики. Нумерация с единицы
Tag1 Тег. Каждая метрика присутствует в таблице столько раз, сколько тегов к ней привязано (с каждым из тегов в качестве Tag1)
Path Путь метрики. Если это директория, то путь заканчивается точкой
IsLeaf 0 - директория, 1 - метрика
Tags Массив всех тегов
Version Версия дерева. Поиск происходит только по записям с последней версией. Обычно в качестве значения используется timestamp построения дерева

Заполняется таблица сразу вся целиком встроенной командой -tags на основе файлов с правилами (по-умолчанию /etc/graphite-clickhouse/tag.d/*.conf) и таблицы graphite_tree

graphite-clickhouse -tags -config /etc/graphite-clickhouse/graphite-clickhouse.conf

Файл с правилами в формате toml

# Если метрика соответствует множеству правил, то она будет находиться по всем тегам из них
[[rule]]
# Правило может добавлять один тег
tag = "nginx"
# и/или несколько
tags = ["nginx", "frontend"]

# Для этого метрика должна проходить каждую из указаных проверок.
# Возможны следующие проверки:
has-prefix = "host.neptun"
has-suffix = ".rps"
contains = ".nginx."
equal = "host.neptun.nginx.rps"
# Для ускорения работы проверку на регулярные выражения 
# рекомендуется комбинировать с одной или несколькими
# из проверок, описанных выше
regexp = '.*\.nginx\..*'

[[rule]]
tags = ["mysql", "database"]
contains = ".mysql."
Clone this wiki locally