version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
user: root
volumes:
- ./prometheus:/etc/prometheus
- prometheus_data:/prometheus
- /etc/localtime:/etc/localtime:ro
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=30d'
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
- '--web.enable-lifecycle'
ports:
- "9090:9090"
networks:
- monitoring
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "localhost:9090/-/healthy"]
interval: 30s
timeout: 10s
retries: 3
alertmanager:
image: prom/alertmanager:latest
container_name: alertmanager
volumes:
- ./alertmanager:/etc/alertmanager
- alertmanager_data:/alertmanager
command:
- '--config.file=/etc/alertmanager/config.yml'
- '--storage.path=/alertmanager'
ports:
- "9093:9093"
networks:
- monitoring
restart: unless-stopped
grafana:
image: grafana/grafana:latest
container_name: grafana
user: "472"
volumes:
- grafana_data:/var/lib/grafana
- ./grafana/provisioning:/etc/grafana/provisioning
- ./grafana/dashboards:/var/lib/grafana/dashboards
- /etc/localtime:/etc/localtime:ro
environment:
- GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER:-admin}
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin}
- GF_USERS_ALLOW_SIGN_UP=false
- GF_USERS_DEFAULT_THEME=dark
- GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-piechart-panel
ports:
- "3000:3000"
networks:
- monitoring
depends_on:
- prometheus
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
user: root
command: --path.procfs=/host/proc --path.sysfs=/host/sys
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
networks:
- monitoring
restart: unless-stopped
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: cadvisor
privileged: true
devices:
- /dev/kmsg:/dev/kmsg
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro
- /cgroup:/cgroup:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- monitoring
restart: unless-stopped
blackbox-exporter:
image: prom/blackbox-exporter:latest
container_name: blackbox-exporter
volumes:
- ./blackbox:/etc/blackbox_exporter
ports:
- "9115:9115"
networks:
- monitoring
restart: unless-stopped
process-exporter:
image: ncabatoff/process-exporter:latest
container_name: process-exporter
command: ["-config.path=/etc/process-exporter/config.yml"]
volumes:
- /proc:/host/proc:ro
- ./process-exporter:/etc/process-exporter
networks:
- monitoring
restart: unless-stopped
redis-exporter:
image: oliver006/redis_exporter:latest
container_name: redis-exporter
environment:
- REDIS_ADDR=redis:6379
ports:
- "9121:9121"
networks:
- monitoring
restart: unless-stopped
depends_on:
- redis
redis:
image: redis:alpine
container_name: redis
command: ["redis-server", "--appendonly", "yes"]
volumes:
- redis_data:/data
networks:
- monitoring
restart: unless-stopped
loki:
image: grafana/loki:latest
container_name: loki
ports:
- "3100:3100"
volumes:
- loki_data:/loki
- ./loki:/etc/loki
command: -config.file=/etc/loki/loki-config.yml
networks:
- monitoring
restart: unless-stopped
promtail:
image: grafana/promtail:latest
container_name: promtail
volumes:
- /var/log:/var/log
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- ./promtail:/etc/promtail
command: -config.file=/etc/promtail/promtail-config.yml
networks:
- monitoring
restart: unless-stopped
networks:
monitoring:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.20.0.0/16
gateway: 172.20.0.1
volumes:
prometheus_data:
grafana_data:
alertmanager_data:
redis_data:
loki_data: