Prometheus + Grafana + Loki + Alertmanager Stack
Full observability Docker Compose stack with Prometheus, Grafana, Loki, and Alertmanager for metrics, logs, dashboards, and alert routing.
yaml
docker-compose.yml
services:
prometheus:
image: prom/prometheus:v3.2.1
restart: unless-stopped
ports:
- ${PROMETHEUS_PORT}:9090
volumes:
- prometheus_data:/prometheus
grafana:
image: grafana/grafana:11.6.1
restart: unless-stopped
environment:
GF_SECURITY_ADMIN_USER: ${GRAFANA_ADMIN_USER}
GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_ADMIN_PASSWORD}
ports:
- ${GRAFANA_PORT}:3000
volumes:
- grafana_data:/var/lib/grafana
loki:
image: grafana/loki:3.4.2
restart: unless-stopped
command: "-config.file=/etc/loki/local-config.yaml"
ports:
- ${LOKI_PORT}:3100
volumes:
- loki_data:/loki
alertmanager:
image: prom/alertmanager:v0.28.1
restart: unless-stopped
ports:
- ${ALERTMANAGER_PORT}:9093
volumes:
- alertmanager_data:/alertmanager
volumes:
prometheus_data:
grafana_data:
loki_data:
alertmanager_data:
.ENV
.env example
PROMETHEUS_PORT=9090
GRAFANA_ADMIN_USER=admin
GRAFANA_ADMIN_PASSWORD=changeme123
GRAFANA_PORT=3000
LOKI_PORT=3100
ALERTMANAGER_PORT=9093
deployment
Quick Start
- Create a working directory named after the service.
- Copy the compose file and generated `.env` into that directory.
- Review the variables and replace placeholders with real values.
- Run `docker compose up -d`.
mkdir prometheus-grafana-loki-alertmanager-stack
cd prometheus-grafana-loki-alertmanager-stack
# create docker-compose.yml
# create .env
docker compose up -d