diff options
author | rtkay123 <dev@kanjala.com> | 2025-08-09 11:01:09 +0200 |
---|---|---|
committer | rtkay123 <dev@kanjala.com> | 2025-08-09 11:01:09 +0200 |
commit | 0d4395a8f642312b1a7964ea8cdea1d43cf81c8b (patch) | |
tree | 0bb26862c1bcdd1c64d3dd6f2785272eef8d466c /contrib/docker-compose | |
parent | affa986bf1f84b725bd23309986250ff04cf2c93 (diff) | |
download | warden-0d4395a8f642312b1a7964ea8cdea1d43cf81c8b.tar.bz2 warden-0d4395a8f642312b1a7964ea8cdea1d43cf81c8b.zip |
feat: tempo and loki
Diffstat (limited to 'contrib/docker-compose')
-rw-r--r-- | contrib/docker-compose/compose-monitoring.yaml | 70 | ||||
-rw-r--r-- | contrib/docker-compose/config/grafana-ds.yaml | 27 | ||||
-rw-r--r-- | contrib/docker-compose/config/otel-collector.yaml | 14 | ||||
-rw-r--r-- | contrib/docker-compose/config/tempo.yaml | 36 |
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 |