All checks were successful
CI / Unit & Component Tests (pull_request) Successful in 3m19s
CI / OCR Service Tests (pull_request) Successful in 16s
CI / Backend Unit Tests (pull_request) Successful in 4m28s
CI / fail2ban Regex (pull_request) Successful in 39s
CI / Compose Bucket Idempotency (pull_request) Successful in 55s
Creates the skeleton observability stack (no running services yet) that all
subsequent Grafana LGTM + GlitchTip issues depend on:
- docker-compose.observability.yml: external archiv-net join, obs-net bridge,
named volumes for all five services, placeholder comments for each service
group (Metrics/Logs/Traces/Dashboards/Error Tracking), startup-order note
- infra/observability/{prometheus,loki,promtail,tempo,grafana/provisioning/{datasources,dashboards}}/.gitkeep
- .env.example: new # --- Observability --- section with PORT_GRAFANA,
PORT_GLITCHTIP, PORT_PROMETHEUS, GLITCHTIP_DOMAIN, GLITCHTIP_SECRET_KEY
(with generation hint), SENTRY_DSN, VITE_SENTRY_DSN
Verified: docker compose -f docker-compose.observability.yml config exits 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
49 lines
1.4 KiB
YAML
49 lines
1.4 KiB
YAML
# Observability stack — Grafana LGTM + GlitchTip
|
|
#
|
|
# Requires the main stack to be running first:
|
|
# docker compose up -d # creates archiv-net
|
|
# docker compose -f docker-compose.observability.yml up -d
|
|
#
|
|
# To validate without starting:
|
|
# docker compose -f docker-compose.observability.yml config
|
|
|
|
# No services defined yet — added in subsequent issues:
|
|
#
|
|
# --- Metrics: Prometheus ---
|
|
# prometheus: (see issue #573)
|
|
#
|
|
# --- Logs: Loki + Promtail ---
|
|
# loki: (see issue #574)
|
|
# promtail: (see issue #575)
|
|
#
|
|
# --- Traces: Tempo ---
|
|
# tempo: (see future issue)
|
|
#
|
|
# --- Dashboards: Grafana ---
|
|
# grafana: (see future issue)
|
|
#
|
|
# --- Error Tracking: GlitchTip ---
|
|
# glitchtip: (see future issue)
|
|
services: {}
|
|
|
|
networks:
|
|
# Shared network created by the main docker-compose.yml.
|
|
# The observability stack joins as a peer so Prometheus can scrape
|
|
# archive-backend by container name. The observability stack must NOT
|
|
# attempt to create this network — it will fail with a clear error if
|
|
# the main stack is not running yet.
|
|
archiv-net:
|
|
external: true
|
|
|
|
# Internal network for observability-service-to-service traffic
|
|
# (e.g. Grafana → Prometheus, Grafana → Loki, Grafana → Tempo).
|
|
obs-net:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
prometheus_data:
|
|
loki_data:
|
|
tempo_data:
|
|
grafana_data:
|
|
glitchtip_data:
|