Converts storage-schema.conf from graphite/carbon to clickhouse graphite_rollup XML
Clone or download
Latest commit ae8cc54 Mar 24, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore Add a small Makefile Mar 24, 2017
.travis.yml Revert "clean travis.yml" Mar 24, 2017
LICENSE.md Add License Mar 24, 2017
Makefile also tidy Makefile Mar 24, 2017
README.md Add travis build status. Mar 24, 2017
converter.go Fix age calculation Mar 24, 2017
storage-schemas-example.conf Add example storage-schema file Mar 24, 2017

README.md

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.