📈 Prometheus + Grafana monitoring stack
Metrics scrape, dashboards, and alert rules — Compose or K8s. · ~50 min
Reviewed: ·Tested on: Kubernetes 1.29, Terraform 1.8, Ubuntu 22.04
If you're on Kubernetes 1.27 or older
- Ingress: networking.k8s.io/v1 is required — v1beta1 removed in 1.22+
- Pod Security: PodSecurityPolicy removed in 1.25 — use Pod Security Admission (PSA) labels
- HPA v2 autoscaling/v2 is stable — check API version in manifests
If you're on Kubernetes 1.28
- Sidecar containers (1.29+) change init-container ordering — review sidecar docs before upgrade
- Verify metrics-server and HPA after control plane bump
If you're on Terraform 1.7 or older
- S3 native locking (use_lockfile) differs from DynamoDB — don't mix backends mid-migration
- Provider version constraints: run terraform init -upgrade after bump
- terraform test (1.6+) replaces some external test harness patterns
1. Start with Compose template
2. Add scrape targets
# prometheus.yml
scrape_configs:
- job_name: node
static_configs:
- targets: ['node-exporter:9100']
- job_name: app
static_configs:
- targets: ['app:8080']3. Import Grafana dashboards
Dashboard ID 1860 (Node Exporter), 6417 (K8s) — or build from PromQL.
4. Wire alerts to on-call
# alertmanager.yml route to PagerDuty/Slack # PromQL examples: /snippets/#promql-error-rate