Test what you actually know about Monitoring & Observability. Free sample questions below, from easy to hard, with instant explanations.
A GAUGE is the right choice for any value that can move in both directions, like queue depth, memory usage, or active connections. A counter can only increase, or reset to zero on restart, so it can't represent a value that shrinks, like a queue draining. Histograms and summaries are for observing the distribution of a stream of values, such as request durations, not for tracking one current point-in-time value.
irate() (instant rate) computes the per-second rate using just the two most recent samples in the range, which makes it very responsive to sudden changes but noisy on a graph. rate() averages the increase across the whole range vector, producing a smoother trend that's better suited for alerting and dashboards, while irate() is more useful for zooming into fast-moving, recent behavior on a fine-grained graph.
A blameless postmortem is written on the assumption that people acted reasonably given the information and tools they had at the time, so the value comes from asking systemic questions, like why a bad config could be deployed without review or a safety check catching it, since fixing those prevents the NEXT incident regardless of who was on call. Naming and focusing on an individual instead tends to make engineers hide mistakes or route around monitoring in future incidents, which produces worse data and worse outcomes over time. It doesn't mean skipping the postmortem or refusing to describe what happened, it means describing what happened without assigning personal fault.
A runbook is a step-by-step reference tied to a specific alert or failure mode, written so that whoever is on call, even someone unfamiliar with that particular system, can follow a known-good procedure instead of improvising under pressure. Linking a runbook directly from the alert reduces both mean time to resolution and the cognitive load on the responder.
Many dashboarding tools (like Grafana) support annotations, which are markers overlaid on a time-series graph at a specific timestamp, commonly wired up to fire automatically whenever a deployment happens. This makes correlating a metric change with a recent release immediately visible to anyone glancing at the dashboard, instead of requiring someone to manually cross-reference two separate systems after the fact.
By definition, p50 (the median) only describes the point below which half of all requests fall, so it is mathematically insensitive to how bad the slowest half gets; a large chunk of requests could take 5+ seconds and the p50 would barely move. This is exactly why teams track higher percentiles like p95 or p99 for user-facing latency: they specifically expose that slow tail that the median, by design, is blind to, and dismissing real complaints because 'the median looks fine' is a common and costly mistake.
Prometheus is a pull-based system: it periodically scrapes an HTTP endpoint (conventionally /metrics) exposed by the target application or an exporter sitting in front of it, and parses the plain-text metric format returned. This differs from push-based systems like StatsD, where the application itself sends metric updates outward. The pull model makes it easy for Prometheus to know a target is unreachable (a failed scrape) without needing separate heartbeat logic.
A silence (or mute) suppresses notifications for specific, matching alerts during a defined time window, without deleting the underlying alert rule, so it automatically resumes normal behavior once the window ends. This is the standard way to avoid paging someone about a problem the team already knows is happening and intentionally caused, without weakening the alert's ability to catch a genuinely unexpected problem afterward.
Good anomaly detection needs to model expected seasonality, the predictable, recurring patterns in a metric like lower traffic on weekends or at 3 AM, and compare current behavior against what's normal for that specific time context rather than a single flat baseline. Without that, the tool treats any deviation from an average as suspicious, which produces a steady stream of false positives for things that are actually completely normal, eventually training the on-call engineer to ignore the tool altogether.
INFO is meant for notable, expected events in normal operation, things a team might want visibility into without them signaling a problem. DEBUG is for fine-grained detail useful only during active troubleshooting, and WARN/ERROR are reserved for situations that are unexpected or require attention, which a successful checkout is not.
Real scenario-based DevOps questions, hands-on practice, and clear explanations for every answer.