Skip to content

Instantly share code, notes, and snippets.

@ghostflare76
Last active October 6, 2022 12:30
Show Gist options
  • Save ghostflare76/1562e49c3a30333498e4f4a580099e41 to your computer and use it in GitHub Desktop.
Save ghostflare76/1562e49c3a30333498e4f4a580099e41 to your computer and use it in GitHub Desktop.
otel-jaeger-clickhouse.yaml
version: "3"
services:
clickhouse:
image: yandex/clickhouse-server:21
ports:
- "8123:8123"
- "9000:9000"
- "9009:9009"
- "9363:9363"
ulimits:
nproc: 65535
nofile:
soft: 262144
hard: 262144
volumes:
- type: volume
source: ch-data
target: /var/lib/clickhouse
- "./listen_network.xml:/etc/clickhouse-server/config.d/listen_network.xml"
synthetic-load-generator:
image: omnition/synthetic-load-generator:1.0.29
volumes:
- ./etc/simple.json:/etc/simple.json
environment:
- TOPOLOGY_FILE=/etc/simple.json
- JAEGER_COLLECTOR_URL=http://otel-collector:14268
otel-lb-collector:
image: otel/opentelemetry-collector-contrib:latest
command: ["--config=/etc/otel-lb-config.yaml", ""]
volumes:
- ./otel-lb-config.yaml:/etc/otel-lb-config.yaml
ports:
- "1888:1888" # pprof extension
- "13133:13133" # health_check extension
- "4317:4317" # OTLP gRPC receiver
- "4318:4318" # OTLP http receiver
- "55679:55679" # zpages extension
otel-collector-1:
image: otel/opentelemetry-collector-contrib:latest
command: ["--config=/etc/otel-collector-config.yaml", ""]
volumes:
- ./otel-collector-1-config.yaml:/etc/otel-collector-config.yaml
ports:
- "1889:1888" # pprof extension
- "13134:13133" # health_check extension
- "5317:5317" # OTLP gRPC receiver
- "4319:4318" # OTLP http receiver
- "55680:55679" # zpages extension
otel-collector-2:
image: otel/opentelemetry-collector-contrib:latest
command: ["--config=/etc/otel-collector-config.yaml", ""]
volumes:
- ./otel-collector-2-config.yaml:/etc/otel-collector-config.yaml
ports:
- "1890:1888" # pprof extension
- "13135:13133" # health_check extension
- "6317:6317" # OTLP gRPC receiver
- "4320:4318" # OTLP http receiver
- "55681:55679" # zpages extension
jaeger-collector:
image: jaegertracing/jaeger-collector:1.37
command:
- "--log-level=debug"
ports:
- "14250"
- "9411:9411"
environment:
- SPAN_STORAGE_TYPE=grpc-plugin
- GRPC_STORAGE_PLUGIN_BINARY=/usr/bin/jaeger-clickhouse-linux-amd64 # https://github.com/jaegertracing/jaeger-clickhouse
- GRPC_STORAGE_PLUGIN_CONFIGURATION_FILE=/etc/clickhouse-plugin-config.yaml
- LOG_LEVEL=debug
restart: on-failure
volumes:
- ./jaeger-clickhouse-linux-amd64:/usr/bin/jaeger-clickhouse-linux-amd64
- ./clickhouse-plugin-config.yaml:/etc/clickhouse-plugin-config.yaml
jaeger-query:
image: jaegertracing/jaeger-query:1.37
command:
- "--log-level=debug"
ports:
- "16686:16686"
- "16687"
environment:
- SPAN_STORAGE_TYPE=grpc-plugin
- GRPC_STORAGE_PLUGIN_BINARY=/usr/bin/jaeger-clickhouse-linux-amd64 # https://github.com/jaegertracing/jaeger-clickhouse
- GRPC_STORAGE_PLUGIN_CONFIGURATION_FILE=/etc/clickhouse-plugin-config.yaml
restart: on-failure
volumes:
- ./jaeger-clickhouse-linux-amd64:/usr/bin/jaeger-clickhouse-linux-amd64
- ./clickhouse-plugin-config.yaml:/etc/clickhouse-plugin-config.yaml
grafana:
image: grafana/grafana:8.3.5
environment:
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
- GF_AUTH_DISABLE_LOGIN_FORM=true
ports:
- "3000:3000"
volumes:
- ./grafana-datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml
victoriametrics:
container_name: victoriametrics
image: victoriametrics/victoria-metrics
ports:
- 8428:8428
- 2003:2003
- 4242:4242
volumes:
- vmdata:/storage
command:
- '--storageDataPath=/storage'
- '--graphiteListenAddr=:2003'
- '--opentsdbListenAddr=:4242'
- '--httpListenAddr=:8428'
volumes:
ch-data: {}
vmdata: {}
apiVersion: 1
datasources:
- name: jaeger
type: jaeger
access: proxy
orgId: 1
url: http://jaeger-query:16686
basicAuth: false
isDefault: false
version: 1
editable: false
{
"topology": {
"services": [
{
"serviceName": "frontend",
"instances": [
"frontend-6b654dbf57-zq8dt",
"frontend-d847fdcf5-j6s2f",
"frontend-79d8c8d6c8-9sbff"
],
"tagSets": [
{
"tags": {
"version": "v125",
"region": "us-east-1"
}
}
],
"routes": [
{
"route": "/product",
"downstreamCalls": {
"productcatalogservice": "/GetProducts",
"recommendationservice": "/GetRecommendations",
"adservice": "/AdRequest",
"spanFiller0": "/0",
"spanFiller1": "/1",
"spanFiller2": "/2",
"spanFiller3": "/3",
"spanFiller4": "/4",
"spanFiller5": "/5",
"spanFiller6": "/6",
"spanFiller7": "/7",
"spanFiller8": "/8",
"spanFiller9": "/9"
},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
},
{
"route": "/alt_product_0",
"downstreamCalls": {
"productcatalogservice": "/GetProducts",
"recommendationservice": "/GetRecommendations",
"adservice": "/AdRequest",
"spanFiller0": "/0",
"spanFiller1": "/1",
"spanFiller2": "/2",
"spanFiller3": "/3",
"spanFiller4": "/4",
"spanFiller5": "/5",
"spanFiller6": "/6",
"spanFiller7": "/7",
"spanFiller8": "/8",
"spanFiller9": "/9"
},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
},
{
"route": "/alt_product_1",
"downstreamCalls": {
"productcatalogservice": "/GetProducts",
"recommendationservice": "/GetRecommendations",
"adservice": "/AdRequest",
"spanFiller0": "/0",
"spanFiller1": "/1",
"spanFiller2": "/2",
"spanFiller3": "/3",
"spanFiller4": "/4",
"spanFiller5": "/5",
"spanFiller6": "/6",
"spanFiller7": "/7",
"spanFiller8": "/8",
"spanFiller9": "/9"
},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
},
{
"route": "/alt_product_2",
"downstreamCalls": {
"productcatalogservice": "/GetProducts",
"recommendationservice": "/GetRecommendations",
"adservice": "/AdRequest",
"spanFiller0": "/0",
"spanFiller1": "/1",
"spanFiller2": "/2",
"spanFiller3": "/3",
"spanFiller4": "/4",
"spanFiller5": "/5",
"spanFiller6": "/6",
"spanFiller7": "/7",
"spanFiller8": "/8",
"spanFiller9": "/9"
},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
}
]
},
{
"serviceName": "productcatalogservice",
"instances": [
"productcatalogservice-6b654dbf57-zq8dt",
"productcatalogservice-d847fdcf5-j6s2f"
],
"tagSets": [
{
"tags": {
"version": "v52",
"region": "us-east-1"
}
}
],
"routes": [
{
"route": "/GetProducts",
"downstreamCalls": {
"spanFiller0": "/0",
"spanFiller1": "/1",
"spanFiller2": "/2",
"spanFiller3": "/3",
"spanFiller4": "/4",
"spanFiller5": "/5",
"spanFiller6": "/6",
"spanFiller7": "/7",
"spanFiller8": "/8",
"spanFiller9": "/9"
},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
}
]
},
{
"serviceName": "recommendationservice",
"instances": [
"recommendationservice-6b654dbf57-zq8dt",
"recommendationservice-d847fdcf5-j6s2f"
],
"tagSets": [
{
"tags": {
"version": "v234",
"region": "us-east-1"
}
}
],
"routes": [
{
"route": "/GetRecommendations",
"downstreamCalls": {
"productcatalogservice": "/GetProducts",
"spanFiller0": "/0",
"spanFiller1": "/1",
"spanFiller2": "/2",
"spanFiller3": "/3",
"spanFiller4": "/4",
"spanFiller5": "/5",
"spanFiller6": "/6",
"spanFiller7": "/7",
"spanFiller8": "/8",
"spanFiller9": "/9"
},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
}
]
},
{
"serviceName": "adservice",
"instances": [
"adservice-6b654dbf57-zq8dt",
"adservice-d847fdcf5-j6s2f"
],
"tagSets": [
{
"tags": {
"version": "v37",
"region": "us-east-1"
}
}
],
"routes": [
{
"route": "/AdRequest",
"downstreamCalls": {
"spanFiller0": "/0",
"spanFiller1": "/1",
"spanFiller2": "/2",
"spanFiller3": "/3",
"spanFiller4": "/4"
},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
},
{
"route": "/Ad",
"downstreamCalls": {
"spanFiller0": "/0",
"spanFiller1": "/1",
"spanFiller2": "/2",
"spanFiller3": "/3",
"spanFiller4": "/4"
},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
}
]
},
{
"serviceName": "spanFiller0",
"instances": [
"spanfiller-6b654dbf57-00000"
],
"tagSets": [
{
"tags": {
"version": "v37",
"region": "us-east-1"
}
}
],
"routes": [
{
"route": "/0",
"downstreamCalls": {},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
}
]
},
{
"serviceName": "spanFiller1",
"instances": [
"spanfiller-6b654dbf57-00000"
],
"tagSets": [
{
"tags": {
"version": "v37",
"region": "us-east-1"
}
}
],
"routes": [
{
"route": "/1",
"downstreamCalls": {},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
}
]
},
{
"serviceName": "spanFiller2",
"instances": [
"spanfiller-6b654dbf57-00000"
],
"tagSets": [
{
"tags": {
"version": "v37",
"region": "us-east-1"
}
}
],
"routes": [
{
"route": "/2",
"downstreamCalls": {},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
}
]
},
{
"serviceName": "spanFiller3",
"instances": [
"spanfiller-6b654dbf57-00000"
],
"tagSets": [
{
"tags": {
"version": "v37",
"region": "us-east-1"
}
}
],
"routes": [
{
"route": "/3",
"downstreamCalls": {},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
}
]
},
{
"serviceName": "spanFiller4",
"instances": [
"spanfiller-6b654dbf57-00000"
],
"tagSets": [
{
"tags": {
"version": "v37",
"region": "us-east-1"
}
}
],
"routes": [
{
"route": "/4",
"downstreamCalls": {},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
}
]
},
{
"serviceName": "spanFiller5",
"instances": [
"spanfiller-6b654dbf57-00000"
],
"tagSets": [
{
"tags": {
"version": "v37",
"region": "us-east-1"
}
}
],
"tagSets": [
{
"tags": {
"version": "v37",
"region": "us-east-1"
}
}
],
"routes": [
{
"route": "/5",
"downstreamCalls": {},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
}
]
},
{
"serviceName": "spanFiller6",
"instances": [
"spanfiller-6b654dbf57-00000"
],
"tagSets": [
{
"tags": {
"version": "v37",
"region": "us-east-1"
}
}
],
"routes": [
{
"route": "/6",
"downstreamCalls": {},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
}
]
},
{
"serviceName": "spanFiller7",
"instances": [
"spanfiller-6b654dbf57-00000"
],
"tagSets": [
{
"tags": {
"version": "v37",
"region": "us-east-1"
}
}
],
"routes": [
{
"route": "/7",
"downstreamCalls": {},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
}
]
},
{
"serviceName": "spanFiller8",
"instances": [
"spanfiller-6b654dbf57-00000"
],
"tagSets": [
{
"tags": {
"version": "v37",
"region": "us-east-1"
}
}
],
"routes": [
{
"route": "/8",
"downstreamCalls": {},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
}
]
},
{
"serviceName": "spanFiller9",
"instances": [
"spanfiller-6b654dbf57-00000"
],
"tagSets": [
{
"tags": {
"version": "v37",
"region": "us-east-1"
}
}
],
"routes": [
{
"route": "/9",
"downstreamCalls": {},
"tagSets": [
{
"tags": {},
"tagGenerators": [],
"inherit": [],
"maxLatency": 50
}
]
}
]
}
]
},
"rootRoutes": [
{
"service": "frontend",
"route": "/product",
"tracesPerHour": 180000
},
{
"service": "frontend",
"route": "/alt_product_0",
"tracesPerHour": 180000
},
{
"service": "frontend",
"route": "/alt_product_1",
"tracesPerHour": 180000
},
{
"service": "frontend",
"route": "/alt_product_2",
"tracesPerHour": 180000
}
]
}
receivers:
otlp:
protocols:
grpc:
endpoint: "0.0.0.0:5317"
processors:
groupbytrace/custom:
wait_duration: 1s
num_traces: 5000
num_workers: 4
batch:
send_batch_size: 5000
send_batch_max_size: 10000
timeout: 5s
memory_limiter:
check_interval: 1s
limit_percentage: 75
spike_limit_percentage: 30
exporters:
logging:
loglevel: debug
jaeger:
endpoint: jaeger-collector:14250
tls:
insecure: true
service:
extensions:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, groupbytrace/custom, batch]
exporters: [logging, jaeger]
receivers:
otlp:
protocols:
grpc:
endpoint: "0.0.0.0:6317"
processors:
groupbytrace/custom:
wait_duration: 1s
num_traces: 5000
num_workers: 4
batch:
send_batch_size: 5000
send_batch_max_size: 10000
timeout: 5s
memory_limiter:
check_interval: 1s
limit_percentage: 75
spike_limit_percentage: 30
exporters:
logging:
loglevel: debug
jaeger:
endpoint: jaeger-collector:14250
tls:
insecure: true
service:
extensions:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, groupbytrace/custom, batch]
exporters: [logging, jaeger]
receivers:
jaeger:
protocols:
thrift_http:
endpoint: "0.0.0.0:14268"
prometheus:
config:
scrape_configs:
- job_name: 'otel-collector'
scrape_interval: 10s
static_configs:
- targets: ['0.0.0.0:8888']
exporters:
logging:
loadbalancing:
protocol:
otlp:
tls:
insecure: true
timeout: 3s
resolver:
static:
hostnames:
- otel-collector-1:5317
- otel-collector-2:6317
prometheusremotewrite:
endpoint: "http://victoriametrics:8428/api/v1/write"
processors:
batch:
send_batch_size: 10000
timeout: 5s
memory_limiter:
check_interval: 3s
limit_percentage: 75
spike_limit_percentage: 50
extensions:
health_check:
service:
extensions: [health_check]
pipelines:
traces:
receivers: [jaeger]
processors: [memory_limiter, batch]
exporters: [jaeger]
metrics:
receivers: [ prometheus]
processors: [memory_limiter, batch]
exporters: [prometheusremotewrite]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment