livrare lot 2

This commit is contained in:
EVOTECH IT SRL 2026-07-10 03:39:53 -07:00
commit 8ecc78e729
763 changed files with 164593 additions and 0 deletions

View file

@ -0,0 +1,183 @@
# DiDi Observability Stack
# ========================
# Implements LOT 2 modul 8 (Observabilitate & Logging) conform oferta EVOTECH §A.9:
# - Prometheus — metrics scraping
# - Grafana — dashboards
# - Loki — log aggregation
# - Promtail — log shipper (Docker logs → Loki)
# - Jaeger — distributed tracing UI
# - OTel Collector — receives traces from services, forwards to Jaeger
# - Alertmanager — alert routing (email, Slack/Teams, PagerDuty)
#
# Network: didi-network (shared cu DIDI + AI platform stacks)
# Storage: volumes locale persistente
#
# Quick start:
# cd /home/admin365/didi_mono/didi_mono/backend/observability
# docker compose up -d
#
# UI access:
# Grafana: http://10.11.10.12:3030 (admin / GRAFANA_ADMIN_PASSWORD)
# Prometheus: http://10.11.10.12:9090
# Jaeger UI: http://10.11.10.12:16686
# Alertmanager: http://10.11.10.12:9093
services:
prometheus:
image: prom/prometheus:v2.55.0
container_name: didi-prometheus
restart: unless-stopped
user: "65534:65534" # nobody:nobody (avoids root warnings)
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ./prometheus/rules:/etc/prometheus/rules:ro
- prometheus-data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=30d'
- '--storage.tsdb.retention.size=20GB'
- '--web.enable-lifecycle'
- '--web.enable-admin-api'
ports:
- "0.0.0.0:9090:9090"
networks:
- didi-network
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:9090/-/healthy"]
interval: 30s
timeout: 5s
retries: 3
grafana:
image: grafana/grafana:11.3.0
container_name: didi-grafana
restart: unless-stopped
depends_on:
prometheus:
condition: service_healthy
environment:
GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_ADMIN_PASSWORD:-admin}
GF_USERS_ALLOW_SIGN_UP: "false"
GF_AUTH_ANONYMOUS_ENABLED: "false"
GF_INSTALL_PLUGINS: "grafana-piechart-panel,grafana-clock-panel"
GF_FEATURE_TOGGLES_ENABLE: "traceqlEditor"
volumes:
- ./grafana/provisioning:/etc/grafana/provisioning:ro
- ./grafana/dashboards:/var/lib/grafana/dashboards:ro
- grafana-data:/var/lib/grafana
ports:
- "0.0.0.0:3030:3000"
networks:
- didi-network
healthcheck:
test: ["CMD-SHELL", "wget --quiet --tries=1 --spider http://localhost:3000/api/health || exit 1"]
interval: 30s
timeout: 5s
retries: 3
loki:
image: grafana/loki:3.2.0
container_name: didi-loki
restart: unless-stopped
volumes:
- ./loki/loki-config.yaml:/etc/loki/local-config.yaml:ro
- loki-data:/loki
command: -config.file=/etc/loki/local-config.yaml
ports:
- "0.0.0.0:3100:3100"
networks:
- didi-network
healthcheck:
test: ["CMD-SHELL", "wget --quiet --tries=1 --spider http://localhost:3100/ready || exit 1"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
promtail:
image: grafana/promtail:3.2.0
container_name: didi-promtail
restart: unless-stopped
depends_on:
loki:
condition: service_healthy
volumes:
- ./promtail/promtail-config.yaml:/etc/promtail/config.yaml:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- promtail-data:/tmp
command: -config.file=/etc/promtail/config.yaml
networks:
- didi-network
jaeger:
image: jaegertracing/all-in-one:1.62.0
container_name: didi-jaeger
restart: unless-stopped
environment:
COLLECTOR_OTLP_ENABLED: "true"
SPAN_STORAGE_TYPE: memory
BADGER_EPHEMERAL: "false"
BADGER_DIRECTORY_VALUE: /badger/data
BADGER_DIRECTORY_KEY: /badger/key
volumes:
- jaeger-data:/badger
ports:
- "0.0.0.0:16686:16686" # Jaeger UI
- "0.0.0.0:14250:14250" # gRPC collector (legacy)
- "0.0.0.0:14268:14268" # HTTP collector (legacy)
- "0.0.0.0:4317:4317" # OTLP gRPC
- "0.0.0.0:4318:4318" # OTLP HTTP
networks:
- didi-network
otel-collector:
image: otel/opentelemetry-collector-contrib:0.110.0
container_name: didi-otel-collector
restart: unless-stopped
depends_on:
- jaeger
- prometheus
volumes:
- ./otel-collector/otel-collector.yaml:/etc/otelcol-contrib/config.yaml:ro
command: ["--config=/etc/otelcol-contrib/config.yaml"]
ports:
- "0.0.0.0:4319:4317" # OTLP gRPC (services push traces here)
- "0.0.0.0:4320:4318" # OTLP HTTP
- "0.0.0.0:8888:8888" # collector self-metrics
- "0.0.0.0:8889:8889" # prometheus exporter
networks:
- didi-network
alertmanager:
image: prom/alertmanager:v0.27.0
container_name: didi-alertmanager
restart: unless-stopped
volumes:
- ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml:ro
- alertmanager-data:/alertmanager
command:
- '--config.file=/etc/alertmanager/alertmanager.yml'
- '--storage.path=/alertmanager'
ports:
- "0.0.0.0:9093:9093"
networks:
- didi-network
healthcheck:
test: ["CMD-SHELL", "wget --quiet --tries=1 --spider http://localhost:9093/-/healthy || exit 1"]
interval: 30s
timeout: 5s
retries: 3
volumes:
prometheus-data: {}
grafana-data: {}
loki-data: {}
promtail-data: {}
jaeger-data: {}
alertmanager-data: {}
networks:
didi-network:
external: true