Cloud / DevOps Engineer · Focus area 3: CI/CD and reliability
CD9: Monitoring, alerts and scaling
Goal: measure what users experience, set objectives for it, collect metrics with Prometheus, show them on Grafana dashboards, write alerts that fire for real problems and say what to do, and scale the service up and down with load without failing requests.
You'll need: CD2, CD3, CD8, Module 72 (Production Operations), Module 95 (Scaling), Module 96 (Reliability Engineering), and the RouteRani kit.
Where this is used: during an exam-results release, a cricket final or a festival sale, teams watch dashboards of requests, errors and response times, get paged when something breaks, and rely on autoscaling to add capacity. Site Reliability Engineering (SRE) teams at large companies are built around these practices.
How it differs: an app developer checks whether their feature works. A DevOps engineer checks whether the whole service works for users right now, finds out before users complain, and makes sure the right person is woken up for the right reasons, and nobody for the wrong ones.
Time: reading about 2½ hours · practice (the Try it tasks) about 3 hours · assignment about 4 hours.
Lessons
- 1What to measure, and how good is good enoughReading 15–25 minutes, plus practice✓
- 2Prometheus and PromQLReading 15–25 minutes, plus practice✓
- 3Dashboards that answer questionsReading 15–25 minutes, plus practice✓
- 4Alerts people trustReading 15–25 minutes, plus practice✓
- 5Scaling with loadReading 15–25 minutes, plus practice✓
🛠️Assignment: See it, hear it, scale it
This is the core of Project 3.
- Make Prometheus find every API copy with service discovery, and add Grafana with a provisioned data source and dashboard.
- Build the dashboard: request rate, failed share, p95, copies answering, version running, with units.
- Rewrite the alert rules (error share with
rate(), p95 from the histogram, a stopped copy), each withfor, severity, summary and runbook, and writealerts.test.ymlwith cases that fire and cases that don't. - Fix
tools/autoscale.js: rounding up, minimum and maximum, a stabilisation window for scaling down, and no change when Prometheus can't be read. - Record a load test with scaling in
docs/observe.md: copies over time, failures, and the dashboard during the test.
Self-check before you finish:
- [ ] With 3 copies, Prometheus shows 3 healthy targets.
- [ ] The alert tests pass, and no alert fires under normal traffic.
- [ ] A release that fails 25% of requests fires the error alert within 2½ minutes.
- [ ] The autoscaler reaches its maximum under load, returns to its minimum after the wait, and does nothing while Prometheus is stopped.
- [ ] All 8 tests in
npm run test:observepass.
✅Module check
Explain in a few sentences, in your own words:
How do you know a service is healthy, find out quickly when it isn't, and keep it healthy as load changes?
Show a good answer
A good answer mentions: measuring rate, errors and duration (with percentiles) as SLIs, with SLOs and an error budget; Prometheus scraping
every copy through service discovery, and PromQL with rate(), ratios and histogram_quantile; low-cardinality labels; a provisioned Grafana
dashboard that answers the main questions at a glance; alerts on symptoms with for durations, severities, summaries and runbooks, tested with
promtool and routed by Alertmanager; and horizontal scaling on a matching signal with the ceil formula, bounds, a stabilisation window, no action
on missing data, and a load test to prove it.
📚Official references
Official documentation and guidance for this module's topics, chosen on 2 November 2026. Tools, laws and standards change, so check the current version before you rely on a detail. If a link has moved, search the same site.
📝Module quiz
10 questions · 10 marks each · 100 marks in all · pass mark 70% · retry as often as you like ·
