07 — Monitor & Observe

Model Monitoring Dashboards#

ObservabilityPractice 1 min read
◆ The PatternPrediction health, feature drift, and system metrics in one view

A model monitoring dashboard tracks three layers: system metrics (latency, errors, throughput), data metrics (feature distributions, missing rates), and model metrics (prediction distribution, accuracy if labels are available). Grafana with Prometheus is a common stack.

// Interactive — monitoring dashboard simulation
LayerMetricsAlert When
SystemLatency, error rate, throughputp99 > SLO or error rate > 1%
DataFeature distributions, null ratesPSI > 0.2 or null rate spikes
ModelPrediction distribution, confidenceDistribution shift or low confidence
Pattern bridge: ML monitoring dashboards are structured like trading dashboards — layered views from system health down to individual signal quality. The learning curve concept extends to tracking model performance over time in production.
Worked example

Labels arrive weeks late, so watch the predictions. Over two baseline weeks 8.1% of 5,000 daily predictions are positive; a p-chart puts the control limits ±1.16 points away. When the true rate moves to 11% on day 20, the chart flags day 20 itself, and days 21 and 22 after it — weeks before any accuracy number could.

Where it misleads
  • A stable prediction rate does not prove a healthy model; the inputs and the outcome can change together.
  • Watching dozens of charts at three-sigma limits produces false alarms; decide which signals page and which only inform.
  • Dashboards nobody looks at are not monitoring. Tie each panel to an owner and an action.
In code
rng = np.random.default_rng(2)
n = 5_000                                                 # predictions per day
rate = np.r_[np.full(20, 0.08), np.full(10, 0.11)]        # share predicted positive; it shifts on day 20
pos = rng.binomial(n, rate) / n
base = pos[:14].mean()                                    # two weeks of baseline
limit = 3 * np.sqrt(base * (1 - base) / n)                # p-chart control limits
flagged = np.where(np.abs(pos - base) > limit)[0]
Python, in your browser — edit the code and run it again

Assumes import numpy as np and import pandas as pd. Each snippet carries its own example numbers; the comments say which are made up or simulated.

Sources
  • D. C. Montgomery, Introduction to Statistical Quality Control, Wiley (any recent edition) — p-charts
  • E. Breck, S. Cai, E. Nielsen, M. Salib & D. Sculley, “The ML Test Score: A Rubric for ML Production Readiness and Technical Debt Reduction”, IEEE International Conference on Big Data, 2017
  • Designing Machine Learning Systems, C. Huyen, O’Reilly, 2022

Last reviewed October 2026 · How this site checks its content · Report a mistake

Linked from 2
← Previous
Drift Detection in Production
Open in the full reader, with the topic sidebar