CephLXXVIII · Monitoring the Monitoring PathMonitoring the Monitoring Path
Operating the monitoring stack
What you'll learn
- Apply operational discipline to the monitoring stack
- Define alerts for the monitoring components
- Manage monitoring configuration as code
- Review alerting effectiveness periodically
Prerequisites
None — start here.
Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18
Why this matters in production
The monitoring stack is production infrastructure whose failure disables the detection of every other failure. It is routinely treated as a side-project.
Alerts for the monitoring components
- alert: PrometheusDown
expr: up{job="prometheus"} == 0
for: 5m
labels: { severity: page }
- alert: PrometheusRuleEvaluationFailing
expr: increase(prometheus_rule_evaluation_failures_total[10m]) > 0
for: 10m
labels: { severity: page }
- alert: PrometheusRuleEvaluationSlow
expr: |
prometheus_rule_group_last_duration_seconds
> prometheus_rule_group_interval_seconds
for: 15m
labels: { severity: ticket }
- alert: PrometheusTSDBReloadFailing
expr: prometheus_tsdb_reloads_failures_total > 0
for: 10m
labels: { severity: ticket }
- alert: AlertmanagerNotificationsFailing
expr: increase(alertmanager_notifications_failed_total[10m]) > 0
for: 10m
labels: { severity: page }
- alert: AlertmanagerClusterDegraded
expr: alertmanager_cluster_members < 3
for: 10m
labels: { severity: ticket }
alertmanager_notifications_failed_total is the highest-value one: it
catches alerts that fired and were not delivered.
Configuration as code
monitoring/
prometheus/
prometheus.yml
rules/
ceph-health.yml
ceph-capacity.yml
ceph-performance.yml
monitoring-self.yml
alertmanager/
alertmanager.yml
grafana/
dashboards/
ceph/*.json
provisioning/
# validated in CI before deployment
promtool check config prometheus/prometheus.yml
promtool check rules prometheus/rules/*.yml
promtool test rules prometheus/rules/tests/*.yml
amtool check-config alertmanager/alertmanager.yml
A rule change that breaks evaluation disables every rule in its group, which is why validation belongs in CI rather than in production.
Change control
| Change | Requires |
|---|---|
| A new alert rule | review, a unit test, a stated response |
| A threshold change | the reason recorded |
| A silence longer than a day | an expiry and an owner |
| A dashboard change | review, since it is code |
| Removing an alert | the reason it is no longer needed |
Periodic review
Quarterly alerting review:
- which alerts fired, and how many times each
- which were acknowledged without action
- which incidents had no alert
- which alerts have never fired
- are the runbooks still accurate
# alerts that fired in the last quarter
sum by (alertname) (count_over_time(ALERTS{alertstate="firing"}[90d]))
An alert that fires weekly and is always acknowledged is either a threshold problem or a standing condition that should be fixed. An alert that has never fired in two years may be broken, and the review is where that is discovered rather than during an incident.
Quiz
Knowledge check · 4 questions
Q1. Why does splitting alert rules across several files limit risk?
Q2. An alert that has never fired in two years is working correctly and needs no attention.
Q3. Establish operational discipline for a monitoring stack.
A monitoring stack has grown over two years. Rules are edited directly on the Prometheus host, dashboards in the Grafana UI, and there is no review process. Nobody knows which alerts still work.
Q4. Which Alertmanager metric catches alerts that fired but were not delivered?
Passing score: 75%. Answers are checked in this browser.
Production discipline
Keep all monitoring configuration in version control with promtool
and amtool validation in CI; a syntax error disables every rule in its
group. Run a quarterly review covering which alerts fired, which were
acknowledged without action, and which incidents had no alert at all.
Cross-course references
- Kubernetes: monitoring configuration as code with CI validation is standard practice
- Linux: any configuration edited in place drifts and cannot be reviewed