Graphite cluster backend with ClickHouse support

Gray components are optional or alternative
Docker images are available on packages page.
Required golang 1.18+
# build binary
git clone https://github.com/lomik/graphite-clickhouse.git
cd graphite-clickhouse
make
graphite-clickhousehost:port to graphite-web CLUSTER_SERVERSSee configuration documentation.
Some HTTP headers are processed specially by the service
Grafana headers: X-Dashboard-Id, X-Grafana-Org-Id, and X-Panel-Id are logged and passed further to the ClickHouse.
Debug headers (see debugging.md for details):
X-Gch-Debug-External-Data - when this header is set to anything and every of directory, directory-perm, and external-data-perm parameters in [debug] is set and valid, service will save the dump of external data tables in the directory for debug output.X-Gch-Debug-Output - header to enable special processing for format=carbonapi_v3_pb and format=json render output.X-Gch-Debug-Protobuf - header enables the original marshallers for protobuf and carbonapi_v3_pb to check the binary data integrity.X-Gch-Request-Id - the current request ID.X-Cached-Find - Flag for find cache hit.By default graphite-web won't connect to CLUSTER_SERVER on localhost. Cheat:
class ForceLocal(str):
def split(self, *args, **kwargs):
return ["8.8.8.8", "8080"]
CLUSTER_SERVERS = [ForceLocal("127.0.0.1:9090")]
Go
94.9%
Smarty
4.6%
Graphite cluster backend with ClickHouse support

Gray components are optional or alternative
Docker images are available on packages page.
Required golang 1.18+
# build binary
git clone https://github.com/lomik/graphite-clickhouse.git
cd graphite-clickhouse
make
graphite-clickhousehost:port to graphite-web CLUSTER_SERVERSSee configuration documentation.
Some HTTP headers are processed specially by the service
Grafana headers: X-Dashboard-Id, X-Grafana-Org-Id, and X-Panel-Id are logged and passed further to the ClickHouse.
Debug headers (see debugging.md for details):
X-Gch-Debug-External-Data - when this header is set to anything and every of directory, directory-perm, and external-data-perm parameters in [debug] is set and valid, service will save the dump of external data tables in the directory for debug output.X-Gch-Debug-Output - header to enable special processing for format=carbonapi_v3_pb and format=json render output.X-Gch-Debug-Protobuf - header enables the original marshallers for protobuf and carbonapi_v3_pb to check the binary data integrity.X-Gch-Request-Id - the current request ID.X-Cached-Find - Flag for find cache hit.By default graphite-web won't connect to CLUSTER_SERVER on localhost. Cheat:
class ForceLocal(str):
def split(self, *args, **kwargs):
return ["8.8.8.8", "8080"]
CLUSTER_SERVERS = [ForceLocal("127.0.0.1:9090")]
Go
94.9%
Smarty
4.6%