aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/docker-compose
diff options
context:
space:
mode:
authorrtkay123 <dev@kanjala.com>2025-08-09 11:01:09 +0200
committerrtkay123 <dev@kanjala.com>2025-08-09 11:01:09 +0200
commit0d4395a8f642312b1a7964ea8cdea1d43cf81c8b (patch)
tree0bb26862c1bcdd1c64d3dd6f2785272eef8d466c /contrib/docker-compose
parentaffa986bf1f84b725bd23309986250ff04cf2c93 (diff)
downloadwarden-0d4395a8f642312b1a7964ea8cdea1d43cf81c8b.tar.bz2
warden-0d4395a8f642312b1a7964ea8cdea1d43cf81c8b.zip
feat: tempo and loki
Diffstat (limited to 'contrib/docker-compose')
-rw-r--r--contrib/docker-compose/compose-monitoring.yaml70
-rw-r--r--contrib/docker-compose/config/grafana-ds.yaml27
-rw-r--r--contrib/docker-compose/config/otel-collector.yaml14
-rw-r--r--contrib/docker-compose/config/tempo.yaml36
4 files changed, 147 insertions, 0 deletions
diff --git a/contrib/docker-compose/compose-monitoring.yaml b/contrib/docker-compose/compose-monitoring.yaml
new file mode 100644
index 0000000..93697f4
--- /dev/null
+++ b/contrib/docker-compose/compose-monitoring.yaml
@@ -0,0 +1,70 @@
+name: warden
+
+services:
+ loki:
+ image: grafana/loki:3.5.3
+ ports:
+ - "3100:3100"
+ command: -config.file=/etc/loki/local-config.yaml
+ networks:
+ - warden
+
+ promtail:
+ image: grafana/promtail:3.5.3
+ volumes:
+ - /var/log:/var/log
+ command: -config.file=/etc/promtail/config.yml
+ networks:
+ - warden
+
+ grafana:
+ image: grafana/grafana:12.1.0
+ environment:
+ - GF_PATHS_PROVISIONING=/etc/grafana/provisioning
+ - GF_AUTH_ANONYMOUS_ENABLED=true
+ - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
+ - GF_FEATURE_TOGGLES_ENABLE=alertingSimplifiedRouting,alertingQueryAndExpressionsStepMode,traceqlEditor
+ volumes:
+ - ./config/grafana-ds.yaml:/etc/grafana/provisioning/datasources/datasources.yaml
+ ports:
+ - "3000:3000"
+ networks:
+ - warden
+
+ # Tempo runs as user 10001, and docker compose creates the volume as root.
+ # As such, we need to chown the volume in order for Tempo to start correctly.
+ init:
+ image: &tempoImage grafana/tempo:2.8.2
+ user: root
+ entrypoint:
+ - "chown"
+ - "10001:10001"
+ - "/var/tempo"
+ volumes:
+ - ./tempo-data:/var/tempo
+
+ tempo:
+ image: *tempoImage
+ command: [ "-config.file=/etc/tempo.yaml" ]
+ volumes:
+ - ./config/tempo.yaml:/etc/tempo.yaml
+ - ./tempo-data:/var/tempo
+ ports:
+ - "3200:3200"
+ - "4317:4317"
+ depends_on:
+ - init
+ networks:
+ - warden
+
+ # And put them in an OTEL collector pipeline...
+ otel-collector:
+ image: otel/opentelemetry-collector:0.131.1
+ command: [ "--config=/etc/otel-collector.yaml" ]
+ volumes:
+ - ./config/otel-collector.yaml:/etc/otel-collector.yaml
+ networks:
+ - warden
+
+networks:
+ warden:
diff --git a/contrib/docker-compose/config/grafana-ds.yaml b/contrib/docker-compose/config/grafana-ds.yaml
new file mode 100644
index 0000000..3281bfb
--- /dev/null
+++ b/contrib/docker-compose/config/grafana-ds.yaml
@@ -0,0 +1,27 @@
+apiVersion: 1
+
+datasources:
+- name: Tempo
+ type: tempo
+ access: proxy
+ orgId: 1
+ url: http://tempo:3200
+ basicAuth: false
+ isDefault: true
+ version: 1
+ editable: false
+ apiVersion: 1
+ uid: tempo
+ jsonData:
+ httpMethod: GET
+ streamingEnabled:
+ search: true
+- name: Loki
+ type: loki
+ access: proxy
+ orgId: 1
+ url: http://loki:3100
+ basicAuth: false
+ isDefault: false
+ version: 1
+ editable: false
diff --git a/contrib/docker-compose/config/otel-collector.yaml b/contrib/docker-compose/config/otel-collector.yaml
new file mode 100644
index 0000000..558bc5d
--- /dev/null
+++ b/contrib/docker-compose/config/otel-collector.yaml
@@ -0,0 +1,14 @@
+receivers:
+ otlp:
+ protocols:
+ grpc:
+exporters:
+ otlp:
+ endpoint: tempo:4317
+ tls:
+ insecure: true
+service:
+ pipelines:
+ traces:
+ receivers: [otlp]
+ exporters: [otlp]
diff --git a/contrib/docker-compose/config/tempo.yaml b/contrib/docker-compose/config/tempo.yaml
new file mode 100644
index 0000000..218eeb5
--- /dev/null
+++ b/contrib/docker-compose/config/tempo.yaml
@@ -0,0 +1,36 @@
+stream_over_http_enabled: true
+server:
+ http_listen_port: 3200
+ log_level: info
+
+query_frontend:
+ search:
+ duration_slo: 5s
+ throughput_bytes_slo: 1.073741824e+09
+ metadata_slo:
+ duration_slo: 5s
+ throughput_bytes_slo: 1.073741824e+09
+ trace_by_id:
+ duration_slo: 5s
+
+distributor:
+ receivers:
+ otlp:
+ protocols:
+ grpc:
+ endpoint: "tempo:4317"
+
+ingester:
+ max_block_duration: 5m # cut the headblock when this much time passes. this is being set for demo purposes and should probably be left alone normally
+
+compactor:
+ compaction:
+ block_retention: 1h # overall Tempo trace retention. set for demo purposes
+
+storage:
+ trace:
+ backend: local # backend configuration to use
+ wal:
+ path: /var/tempo/wal # where to store the wal locally
+ local:
+ path: /var/tempo/blocks