Hire Software Developers 7
Back to blogs

What to Monitor in Production (It's Already in Your Logs)

One vivid block among hundreds of identical pale ones, representing the single log line that mattered among 824

What to Monitor in Production (It's Already in Your Logs)

Researchers took 198 randomly sampled production failures from Cassandra, HBase, HDFS, Hadoop MapReduce and Redis, and read every one of them [R1]. In 84% of those failures, every event that triggered the failure had already been written to the log before the system went down [R3]. The median failure printed 824 log messages [R5].

Nobody was flying blind. They were reading the wrong 823 lines.

Inherit a running system, someone else's architecture, someone else's log statements, someone else's empty catch blocks, and that finding changes what to monitor in production first. The instinct is to buy collection. Collection was never the bottleneck. Deciding in advance which events would matter was.

What to monitor in production is the decision, made before the incident, about which events in a running system will be treated as signal: the four golden signals of latency, traffic, errors and saturation, plus the error handlers, the change surface, and the paths nobody thought to watch.

Key takeaways

  • Yuan et al. sampled 198 production failures at random and presented the results at USENIX OSDI in October 2014 [R1]. In 84% of those failures, all of the triggering events were already logged before the system went down [R3].
  • The median failure in that sample printed 824 log messages, and that count was measured under a minimal configuration and a minimal workload — a floor, not a ceiling [R5].
  • 92% of the catastrophic failures in the sample resulted from incorrect handling of non-fatal errors that the software had already signalled explicitly [R10].
  • 23% of the failures were caused by configuration changes, and only 30% of those involved actual misconfigurations; the rest were valid changes enabling rarely-used features [R6].
  • The four golden signals are Google's prescription, not a measurement: Rob Ewaschuk's chapter in the SRE book [R14]. The RED Method is Tom Wilkie's and is scoped to services [R20]; the USE Method is Brendan Gregg's and is scoped to resources [R19].

Production failure analysis: the signal was already there

The study is Yuan et al., presented at USENIX OSDI in October 2014 [R1]. Say the date out loud: twelve years old, and I couldn't find a comparable large-sample study of the same shape. That's not a reason to discount it. Its subject is error handling and logging discipline, and neither has been reinvented since. It is a reason to treat it as durable measurement rather than a fresh headline.

They pulled 198 failures at random from a pool of 17,216 user-reported failures across the five systems [R9], read the tickets and the patches, then manually reproduced 73 of them [R2]. They put the statistical precision on the record too: "under standard assumptions, the Central Limit Theorem predicts a 6.9% margin of error at the 95% confidence level for our 198 random samples" [R13].

Two findings carry this post. Finding 7: "For a majority (84%) of the failures, all of their triggering events are logged" [R3]. Finding 8: "Logs are noisy: the median of the number of log messages printed by each failure is 824" [R5]. And in 76% of the failures the system printed an explicit failure-related error message: an actual complaint about the thing that was wrong, up from 43% in the same group's earlier work on non-distributed systems [R4].

The 824 carries a caveat that cuts the wrong way for you. It was measured while reproducing failures under a minimal configuration and a minimal workload, excluding everything printed at start-up and shut-down [R5]. It's a floor, measured in a deliberately quiet laboratory. Your system, under real load with real tenants, is louder.

The authors' own summary is the least dramatic sentence in the paper and the most useful one: across this sample, the primary challenge was having to sift through relatively noisy logs [R5].

Scope, honestly stated: the sample is 198 user-reported failures drawn from five open-source, data-intensive distributed systems — Cassandra, HBase, HDFS, Hadoop MapReduce and Redis, so it is evidence about that class of system [R1]. Your inherited platform is probably a monolith and three services in a trench coat. What transfers is the mechanism, not the systems: the events were logged, the logs were noisy, and the handlers that should have acted on them didn't.

What actually breaks: error handling bugs

Of the 198 failures, 48 were classified catastrophic, meaning they stopped all or most users from using the system normally [R9]. Those 48 are where the paper gets uncomfortable.

Finding 10: "Almost all catastrophic failures (92%) are the result of incorrect handling of non-fatal errors explicitly signaled in software" [R10]. The software noticed. The software raised an error. Something downstream handled it wrongly, and the wrong handling — not the original fault — took the service down.

The contrast is the point. Among the non-catastrophic failures, only 25% involved incorrect error handling [R11]. The authors read that as evidence that error handling was mostly doing its job of stopping local errors from becoming outages [R11]. When it worked, you got a blip. When it didn't, you got the incident.

Then Finding 11, the one to bring to your next architecture review: "35% of the catastrophic failures are caused by trivial mistakes in error handling logic — ones that simply violate best programming practices; and that can be detected without system specific knowledge" [R12]. Break that 35% down and it's worse. Within the catastrophic failures this time — the denominator has flipped from the 25% in the paragraph above — 25% came from a handler that caught the explicit error and ignored it, 8% from aborting the system inside an over-caught exception, and 2% from a handler carrying a "TODO" or "FIXME" comment where the handling logic should have been [R12].

A comment. In production. Between your users and their data.

None of that needs a distributed-systems specialist to spot. It needs someone to read the error paths, which is exactly the work nobody schedules on a codebase they didn't write. That work belongs in a static review of an inherited codebase. This post is the runtime counterpart, for the handlers already carrying traffic.

You don't need a big cluster to reproduce these failures

The usual excuse for not reproducing an inherited system's failures is environmental: we can't stand up prod, so we can't chase this. The data doesn't support it.

Finding 3: "Almost all (98%) of the failures are guaranteed to manifest on no more than 3 nodes. 84% will manifest on no more than 2 nodes" [R8]. That's a second, different 84% — the share reproducible on two nodes, not the share whose triggering events were logged. The paper is full of numbers that rhyme; keep them apart.

And Finding 4: "74% of the failures are deterministic — they are guaranteed to manifest given the right input event sequences" [R7]. Not races. Not heisenbugs. Same sequence, same break. That's how 73 of the 198 got reproduced by hand [R2].

Three quarters deterministic, most visible on two nodes. Whatever is stopping you from investigating the failure modes of a system you inherited rather than built, it isn't cluster size. It's that nobody has been given the week.

Configuration changes are a first-class failure mode

Ask a CTO what takes their system down and you'll hear about faults: a dead disk, a dependency going away. The underweighted category is the change you approved.

In the Yuan sample, 23% of failures were caused by configuration changes, and of those, only 30% involved actual misconfigurations. The remaining majority "involve valid changes to enable certain features that may be rarely-used" [R6]. Valid. Correct. Reviewed, presumably. The setting was legal and the system fell over anyway, because a rarely-exercised path carried traffic for the first time.

The larger outage literature points the same way. Gunawi et al. analysed 1,247 headline reports and public post-mortems covering 597 unplanned outages at 32 popular internet services between 2009 and 2015 [R27]. Among outages with a reported root cause, UPGRADE was the largest single category at 16% of known causes, with CONFIG at 10%, and NETWORK and BUGS at 15% each [R30]. On the upgrades, the study is blunt about why testing didn't save anyone: "The developers had tested the software upgrades, but when the updates were pushed to the full ecosystem, they caused new failures/anomalies that were undetected in the offline testing" [R31].

One caution the study makes unavoidable: 355 of the 597 outages had UNKNOWN root causes [R30]. Every breakdown of why cloud services fail is computed over the minority somebody bothered to explain in public. Directional, not precise.

So config, feature flags and upgrades deserve the same instrumentation you'd give a dependency, and the same scrutiny you'd give the size of each change you ship. Not because operators are careless, but because valid changes light up code paths that have never carried traffic.

What should you monitor in production first?

Start with the four golden signals — Google's prescription, not a measurement, then instrument what they don't cover on their own: the error handlers, the change surface, and the paths nobody thought to watch.

That first half is the advice everybody gives you. Know exactly what kind of advice it is.

The golden signals come from Chapter 6 of Google's Site Reliability Engineering book, "Monitoring Distributed Systems", written by Rob Ewaschuk: "The four golden signals of monitoring are latency, traffic, errors, and saturation. If you can only measure four metrics of your user-facing system, focus on these four" [R14]. Latency is "the time it takes to service a request"; traffic, "a measure of how much demand is being placed on your system"; errors, "the rate of requests that fail, either explicitly (e.g., HTTP 500s), implicitly …"; saturation, "how 'full' your service is" [R15].

That is Google's prescription. It is not a measurement: no sample, no method, no dataset — a very good engineer at a very large company telling you what to do. Useful provenance, not evidence. The evidence here comes from Yuan, Gunawi, Niedermaier and Davidovič. Mixing the two is how posts end up citing "research" that was always an opinion.

Two other frameworks get muddled with the golden signals constantly, and they are neither the same thing nor by the same people. The RED Method is Tom Wilkie's, from 2015: Rate, the number of requests per second; Errors, the number of those requests that are failing; Duration, the amount of time those requests take [R20]. It's scoped to services. The USE Method is Brendan Gregg's, scoped to resources: "For every resource, check utilization, saturation, and errors", where resource means "all physical server functional components (CPUs, disks, busses, ...)" [R19]. Wilkie draws the line himself: "The USE Method doesn't really apply to services; it applies to hardware, network disks, things like this" [R20]. In that same write-up the golden signals get called "basically the same as the RED Method, but includes saturation" [R20]. A fair bridge, but Grafana's characterisation, not Google's.

Golden signals by Google's prescription, RED for services by Wilkie, USE for resources by Gregg. Don't let a vendor sell you one as all three. Then add what the failure data says those signals won't catch on their own.

Instrument the error paths, not just the error rate. If 92% of catastrophic failures came from mishandling errors the software had already signalled [R10], a swallowed exception is a monitoring gap, not a style nit. Emit on the handler, not only the request.

Instrument the paths nobody thought to watch. Gunawi's list of undetected failures includes one case worth laminating: "load spikes of authentication requests (that were not monitored, while spikes of read/write requests were monitored)" [R29]. Alongside it: memory leaks that eventually crashed the whole system, expiring certificates that piled up into backlogs, grey partial hardware failures, corrupt configurations [R29]. The failure gets in through the door you didn't put a sensor on.

And don't assume redundancy covers you. The same authors: "although the failover code that will activate the redundancies is ready to run, it will sit idle if the root failures are not detected or anticipated" [R28]. Avoiding single points of failure, they conclude, "is not merely about redundancies, but also about the perfection of failure recovery chain: complete failure detection, flawless failover code, and working backup components" [R28].

Then bound the alerting, or you've rebuilt the 824-message problem with a pager attached. Ewaschuk's rule: "every page should be actionable", and "if a page merely merits a robotic response, it shouldn't be a page" [R16]. His reason is human: "I can only react with a sense of urgency a few times a day before I become fatigued" [R16]. Chapter 11, by Andrea Spadaccini, puts a ceiling on it: "the maximum number of incidents per day is 2 per 12-hour on-call shift", because handling one incident end to end takes about six hours [R17]. Again, a prescription, not a measurement of what teams actually live with.

To judge the alerting itself, the SRE Workbook's four attributes beat a dashboard count: precision, "the proportion of events detected that were significant"; recall, "the proportion of significant events detected"; detection time; reset time [R18].

One finding here isn't technical at all. Niedermaier et al. interviewed 28 software professionals about observability and found the constraint they reported was organisational rather than a lack of tooling: a "discrepancy in the awareness regarding the importance of the topic, both from the management as well as from the developer perspective", and "a strong need for an organizational concept including strategy, roles and responsibilities" [R32]. No vendor sells you out of that. Somebody has to own it.

Why "it reduced our MTTR" isn't evidence

Every observability vendor's case study ends the same way, with a recovery-time improvement. The most rigorous published look at that metric came out of Google, and it concludes the metric can't carry the claim.

Štěpán Davidovič's "Incident Metrics in SRE: Critically Evaluating MTTR and Friends" (O'Reilly, March 2021, published on Google's SRE site) ran Monte Carlo simulations over real incident data [R21]. The data came from three public incident dashboards at internet companies of roughly one to two thousand employees. Their mean recovery times were 2h 26m, 2h 31m and 4h 31m, against standard deviations of 5h 16m, 5h 1m and 6h 53m [R24]. Note the shape of that. The spread is twice the average.

He then simulated a product that genuinely shortened every incident by 10%, drew two equal samples from the real duration distribution, and repeated it 100,000 times. Result: "Even though in the simulation the improvement always worked, 38% of the simulations had the MTTR difference fall below zero for Company A, 40% for Company B, and 20% for Company C" [R22]. A real improvement on every incident, and MTTR still moved the wrong way in a fifth to two fifths of trials.

The reverse test is worse. With nothing changed at all, "there's a 19% chance that there is a half-hour improvement (or better) of MTTR in Company A (and 23% for Company B, and 10% for Company C)...even though in this simulation, you did not change anything about the incidents" [R23]. Half an hour of pure noise, available on demand, at roughly one-in-five odds.

His conclusion: "I have demonstrated that even in a favorable analysis setup, MTTx cannot be used for many practical purposes where it has been advertised to be useful, such as evaluating reliability trends, evaluating results of policies or products, or understanding the overall system reliability" [R21]. The cause is structural: "the typically low volume of incidents and high variance of their durations". And he extends the warning explicitly: "Many other incident metrics, such as the time to detection, suffer from the same problem" [R25].

That last line applies to what this post is recommending, so take it seriously. It doesn't mean don't instrument detection. Davidovič also recommends the narrower question: "An example of this might be measuring and studying the time to detection specifically, or time spent on some common incident-response activities" [R26]. Study your detection gaps case by case. Don't publish an average and call it a trend.

DORA closes the loop from the other side. It separates the terms. Monitoring "allows teams to watch and understand the state of their systems"; observability "allows teams to actively debug their system" [R33]. And it states its observability finding purely qualitatively: comprehensive monitoring and observability "positively contributes to continuous delivery" [R34]. No percentage, no effect size. None of DORA's five core metrics measures monitoring, detection or observability; they measure delivery and instability [R35].

DORA also retired mean time to restore in 2023, replacing it with failed deployment recovery time, because "previous definitions did not distinguish between a failure initiated by a software change and a failure caused by external factors, such as a data center outage" [R36]. Anyone quoting DORA for an observability-and-MTTR number is quoting a metric DORA stopped using, for a finding DORA never sized. (Which engineering metrics genuinely predict delivery is a different question with a different answer.)

Even DORA's strongest statement here stays unquantified: when failures are "primarily reported by a source external to the operations team, such as by the network operations center (NOC) — or worse, by customers — rather than internal monitoring, performance suffers" [R37]. Directionally right, no number attached. Be suspicious of anyone who supplies one.

So justify the work without a metric. Justify it with the last three incidents, and the log lines nobody read.

Instrumenting a system you didn't build

This work isn't hard. Every task in it is small, well-specified, and permanently outranked by whatever is on the roadmap. Add structured context to the payments error handler. Alert on authentication load, not just read and write. Emit a metric when a feature flag flips. Not one of them is a big job, and together, they're the difference between an incident you can read and 824 lines you can't.

That's the gap Dev On Demand is built for: 1 dedicated AI-augmented engineer on your queue, a 3-day task cycle with daily async updates, and a task-by-task approval gate so you see each piece before the next one starts. Single stream $3,495/mo, dual stream $6,795/mo, engineer assigned the same business day, 5-day first ship. There's a 5-day replacement guarantee if the fit is wrong, and you can cancel any time, no lock-in, no notice period required. Proof of Quality is one real task, you judge the engineer before subscribing. Instrumentation is a good first task because it's easy to grade: either the next incident is legible or it isn't.

Whether you use us or not, do this one thing this week. Take your three most recent production incidents, find the log line that recorded the triggering event, and check its timestamp against when a human first noticed. If the line is there — and the research says it usually is — you don't have a data problem. You have a decision nobody made about what would matter.

Frequently asked questions

What should I monitor in production first?

Start with the four golden signals of latency, traffic, errors and saturation [R14], then instrument what they don't cover on their own: the error handlers, the change surface, and the paths nobody thought to watch. In the Yuan et al. sample, 92% of catastrophic failures came from incorrect handling of errors the software had already signalled [R10], and 23% of all failures were caused by configuration changes [R6].

What is the difference between the four golden signals, the RED Method and the USE Method?

They are three different frameworks by three different authors. The four golden signals of latency, traffic, errors and saturation are Google's prescription, written by Rob Ewaschuk in Chapter 6 of the Site Reliability Engineering book, and they are advice rather than a measurement [R14]. The RED Method is Tom Wilkie's, from 2015, and is scoped to services: rate, errors and duration of requests [R20]. The USE Method is Brendan Gregg's and is scoped to resources: for every resource, check utilization, saturation and errors [R19].

Do I need a full production cluster to reproduce an inherited system's failures?

Usually not. In the Yuan et al. sample, 98% of the failures are guaranteed to manifest on no more than 3 nodes [R8], and 74% of the failures are deterministic, meaning they are guaranteed to manifest given the right input event sequences [R7]. That is how 73 of the 198 failures were reproduced by hand [R2].

Is a 2014 study still a fair basis for monitoring decisions today?

The study was presented at USENIX OSDI in October 2014, and its sample was 198 user-reported failures drawn from five open-source, data-intensive distributed systems — Cassandra, HBase, HDFS, Hadoop MapReduce and Redis — so it is evidence about that class of system [R1]. Its subject is error-handling and logging discipline, so treat it as durable measurement rather than a fresh headline. Its headline number, that in 84% of failures all triggering events were already logged [R3], describes a mechanism, not a product generation.

Can I use MTTR to prove that better monitoring worked?

No. Simulating a product that shortened every incident by 10%, Štěpán Davidovič found the MTTR difference still fell below zero in 38% of the simulations for Company A, 40% for Company B and 20% for Company C [R22]. His conclusion is that MTTx "cannot be used for many practical purposes where it has been advertised to be useful, such as evaluating reliability trends, evaluating results of policies or products, or understanding the overall system reliability" [R21]. DORA retired mean time to restore in 2023, replacing it with failed deployment recovery time [R36].

Sources

  • [R1] Yuan et al. studied 198 randomly sampled, user-reported failures of five data-intensive distributed systems — Cassandra, HBase, HDFS, Hadoop MapReduce and Redis — published at the 11th USENIX Symposium on Operating Systems Design and Implementation, October 6–8 2014. The paper states: "We present the result of a comprehensive study investigating 198 randomly selected, user-reported failures that occurred on Cassandra, HBase, Hadoop Distributed File System (HDFS), Hadoop MapReduce, and Redis". — https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
  • [R2] Of those 198 failures, the researchers manually reproduced 73 of them. The paper states: "We also manually reproduced 73 of the failures to better understand them." — https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
  • [R3] In 84% of the 198 failures, all of the events that triggered the failure were already written to the log before the system failed. Finding 7 states: "For a majority (84%) of the failures, all of their triggering events are logged." — https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
  • [R4] In 76% of the 198 failures, the system printed an explicit failure-related error message. Finding 6 states: "76% of the failures print explicit failure-related error messages." The same paper notes that an earlier study by the same group on non-distributed systems found only 43% of failures had explicit failure-related error messages logged. — https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
  • [R5] The logs that contained those signals were extremely noisy, and the authors identify sifting through them as the primary difficulty: the paper states the main challenge in diagnosing and reproducing these failures was having to sift through relatively noisy logs. Finding 8 states: "Logs are noisy: the median of the number of log messages printed by each failure is 824." This median was measured while reproducing 73 of the 198 failures with a minimal configuration and a minimal workload, and excludes messages printed during start-up and shut-down. — https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
  • [R6] 23% of the 198 failures were caused by configuration changes, and most of those changes were valid rather than mistakes. The paper states: "Configuration changes: 23% of the failures are caused by configuration changes. Of those, 30% involve misconfigurations. The remaining majority involve valid changes to enable certain features that may be rarely-used." — https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
  • [R7] 74% of the 198 failures were deterministic. Finding 4 states: "74% of the failures are deterministic — they are guaranteed to manifest given the right input event sequences." — https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
  • [R8] Cluster size was almost never what made these failures possible. Finding 3 states: "Almost all (98%) of the failures are guaranteed to manifest on no more than 3 nodes. 84% will manifest on no more than 2 nodes." — https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
  • [R9] Of the 198 sampled failures, 48 were classified catastrophic, meaning the failure prevented all or a majority of users from normal access to the system. The 198 were sampled from a total of 17,216 reported failures across the five systems. — https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
  • [R10] 92% of the catastrophic failures came from mishandling an error the software had already noticed and signalled. Finding 10 states: "Almost all catastrophic failures (92%) are the result of incorrect handling of non-fatal errors explicitly signaled in software." — https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
  • [R11] The prevalence of bad error handling was specific to catastrophic failures. The paper states: "In comparison, only 25% of the non-catastrophic failures in our study involve incorrect error handling, indicating that in non-catastrophic failures, error handling was mostly effective in preventing the errors from taking down the entire service." — https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
  • [R12] 35% of catastrophic failures came from error-handling mistakes that violate ordinary programming practice. Finding 11 states: "35% of the catastrophic failures are caused by trivial mistakes in error handling logic — ones that simply violate best programming practices; and that can be detected without system specific knowledge." Within the catastrophic failures, 25% were caused by an error handler that ignored the explicit error, 8% by aborting the system inside an over-caught exception, and 2% by a handler containing a "TODO" or "FIXME" comment. — https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
  • [R13] The authors state the statistical precision of the sample: "under standard assumptions, the Central Limit Theorem predicts a 6.9% margin of error at the 95% confidence level for our 198 random samples." — https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
  • [R14] Google's Site Reliability Engineering book, Chapter 6 "Monitoring Distributed Systems", written by Rob Ewaschuk and edited by Betsy Beyer, states: "The four golden signals of monitoring are latency, traffic, errors, and saturation. If you can only measure four metrics of your user-facing system, focus on these four." — https://sre.google/sre-book/monitoring-distributed-systems/
  • [R15] The same chapter defines the four signals as follows. Latency: "The time it takes to service a request." Traffic: "A measure of how much demand is being placed on your system, measured in a high-level system-specific metric." Errors: "The rate of requests that fail, either explicitly (e.g., HTTP 500s), implicitly (for example, an HTTP 200 success response, but coupled with the wrong content)." Saturation: "How 'full' your service is." — https://sre.google/sre-book/monitoring-distributed-systems/
  • [R16] The same chapter sets the actionability bar for alerts: "Every page should be actionable." and "Every page response should require intelligence. If a page merely merits a robotic response, it shouldn't be a page." On fatigue it states: "Every time the pager goes off, I should be able to react with a sense of urgency. I can only react with a sense of urgency a few times a day before I become fatigued." — https://sre.google/sre-book/monitoring-distributed-systems/
  • [R17] Google's SRE book Chapter 11 "Being On-Call", written by Andrea Spadaccini, sets a numeric ceiling on alert volume: "the maximum number of incidents per day is 2 per 12-hour on-call shift". It justifies this on the grounds that "dealing with the tasks involved in an on-call incident—root-cause analysis, remediation, and follow-up activities like writing a postmortem and fixing bugs—takes 6 hours". — https://sre.google/sre-book/being-on-call/
  • [R18] The Site Reliability Workbook, Chapter 5 "Alerting on SLOs" by Steven Thurgood with Jess Frame, Anthony Lenton, Carmela Quinito, Anton Tolchanov and Nejc Trdin, names four attributes for evaluating an alerting strategy. Precision: "The proportion of events detected that were significant." Recall: "The proportion of significant events detected." Detection time: "How long it takes to send notifications in various conditions." Reset time: "How long alerts fire after an issue is resolved." — https://sre.google/workbook/alerting-on-slos/
  • [R19] The USE Method was created by Brendan Gregg and applies to resources rather than to services. His page states the method as: "For every resource, check utilization, saturation, and errors." U, S and E stand for utilization, saturation and errors, and the page scopes "resource" as "all physical server functional components (CPUs, disks, busses,...)". — https://www.brendangregg.com/usemethod.html
  • [R20] The RED Method was created by Tom Wilkie in 2015 and covers Rate (the number of requests per second), Errors (the number of those requests that are failing) and Duration (the amount of time those requests take). In the same write-up Wilkie is quoted on the USE Method: "The USE Method doesn't really apply to services; it applies to hardware, network disks, things like this." The article notes the USE Method "has been popularized by Brendan Gregg", and describes Google's four golden signals as "basically the same as the RED Method, but includes saturation." — https://grafana.com/blog/2018/08/02/the-red-method-how-to-instrument-your-services/
  • [R21] Štěpán Davidovič, in "Incident Metrics in SRE: Critically Evaluating MTTR and Friends" (O'Reilly, First Edition March 2021, published on Google's SRE site), used Monte Carlo simulation over real incident data and concluded: "I have demonstrated that even in a favorable analysis setup, MTTx cannot be used for many practical purposes where it has been advertised to be useful, such as evaluating reliability trends, evaluating results of policies or products, or understanding the overall system reliability." — https://static.googleusercontent.com/media/sre.google/en//static/pdf/IncidentMeticsInSre.pdf
  • [R22] In that simulation, a product that genuinely shortened every incident by 10% failed to show up in MTTR much of the time. The report states: "Even though in the simulation the improvement always worked, 38% of the simulations had the MTTR difference fall below zero for Company A, 40% for Company B, and 20% for Company C." Each run drew two equal-sized samples from the empirical distribution of incident durations and repeated the process 100,000 times. — https://static.googleusercontent.com/media/sre.google/en//static/pdf/IncidentMeticsInSre.pdf
  • [R23] The same simulation showed MTTR improving substantially when nothing at all had changed: "there's a 19% chance that there is a half-hour improvement (or better) of MTTR in Company A (and 23% for Company B, and 10% for Company C)...even though in this simulation, you did not change anything about the incidents." — https://static.googleusercontent.com/media/sre.google/en//static/pdf/IncidentMeticsInSre.pdf
  • [R24] The report's data came from the public incident status dashboards of three well-known internet companies each sized around one to two thousand employees, plus an obfuscated Google data set covering one year. The report presents per-company means and standard deviations for incident duration; the Figure-2 counts and the Table-1 statistics use different denominators — https://static.googleusercontent.com/media/sre.google/en//static/pdf/IncidentMeticsInSre.pdf
  • [R25] The report attributes the failure of MTTx to "the typically low volume of incidents and high variance of their durations", and explicitly extends the warning to detection metrics: "Many other incident metrics, such as the time to detection, suffer from the same problem." — https://static.googleusercontent.com/media/sre.google/en//static/pdf/IncidentMeticsInSre.pdf
  • [R26] The same report nonetheless recommends studying detection as a narrower question than aggregate incident statistics: "An example of this might be measuring and studying the time to detection specifically, or time spent on some common incident-response activities." — https://static.googleusercontent.com/media/sre.google/en//static/pdf/IncidentMeticsInSre.pdf
  • [R27] Gunawi et al., "Why Does the Cloud Stop Computing? Lessons from Hundreds of Service Outages" (SoCC '16, October 5–7 2016, University of Chicago and Surya University), analysed 1,247 headline news and public post-mortem reports covering 597 unplanned outages at 32 popular internet services over a seven-year span from 2009 to 2015. — https://ucare.cs.uchicago.edu/pdf/socc16-cos.pdf
  • [R28] That study identifies incomplete detection as a hidden single point of failure: "We find that the No-SPOF principle is not merely about redundancies, but also about the perfection of failure recovery chain: complete failure detection, flawless failover code, and working backup components." It adds: "although the failover code that will activate the redundancies is ready to run, it will sit idle if the root failures are not detected or anticipated." — https://ucare.cs.uchicago.edu/pdf/socc16-cos.pdf
  • [R29] The same study gives a concrete case of instrumenting the wrong path. Among undetected failures it lists "load spikes of authentication requests (that were not monitored, while spikes of read/write requests were monitored)". It also lists undetected memory leaks that eventually crashed the entire system, expiring certificates that piled up and caused backlogs, unforeseen "grey partial" hardware failures, and corrupt configurations. — https://ucare.cs.uchicago.edu/pdf/socc16-cos.pdf
  • [R30] In that study's root-cause table, 355 of the 597 outages had UNKNOWN root causes. Among outages with a reported root cause, UPGRADE accounted for 54 occurrences across 18 services and 16% of known root causes, and CONFIG for 34 occurrences across 19 services and 10% of known root causes. NETWORK and BUGS each accounted for 15%. — https://ucare.cs.uchicago.edu/pdf/socc16-cos.pdf
  • [R31] The same study notes that upgrade-induced failures escaped pre-production testing: "The developers had tested the software upgrades, but when the updates were pushed to the full ecosystem, they caused new failures/anomalies that were undetected in the offline testing." — https://ucare.cs.uchicago.edu/pdf/socc16-cos.pdf
  • [R32] Niedermaier, Koetter, Freymann and Wagner, "On Observability and Monitoring of Distributed Systems: An Industry Interview Study" (arXiv, submitted 29 July 2019), conducted "28 semi-structured interviews with software professionals" and report: "the participants mentioned a discrepancy in the awareness regarding the importance of the topic, both from the management as well as from the developer perspective. Besides technical challenges, we identified a strong need for an organizational concept including strategy, roles and responsibilities." — https://arxiv.org/abs/1907.12240
  • [R33] DORA defines the two terms distinctly: "Monitoring is tooling or a technical solution that allows teams to watch and understand the state of their systems." and "Observability is tooling or a technical solution that allows teams to actively debug their system." — https://dora.dev/capabilities/monitoring-and-observability/
  • [R34] DORA's stated research finding on observability is qualitative and carries no effect size on the page: "DORA research shows that a comprehensive monitoring and observability solution, along with a number of other technical practices, positively contributes to continuous delivery." The page links this finding to the 2018 Accelerate State of DevOps Report. — https://dora.dev/capabilities/monitoring-and-observability/
  • [R35] DORA's core software delivery metrics measure delivery, not detection. They are change lead time, deployment frequency, failed deployment recovery time, change fail rate and deployment rework rate. Failed deployment recovery time is defined as "The time it takes to recover from a deployment that fails and requires immediate intervention." No DORA core metric measures monitoring, detection or observability. — https://dora.dev/guides/dora-metrics/
  • [R36] DORA replaced its mean-time-to-restore metric with failed deployment recovery time in 2023, because "previous definitions did not distinguish between a failure initiated by a software change and a failure caused by external factors, such as a data center outage." The replacement is "focused strictly on restoring service after a change to production caused an impairment". — https://dora.dev/insights/dora-metrics-history/
  • [R37] DORA defines proactive failure notification as "the practice of generating notifications when monitored values approach known failure thresholds, and not waiting for the system to alert you it has already failed", and states: "When failures are instead primarily reported by a source external to the operations team, such as by the network operations center (NOC) — or worse, by customers — rather than internal monitoring, performance suffers." The page states this qualitatively and gives no percentage or effect size. It attributes the finding to 2014 DORA research. — https://dora.dev/capabilities/proactive-failure-notification/
back to top

Related Articles

Book 30 min with Albert
Smiling man with short dark hair and glasses wearing a black suit, white shirt, and black tie against blue background.
Tell Albert what you're shipping.
He'll read this before joining the call. Phone number comes next, on the calendar step.
↳ info@you-source.com
↳ 4-hour response
Please wait while we retrieve meeting schedules.
Oops! There's a problem with your request. We're working on fixing it. Please try again later.