version: '3.8' services: # ------------------------------------------------------------------ # Appliance Hub: Persistence, Telemetry & Alerting # ------------------------------------------------------------------ # Time Series Database victoriametrics: image: victoriametrics/victoria-metrics:v1.93.3 ports: - "8428:8428" command: - "--storageDataPath=/vmetrics-data" - "--httpListenAddr=:8428" volumes: - vmetrics-data:/vmetrics-data networks: - appliance-network # Alert Evaluation Engine vmalert: image: victoriametrics/vmalert:v1.93.3 ports: - "8880:8880" command: - "-rule=/etc/alerts/alerts.yml" - "-datasource.url=http://victoriametrics:8428" - "-notifier.url=http://alertmanager:9093" - "-remoteWrite.url=http://victoriametrics:8428" - "-remoteRead.url=http://victoriametrics:8428" volumes: - ./alerts:/etc/alerts depends_on: - victoriametrics - alertmanager networks: - appliance-network # Alert Routing, Grouping, Deduplication alertmanager: image: prom/alertmanager:v0.26.0 ports: - "9093:9093" command: - "--config.file=/etc/alertmanager/config.yml" - "--storage.path=/alertmanager" volumes: - ./alertmanager-config.yml:/etc/alertmanager/config.yml - alertmanager-data:/alertmanager networks: - appliance-network # Log Aggregation loki: image: grafana/loki:2.9.1 ports: - "3100:3100" command: -config.file=/etc/loki/local-config.yaml networks: - appliance-network # OpenTelemetry Collector (receives from Worker nodes) otel-collector: image: otel/opentelemetry-collector-contrib:0.87.0 ports: - "4317:4317" # OTLP gRPC - "4318:4318" # OTLP HTTP command: ["--config=/etc/otelcol/config.yaml"] volumes: - ./otel-config.yaml:/etc/otelcol/config.yaml depends_on: - victoriametrics - loki networks: - appliance-network volumes: vmetrics-data: alertmanager-data: networks: appliance-network: driver: bridge