go-graphite/graphite-clickhouse

Не применяется rollup-conf = "auto" при использовании Distributed таблиц

proffust opened this issue · 1 comments

graphite-clickhouse -version
0.11.7

cat /etc/clickhouse-server/config.d/rollup.xml
<yandex>
<graphite_rollup>
<default>
  <function>avg</function>
    <retention>
      <age>0</age>
      <precision>10</precision>
    </retention>
    <retention>
      <age>259200</age>
      <precision>30</precision>
    </retention>
    <retention>
      <age>1209600</age>
      <precision>300</precision>
    </retention>
    <retention>
      <age>2419200</age>
      <precision>900</precision>
    </retention>
    <retention>
      <age>29030400</age>
      <precision>3600</precision>
    </retention>
</default>
</graphite_rollup>
</yandex>

Распределенная таблица

SHOW CREATE TABLE graphite_reverse

┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.graphite_reverse (`Path` String, `Value` Float64, `Time` UInt32, `Date` Date, `Timestamp` UInt32) ENGINE = Distributed(shardOne, shardOne, graphite_reverse, sipHash64(Path)) │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Таблица с данными

SHOW CREATE TABLE shardOne.graphite_reverse

┌─statement───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE shardOne.graphite_reverse (`Path` String, `Value` Float64, `Time` UInt32, `Date` Date, `Timestamp` UInt32) ENGINE = GraphiteMergeTree(Date, (Path, Time), 8192, 'graphite_rollup') │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

правила Retentions из БД

SELECT *
FROM system.graphite_retentions

┌─config_name─────┬─regexp─┬─function─┬──────age─┬─precision─┬─priority─┬─is_default─┬─Tables.database─┬─Tables.table─────────┐
│ graphite_rollup │        │ avg      │ 29030400 │      3600 │    65535 │          1 │ ['shardOne']    │ ['graphite_reverse'] │
│ graphite_rollup │        │ avg      │  2419200 │       900 │    65535 │          1 │ ['shardOne']    │ ['graphite_reverse'] │
│ graphite_rollup │        │ avg      │  1209600 │       300 │    65535 │          1 │ ['shardOne']    │ ['graphite_reverse'] │
│ graphite_rollup │        │ avg      │   259200 │        30 │    65535 │          1 │ ['shardOne']    │ ['graphite_reverse'] │
│ graphite_rollup │        │ avg      │        0 │        10 │    65535 │          1 │ ['shardOne']    │ ['graphite_reverse'] │
└─────────────────┴────────┴──────────┴──────────┴───────────┴──────────┴────────────┴─────────────────┴──────────────────────┘

Запрос, который делает graphite-clickhouse, чтобы эти правила получить
SELECT regexp, function, age, precision, is_default FROM system.graphite_retentions ARRAY JOIN Tables AS table WHERE (table.database = 'default') AND (table.table = 'graphite_reverse') ORDER BY is_default ASC, priority ASC, regexp ASC, age ASC

Конфиг

cat /etc/graphite-clickhouse/graphite-clickhouse.conf
[common]
listen = ":9090"
max-cpu = 8

[clickhouse]
url = "http://localhost:8123/?max_query_size=2097152&readonly=2"
data-table = ""
index-table = "graphite_index"
rollup-conf = "auto"
data-timeout = "1m0s"
index-timeout = "1m0s"
tagged-table = "graphite_tagged"

[[data-table]]
table = "graphite_reverse"
reverse = true
rollup-conf = "auto"

[[logging]]
logger = ""
file = "/var/log/graphite-clickhouse/graphite-clickhouse.log"
level = "info"
encoding = "mixed"
encoding-time = "iso8601"
encoding-duration = "seconds"

При настройке rollup-conf = "auto" точки все равно выбирались раз в одну минуту, то есть с дефолтными настройками retention. Происходит это из-за того, что выборка правил происходит по той таблице, которая настроена в конфиге graphite-clickhouse, но если она распределенная, то её упоминания с system.retentions не будет

Для работы необходимо добавить примерно следующий сниппет:

[[data-table]]
rollup-auto-table = "shardOne.graphite_reverse"

Это есть в README https://github.com/lomik/graphite-clickhouse#configuration, поиск по rollup-auto-table