Awesome
graphite-clickhouse
Graphite cluster backend with ClickHouse support
Work scheme
Gray components are optional or alternative
TL;DR
Docker
Docker images are available on packages page.
Compatibility
- graphite-web 1.1.0
- graphite-web 0.9.15
- graphite-web 1.0.0
- carbonapi 0.14.1+
- carbonzipper (DEPRECATED, is part of carbonapi currently)
Build
Required golang 1.18+
# build binary
git clone https://github.com/lomik/graphite-clickhouse.git
cd graphite-clickhouse
make
Installation
- Setup Yandex ClickHouse and carbon-clickhouse
- Setup and configure
graphite-clickhouse
- Add graphite-clickhouse
host:port
to graphite-web CLUSTER_SERVERS
Configuration
See configuration documentation.
Special headers processing
Some HTTP headers are processed specially by the service
Request headers
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 ofdirectory
,directory-perm
, andexternal-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 forformat=carbonapi_v3_pb
andformat=json
render output.X-Gch-Debug-Protobuf
- header enables the original marshallers forprotobuf
andcarbonapi_v3_pb
to check the binary data integrity.
Response headers
X-Gch-Request-Id
- the current request ID.X-Cached-Find
- Flag for find cache hit.
Run on same host with old graphite-web 0.9.x
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")]