[experimental] Jaeger ClickHouse storage plugin implementation
Go to file
Yuri Shkuro a31f41ba2e
Add deprecation warning
Signed-off-by: Yuri Shkuro <yurishkuro@users.noreply.github.com>
2024-12-16 23:48:22 -04:00
.github/workflows Added linux arm and osx builds (#114) 2022-08-23 19:16:16 +12:00
blog Add new `tenant` option for shared-table multitenancy 2022-04-08 11:23:45 +12:00
cmd/jaeger-clickhouse Bump clickhouse-go: v1.5.4 -> v2.3.0 (#116) 2022-09-14 21:18:29 +12:00
e2etests Bump clickhouse-go: v1.5.4 -> v2.3.0 (#116) 2022-09-14 21:18:29 +12:00
integration Use jaeger storage integration helpers from upstream (#119) 2022-10-12 19:42:03 +13:00
internal/tools Added linux arm and osx builds (#114) 2022-08-23 19:16:16 +12:00
pictures Edited README (#83) 2021-09-28 13:32:34 +05:00
sqlscripts Add new `tenant` option for shared-table multitenancy 2022-04-08 11:23:45 +12:00
storage make connection pool configurable (#118) 2022-10-10 21:37:28 +13:00
.gitignore Expose metrics (#20) 2021-07-23 15:58:43 +02:00
.golangci.yml Use jaeger storage integration helpers from upstream (#119) 2022-10-12 19:42:03 +13:00
Dockerfile Added linux arm and osx builds (#114) 2022-08-23 19:16:16 +12:00
LICENSE Initial commit 2021-07-13 17:50:43 +02:00
Makefile Added linux arm and osx builds (#114) 2022-08-23 19:16:16 +12:00
README.md Add deprecation warning 2024-12-16 23:48:22 -04:00
RELEASE.md Configure release 2021-07-15 14:51:34 +02:00
config.yaml Bump clickhouse-go: v1.5.4 -> v2.3.0 (#116) 2022-09-14 21:18:29 +12:00
embed.go Clean up/deduplicate SQL init scripts using full templating 2022-04-06 13:03:58 +12:00
go.mod Use jaeger storage integration helpers from upstream (#119) 2022-10-12 19:42:03 +13:00
go.sum Use jaeger storage integration helpers from upstream (#119) 2022-10-12 19:42:03 +13:00
guide-kubernetes.md Bump clickhouse-go: v1.5.4 -> v2.3.0 (#116) 2022-09-14 21:18:29 +12:00
guide-multitenancy.md Add new `tenant` option for shared-table multitenancy 2022-04-08 11:23:45 +12:00
guide-sharding-and-replication.md Bump clickhouse-go: v1.5.4 -> v2.3.0 (#116) 2022-09-14 21:18:29 +12:00
jaeger-ui.json Add support for archive storage 2021-07-16 09:52:13 +02:00

README.md

Jaeger ClickHouse (experimental)

⚠️ This module only implements grpc-plugin API that has been deprecated in Jaeger (https://github.com/jaegertracing/jaeger/issues/4647).

This is a Jaeger gRPC storage plugin implementation for storing traces in ClickHouse.

Project status

This is a community-driven project, and we would love to hear your issues and feature requests. Pull requests are also greatly appreciated.

Why use ClickHouse for Jaeger?

ClickHouse is an analytical column-oriented database management system. It is designed to analyze streams of events which are kind of resemblant to spans. It's open-source, optimized for performance, and actively developed.

How it works

Jaeger spans are stored in 2 tables. The first contains the whole span encoded either in JSON or Protobuf. The second stores key information about spans for searching. This table is indexed by span duration and tags. Also, info about operations is stored in the materialized view. There are not indexes for archived spans. Storing data in replicated local tables with distributed global tables is natively supported. Spans are bufferized. Span buffers are flushed to DB either by timer or after reaching max batch size. Timer interval and batch size can be set in config file.

Database schema generated by JetBrains DataGrip Picture of tables

How to start using Jaeger over ClickHouse

Documentation

Refer to the config.yaml for all supported configuration options.

Build & Run

Docker database example

docker run --rm -it -p9000:9000 --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server:22
GOOS=linux make build run
make run-hotrod

Open localhost:16686 and localhost:8080.

Custom database

You need to specify connection options in config.yaml, then you can run

make build
SPAN_STORAGE_TYPE=grpc-plugin {Jaeger binary adress} --query.ui-config=jaeger-ui.json --grpc-storage-plugin.binary=./{name of built binary} --grpc-storage-plugin.configuration-file=config.yaml --grpc-storage-plugin.log-level=debug

Credits

This project is originally based on this clickhouse plugin implementation.

See also jaegertracing/jaeger/issues/1438 for historical discussion regarding the implementation of a ClickHouse plugin.