cst
github.com/bzed/carbon-schema-to-clickhouse
go get github.com/bzed/carbon-schema-to-clickhouse
cst

github.com/bzed/carbon-schema-to-clickhouse

Converts storage-schema.conf from graphite/carbon to clickhouse graphite_rollup XML

by Bernd Zeimetz

v0.0.0-20170324161222-ae8cc544900b (see all)License:MIT
go get github.com/bzed/carbon-schema-to-clickhouse
Readme

carbon-schema-to-clickhouse Build Status

Converts storage-schema.conf from graphite/carbon to clickhouse graphite_rollup XML

Migrating our storage-schemas.conf from an older graphite implementation to the XML snippet needed for ClickHouse would have needed much more time than hacking this small piece of go code.

Usage:

% cat storage-schemas-example.conf                                                                                                          [carbon]
pattern = ^carbon\.
retentions = 60:90d,60m:120d,360m:400d,720m:2y,1d:3y,7d:10y

[collectd]
pattern = ^collectd\..*
retentions = 10s:12h,1m:10d,15m:20d,30m:40d,60m:120d,360m:400d,720m:2y,1d:3y,7d:10y

[netapp.capacity]
pattern = ^netapp\.capacity\.*
retentions = 15m:100d, 1d:5y

[default]
pattern = .*
retentions = 1m:10d,15m:20d,30m:40d,60m:120d,360m:400d,720m:2y,1d:3y,7d:10y
% ./carbon-schema-to-clickhouse -h
Usage of ./carbon-schema-to-clickhouse:                                                                 
  -rollupfunction string
        clickhouse rollup function (default "any")
  -schemafile string
        storage schema file to convert (default "/etc/carbon/storage-schemas.conf")
% ./carbon-schema-to-clickhouse -schemafile storage-schemas-example.conf -rollupfunction avg
<graphite_rollup>
    <!-- carbon -->
    <pattern>
        <regexp>^carbon\.</regexp>
        <function>avg</function>
        <retention>
            <age>0</age>
            <precision>60</precision>
        </retention>
        <retention>
            <age>7776000</age>
            <precision>3600</precision>
        </retention>
        <retention>
            <age>10368000</age>
            <precision>21600</precision>
        </retention>
        <retention>
            <age>34560000</age>
            <precision>43200</precision>
        </retention>
        <retention>
            <age>63072000</age>
            <precision>86400</precision>
        </retention>
        <retention>
            <age>94608000</age>
            <precision>604800</precision>
        </retention>
    </pattern>
    <!-- collectd -->
    <pattern>
        <regexp>^collectd\..*</regexp>
        <function>avg</function>
        <retention>
            <age>0</age>
            <precision>10</precision>
        </retention>
        <retention>
            <age>43200</age>
            <precision>60</precision>
        </retention>
        <retention>
            <age>864000</age>
            <precision>900</precision>
        </retention>
        <retention>
            <age>1728000</age>
            <precision>1800</precision>
        </retention>
        <retention>
            <age>3456000</age>
            <precision>3600</precision>
        </retention>
        <retention>
            <age>10368000</age>
            <precision>21600</precision>
        </retention>
        <retention>
            <age>34560000</age>
            <precision>43200</precision>
        </retention>
        <retention>
            <age>63072000</age>
            <precision>86400</precision>
        </retention>
        <retention>
            <age>94608000</age>
            <precision>604800</precision>
        </retention>
    </pattern>
    <!-- netapp.capacity -->
    <pattern>
        <regexp>^netapp\.capacity\.*</regexp>
        <function>avg</function>
        <retention>
            <age>0</age>
            <precision>900</precision>
        </retention>
        <retention>
            <age>8640000</age>
            <precision>86400</precision>
        </retention>
    </pattern>
    <!-- default -->
    <default>
        <function>avg</function>
        <retention>
            <age>0</age>
            <precision>60</precision>
        </retention>
        <retention>
            <age>864000</age>
            <precision>900</precision>
        </retention>
        <retention>
            <age>1728000</age>
            <precision>1800</precision>
        </retention>
        <retention>
            <age>3456000</age>
            <precision>3600</precision>
        </retention>
        <retention>
            <age>10368000</age>
            <precision>21600</precision>
        </retention>
        <retention>
            <age>34560000</age>
            <precision>43200</precision>
        </retention>
        <retention>
            <age>63072000</age>
            <precision>86400</precision>
        </retention>
        <retention>
            <age>94608000</age>
            <precision>604800</precision>
        </retention>
    </default>
</graphite_rollup>

Thanks

Thanks to Roman Lomonosov for his go-carbon code - I'm reusing the storage schema parser here.

GitHub Stars

12

LAST COMMIT

5yrs ago

MAINTAINERS

0

CONTRIBUTORS

1

OPEN ISSUES

0

OPEN PRs

0
VersionTagPublished
v0.0.0-20170324161222-ae8cc544900b
1yr ago
No alternatives found
No tutorials found
Add a tutorial