• Stars
    star
    227
  • Rank 169,567 (Top 4 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created almost 3 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Jaeger ClickHouse storage plugin implementation

Jaeger ClickHouse

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.

More Repositories

1

jaeger

CNCF Jaeger, a Distributed Tracing Platform
Go
19,236
star
2

jaeger-client-go

πŸ›‘ This library is DEPRECATED!
Go
1,366
star
3

jaeger-ui

Web UI for Jaeger
JavaScript
1,039
star
4

jaeger-operator

Jaeger Operator for Kubernetes simplifies deploying and running Jaeger on Kubernetes.
Go
980
star
5

jaeger-client-node

πŸ›‘ This library is DEPRECATED!
JavaScript
553
star
6

jaeger-client-java

πŸ›‘ This library is DEPRECATED!
Java
491
star
7

jaeger-kubernetes

Support for deploying Jaeger into Kubernetes
Java
446
star
8

jaeger-client-python

πŸ›‘ This library is DEPRECATED!
Python
408
star
9

jaeger-client-csharp

πŸ›‘ This library is DEPRECATED!
C#
304
star
10

helm-charts

Helm Charts for Jaeger backend
Mustache
248
star
11

jaeger-client-cpp

πŸ›‘ This library is DEPRECATED!
C++
137
star
12

spark-dependencies

Spark job for dependency links
Java
119
star
13

docker-protobuf

An all-inclusive protoc Docker image for the Jaeger project
Dockerfile
85
star
14

jaeger-idl

A set of shared data model definitions used by Jaeger components.
Thrift
77
star
15

jaeger-analytics-flink

Big data analytics for Jaeger using Apache Flink
Java
67
star
16

jaeger-lib

A collection of shared infrastructure libraries used by different components of Jaeger.
Go
64
star
17

documentation

Documentation/website for the Jaeger Distributed Tracing project.
HTML
62
star
18

jaeger-openshift

Support for deploying Jaeger into OpenShift
Groovy
56
star
19

jaeger-analytics-java

Data analytics pipeline and models for tracing data
Java
43
star
20

jaeger-client-javascript

Note: this SDK is not implemented yet, see https://github.com/jaegertracing/jaeger-client-javascript/issues/1.
JavaScript
32
star
21

jaeger-performance

Home of the Jaeger Performance tests
Java
21
star
22

jaeger-opentelemetry-collector

Experimental: components needed to build Jaeger on top of OpenTelemetry Collector
Makefile
12
star
23

jaeger-otelcol

Jaeger's OpenTelemetry Collector distribution
Go
7
star
24

legacy-client-java

Legacy com.uber.jaeger java client
Java
5
star
25

jaeger-vscode

VSCode extension for Jaeger
TypeScript
5
star
26

security-audits

Jaeger security audits
3
star
27

vertx-create-span

Demo application used in e2e tests for the Jaeger Operator
Java
3
star
28

jaeger-opentelemetry-releases

Go
3
star
29

artwork

Jaeger Logo and Artwork
2
star