cd backend/monitoring
docker compose up -dThis launches:
- Prometheus: http://localhost:9090 (scrapes app at :4000/metrics)
- Grafana: http://localhost:3001 (admin/admin) - auto-provisioned dashboards/datasources
- App Metrics Endpoint: Ensure
/metricsexposed (default in server.js middleware) - Env Vars:
METRICS_TOKEN=your_token # Optional bearer auth in prometheus.yml - Docker Compose Override (prod.yml):
services: prometheus: volumes: - prometheus_data:/prometheus
- Helm/K8s: Use prometheus-operator CRDs for scrape configs
# Check app metrics
curl http://localhost:4000/metrics | head -20
# Prometheus targets
http://localhost:9090/targets
# Grafana Dashboard
http://localhost:3001/d/ste-overview| Service | Port | Purpose |
|---|---|---|
| Prometheus | 9090 | Metrics storage/query |
| Grafana | 3001 | Dashboards/alerting UI |
| App | 4000 | /metrics endpoint |
- No metrics: Check
host.docker.internal:4000/metricsaccessible from Prometheus - Slow queries: Threshold 200ms logged +
db_slow_queries_total - Shutdown:
docker compose down -v