Hi, I’m trying to setup a local grafana oss observation stack - minio, mimit, tempo, alloy, grafana.
I’m struggeling with tempo here - I can not get it to run stable.
docker-compose, target=all mode / single binary
For me it looks as if the current examples are not updated to the current software.
I get a lot of errors that I was not able to fix - mainly because most suggestions where related to older versions of the software.
So my question is: What is the minimal docker-compose / tempo.yaml configuration to run stable for
- alloy ingest
- grafana drilldown traces
- metrics generator export
I was able to get it running with a kafka node and the following tempo.yaml
partition_ring_live_store: true
stream_over_http_enabled: true
server:
http_listen_port: 3200
log_level: info
usage_report:
reporting_enabled: false
distributor:
ingester_write_path_enabled: false
kafka_write_path_enabled: true
receivers:
otlp:
protocols:
grpc:
endpoint: "0.0.0.0:4317"
http:
endpoint: "0.0.0.0:4318"
backend_scheduler:
provider:
compaction:
compaction:
block_retention: 1h
backend_worker:
backend_scheduler_addr: localhost:3200
compaction:
block_retention: 1h
ring:
kvstore:
store: memberlist
memberlist:
abort_if_cluster_join_fails: false
bind_port: 7946
join_members:
- tempo:7946
metrics_generator:
registry:
external_labels:
source: tempo
cluster: docker-compose
storage:
path: /var/tempo/generator/wal
remote_write:
- url: "http://mimir:9009/api/v1/push"
send_exemplars: true
traces_storage:
path: /var/tempo/generator/traces
query_frontend:
rf1_after: "1999-01-01T00:00:00Z"
storage:
trace:
backend: s3
block:
version: vParquet5
s3:
endpoint: minio:9000
access_key: minio
secret_key: supersecret
bucket: tempo-data
insecure: true
wal:
path: /var/tempo/wal
ingest:
enabled: true
kafka:
address: redpanda:9092
topic: tempo-ingest
block_builder:
consume_cycle_duration: 30s
overrides:
defaults:
metrics_generator:
processors: [service-graphs, span-metrics, local-blocks]
generate_native_histograms: both
This is the relevant part of my docker-compose.yaml
name: observability
services:
minio:
image: minio/minio:latest
entrypoint: [""]
command: ["/bin/sh", "-c", "mkdir -p /data/tempo-data && mkdir -p /data/mimir-data && mkdir -p /data/mimir-alertmanager && mkdir -p /data/mimir-ruler && mkdir -p /data/loki-data && mkdir -p /data/loki-ruler && minio server /data --console-address ':9001'"]
restart: always
environment:
- "MINIO_ROOT_USER=minio"
- "MINIO_ROOT_PASSWORD=supersecret"
ports:
- "9001:9001"
volumes:
- minio-data:/data
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:9000/minio/health/live" ]
interval: 15s
timeout: 20s
retries: 5
redpanda:
image: redpandadata/redpanda:latest
restart: always
command: >
redpanda start
--mode=dev-container
--overprovisioned
--kafka-addr=PLAINTEXT://0.0.0.0:9092
--advertise-kafka-addr=PLAINTEXT://redpanda:9092
ports:
- "9092:9092"
tempo:
image: grafana/tempo:latest
command: "-target=all -config.file=/etc/tempo.yaml"
restart: always
volumes:
- ./config/tempo/tempo.yaml:/etc/tempo.yaml:ro
ports:
- "3200:3200" # tempo
- "4317" # otlp grpc (internal only - alloy owns host port)
- "4318" # otlp http (internal only - alloy owns host port)
- "7946"
depends_on:
- minio
- redpanda