1+ # Observability main stack. Prometheus and Grafana.
2+ # Depends on docker-compose.exporters.yml for the network
3+ name : " cogstack-observability"
4+ services :
5+ prometheus :
6+ image : cogstacksystems/cogstack-observability-prometheus:latest
7+ restart : unless-stopped
8+ ports :
9+ - " 9090:9090"
10+ volumes :
11+ - ${BASE_DIR-.}/prometheus:/etc/prometheus/cogstack/site/
12+ - prometheus-data:/prometheus
13+ networks :
14+ - observability
15+ command :
16+ - " --config.file=/etc/prometheus/cogstack/defaults/prometheus.yml"
17+ - " --storage.tsdb.path=/prometheus"
18+ - " --storage.tsdb.retention.time=30d"
19+ - " --web.external-url=/prometheus"
20+ - " --web.route-prefix=/prometheus"
21+ - " --web.enable-remote-write-receiver"
22+ grafana :
23+ image : cogstacksystems/cogstack-observability-grafana:latest
24+ restart : unless-stopped
25+ volumes :
26+ - grafana-data:/var/lib/grafana
27+ networks :
28+ - observability
29+ environment :
30+ - GF_AUTH_ANONYMOUS_ENABLED=true # Allows use of grafana without sign in
31+ - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer
32+ traefik :
33+ image : cogstacksystems/cogstack-observability-traefik:latest
34+ networks :
35+ - observability
36+ restart : unless-stopped
37+ ports :
38+ - " 80:80"
39+ volumes :
40+ - /var/run/docker.sock:/var/run/docker.sock:ro # So that Traefik can listen to the Docker events
41+ blackbox-exporter :
42+ image : cogstacksystems/cogstack-observability-blackbox-exporter:latest
43+ restart : unless-stopped
44+ networks :
45+ - observability
46+ alloy :
47+ image : grafana/alloy:latest
48+ command :
49+ - run
50+ - --server.http.listen-addr=0.0.0.0:12345
51+ - --storage.path=/var/lib/alloy/data
52+ - --server.http.ui-path-prefix=/alloy
53+ - /etc/alloy
54+ ports :
55+ - " 12345:12345"
56+ volumes :
57+ - ${BASE_DIR-.}/grafana-alloy/config.alloy:/etc/alloy/config.alloy
58+ # CAdvisor
59+ - /:/rootfs:ro
60+ - /var/run:/var/run:rw
61+ - /sys:/sys:ro
62+ - /var/lib/docker/:/var/lib/docker:ro
63+ labels :
64+ - " traefik.enable=true"
65+ - " traefik.http.routers.alloy.rule=PathPrefix(`/alloy`)"
66+ environment :
67+ - PROMETHEUS_URL=${PROMETHEUS_URL-http://cogstack-observability-prometheus-1:9090/prometheus/api/v1/write}
68+ - ALLOY_HOSTNAME=${ALLOY_HOSTNAME} # Used to add a label to metrics
69+ - ALLOY_IP_ADDRESS=${ALLOY_IP_ADDRESS} # Used to add a label to metrics
70+ networks :
71+ - observability
72+ networks :
73+ observability :
74+ driver : bridge
75+
76+ volumes :
77+ prometheus-data :
78+ grafana-data:
0 commit comments