Skip to content

Commit 02c38ab

Browse files
author
Mikalai Alimenkou
committed
Configured Grafana Tempo for traces in addition to Jaeger
1 parent 881d601 commit 02c38ab

File tree

4 files changed

+137
-8
lines changed

4 files changed

+137
-8
lines changed

compose.yaml

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,17 @@ services:
3434
retries: 5
3535
start_period: 10s
3636

37+
tempo:
38+
image: grafana/tempo:2.9.0
39+
container_name: library-tempo
40+
command: [ "-config.file=/etc/tempo/tempo.yaml" ]
41+
volumes:
42+
- ./tempo/tempo-config.yaml:/etc/tempo/tempo.yaml:ro
43+
ports:
44+
- "3200:3200" # Tempo HTTP API
45+
- "4311:4317" # OTLP gRPC
46+
- "4312:4318" # OTLP HTTP
47+
3748
otel-collector:
3849
image: otel/opentelemetry-collector-contrib:0.137.0
3950
container_name: library-otel-collector
@@ -47,6 +58,8 @@ services:
4758
depends_on:
4859
loki:
4960
condition: service_healthy
61+
tempo:
62+
condition: service_started
5063

5164
prometheus:
5265
image: prom/prometheus:v3.7.1
@@ -57,6 +70,8 @@ services:
5770
- '--web.console.libraries=/etc/prometheus/console_libraries'
5871
- '--web.console.templates=/etc/prometheus/consoles'
5972
- '--enable-feature=exemplar-storage'
73+
- '--web.enable-remote-write-receiver'
74+
- '--enable-feature=native-histograms'
6075
volumes:
6176
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
6277
ports:
@@ -78,6 +93,7 @@ services:
7893
depends_on:
7994
- prometheus
8095
- loki
96+
- tempo
8197

8298
library-app:
8399
profiles: ["perftest"]
@@ -104,11 +120,9 @@ services:
104120
interval: 10s
105121
timeout: 5s
106122
retries: 3
107-
start_period: 30s
123+
start_period: 10s
108124
depends_on:
109125
db:
110126
condition: service_started
111-
jaeger:
112-
condition: service_started
113-
loki:
114-
condition: service_healthy
127+
otel-collector:
128+
condition: service_started

grafana/datasources/datasources.yml

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,61 @@ apiVersion: 1
33
datasources:
44
- name: Prometheus
55
type: prometheus
6+
uid: prometheus
67
access: proxy
78
url: http://prometheus:9090
89
isDefault: true
910
editable: true
1011
jsonData:
1112
timeInterval: 5s
1213
queryTimeout: 60s
14+
exemplarTraceIdDestinations:
15+
- name: trace_id
16+
datasourceUid: tempo
17+
datasourceName: Tempo
18+
urlDisplayLabel: "View trace in Tempo"
1319

1420
- name: Loki
1521
type: loki
22+
uid: loki
1623
access: proxy
1724
url: http://loki:3100
1825
isDefault: false
1926
editable: true
2027
jsonData:
21-
maxLines: 1000
2228
derivedFields:
2329
- datasourceUid: tempo
24-
matcherRegex: "trace_id=(\\w+)"
30+
datasourceName: Tempo
31+
matcherType: label
32+
matcherRegex: trace_id
2533
name: TraceID
2634
url: "$${__value.raw}"
35+
urlDisplayLabel: "View trace in Tempo"
36+
37+
- name: Tempo
38+
type: tempo
39+
uid: tempo
40+
access: proxy
41+
url: http://tempo:3200
42+
isDefault: false
43+
editable: true
44+
jsonData:
45+
httpMethod: GET
46+
serviceMap:
47+
datasourceUid: prometheus
48+
spanMetrics:
49+
datasourceUid: prometheus
50+
streamingEnabled:
51+
search: true
52+
tracesToLogsV2:
53+
datasourceUid: loki
54+
datasourceName: Loki
55+
filterBySpanID: false
56+
filterByTraceID: true
57+
spanStartTimeShift: "-1h"
58+
spanEndTimeShift: "1h"
59+
tags:
60+
- key: service.name
61+
value: service_name
62+
customQuery: true
63+
query: '{$${__tags}} | trace_id="$${__span.traceId}"'

otel/otel-collector-config.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,11 @@ exporters:
113113
tls:
114114
insecure: true
115115

116+
otlphttp/tempo:
117+
endpoint: http://tempo:4318
118+
tls:
119+
insecure: true
120+
116121
service:
117122
extensions: [file_storage]
118123
pipelines:
@@ -123,4 +128,4 @@ service:
123128
traces:
124129
receivers: [otlp]
125130
processors: [batch]
126-
exporters: [otlphttp]
131+
exporters: [otlphttp, otlphttp/tempo, debug]

tempo/tempo-config.yaml

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
stream_over_http_enabled: true
2+
server:
3+
http_listen_port: 3200
4+
log_level: info
5+
6+
query_frontend:
7+
mcp_server:
8+
enabled: true
9+
search:
10+
duration_slo: 5s
11+
throughput_bytes_slo: 1.073741824e+09
12+
metadata_slo:
13+
duration_slo: 5s
14+
throughput_bytes_slo: 1.073741824e+09
15+
trace_by_id:
16+
duration_slo: 100ms
17+
metrics:
18+
max_duration: 200h
19+
query_backend_after: 5m
20+
duration_slo: 5s
21+
throughput_bytes_slo: 1.073741824e+09
22+
23+
distributor:
24+
usage:
25+
cost_attribution:
26+
enabled: true
27+
receivers:
28+
otlp:
29+
protocols:
30+
grpc:
31+
endpoint: 0.0.0.0:4317
32+
http:
33+
endpoint: 0.0.0.0:4318
34+
35+
ingester:
36+
lifecycler:
37+
min_ready_duration: 0s
38+
max_block_duration: 5m
39+
40+
compactor:
41+
compaction:
42+
block_retention: 720h
43+
44+
metrics_generator:
45+
registry:
46+
external_labels:
47+
source: tempo
48+
cluster: docker-compose
49+
storage:
50+
path: /var/tempo/generator/wal
51+
remote_write:
52+
- url: http://prometheus:9090/api/v1/write
53+
send_exemplars: true
54+
traces_storage:
55+
path: /var/tempo/generator/traces
56+
processor:
57+
local_blocks:
58+
filter_server_spans: false
59+
flush_to_storage: true
60+
61+
storage:
62+
trace:
63+
backend: local
64+
wal:
65+
path: /var/tempo/wal
66+
local:
67+
path: /var/tempo/blocks
68+
69+
overrides:
70+
defaults:
71+
metrics_generator:
72+
processors: [service-graphs, span-metrics, local-blocks]
73+
generate_native_histograms: both

0 commit comments

Comments
 (0)