106 lines
3.1 KiB
YAML
106 lines
3.1 KiB
YAML
---
|
|
# ------------------------------------------------------------------------------
|
|
# FILE: boilerplates/monitoring/compose.yaml
|
|
# DESCRIPTION: Combined Prometheus + Grafana + Alertmanager + Node Exporter
|
|
# stack for cinderella-castle (10.1.71.31)
|
|
#
|
|
# Generated from:
|
|
# boilerplates/prometheus/compose.yaml (prom/prometheus:v3.9.1)
|
|
# boilerplates/grafana/compose.yaml (grafana/grafana-oss:12.3.3)
|
|
#
|
|
# Prometheus TSDB on dedicated second disk mounted at /var/lib/prometheus.
|
|
# Grafana data on named Docker volume.
|
|
# ------------------------------------------------------------------------------
|
|
|
|
services:
|
|
|
|
prometheus:
|
|
image: docker.io/prom/prometheus:v3.9.1
|
|
container_name: prometheus
|
|
restart: unless-stopped
|
|
user: "65534:65534"
|
|
command:
|
|
- --config.file=/etc/prometheus/prometheus.yaml
|
|
- --storage.tsdb.path=/prometheus
|
|
- --storage.tsdb.retention.time=${PROMETHEUS_RETENTION_TIME:-15d}
|
|
- --storage.tsdb.retention.size=${PROMETHEUS_RETENTION_SIZE:-58GB}
|
|
- --web.enable-lifecycle
|
|
ports:
|
|
- "127.0.0.1:9090:9090"
|
|
volumes:
|
|
- /opt/docker/monitoring/prometheus/prometheus.yaml:/etc/prometheus/prometheus.yaml:ro
|
|
- /var/lib/prometheus:/prometheus
|
|
networks:
|
|
- monitoring
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:9090/-/healthy"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 10s
|
|
|
|
grafana:
|
|
image: docker.io/grafana/grafana-oss:12.3.3
|
|
container_name: grafana
|
|
restart: unless-stopped
|
|
environment:
|
|
- GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER:-admin}
|
|
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD}
|
|
- GF_SERVER_ROOT_URL=https://grafana.local.mk-labs.cloud
|
|
ports:
|
|
- "3000:3000"
|
|
volumes:
|
|
- grafana_data:/var/lib/grafana
|
|
- /opt/docker/monitoring/grafana/datasource.yml:/etc/grafana/provisioning/datasources/datasource.yml:ro
|
|
networks:
|
|
- monitoring
|
|
depends_on:
|
|
prometheus:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/api/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 15s
|
|
|
|
alertmanager:
|
|
image: docker.io/prom/alertmanager:latest
|
|
container_name: alertmanager
|
|
restart: unless-stopped
|
|
command:
|
|
- --config.file=/etc/alertmanager/alertmanager.yml
|
|
- --storage.path=/alertmanager
|
|
ports:
|
|
- "127.0.0.1:9093:9093"
|
|
volumes:
|
|
- /opt/docker/monitoring/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml:ro
|
|
- alertmanager_data:/alertmanager
|
|
networks:
|
|
- monitoring
|
|
|
|
node-exporter:
|
|
image: docker.io/prom/node-exporter:latest
|
|
container_name: node-exporter
|
|
restart: unless-stopped
|
|
pid: host
|
|
command:
|
|
- --path.rootfs=/host
|
|
ports:
|
|
- "9100:9100"
|
|
volumes:
|
|
- /:/host:ro,rslave
|
|
networks:
|
|
- monitoring
|
|
|
|
networks:
|
|
monitoring:
|
|
driver: bridge
|
|
name: monitoring
|
|
|
|
volumes:
|
|
grafana_data:
|
|
driver: local
|
|
alertmanager_data:
|
|
driver: local
|