Calculate your Error Budget consumption and determine how fast your service reliability is declining.
Current Burn Rate:
Error Budget Consumed:
Time Until Budget Exhaustion:
Status:
Understanding SLO Burn Rate
In Site Reliability Engineering (SRE), the Burn Rate is a metric that describes how fast a service consumes its error budget relative to the Service Level Objective (SLO) time window. A burn rate of 1.0 means you are consuming your budget at a rate that will leave you with exactly 0% budget at the end of the window.
The Math Behind the Burn
To calculate the burn rate, we use the following logic:
Error Budget: 100% – SLO Target %. (e.g., a 99.9% SLO has a 0.1% error budget).
Burn Rate: Actual Error Rate / Allowed Error Rate.
Burn Rate 1.0: You are perfectly on track to meet your SLO.
Burn Rate > 1.0: You are consuming budget too fast. If this continues, you will breach your SLO before the time window ends.
Burn Rate < 1.0: You are operating more reliably than required, leaving room for more aggressive changes or deployments.
Example Scenario
If you have a 99.9% SLO over a 30-day window, your allowed error rate is 0.1%. If you experience a sudden spike and your error rate becomes 1% for one hour:
Your Burn Rate is 1% / 0.1% = 10.0.
A burn rate of 10 means you are consuming 10 hours of "budget" every hour.
In this 1-hour event, you consumed roughly 1.4% of your total monthly error budget.
function calculateSLOBurn() {
var sloTarget = parseFloat(document.getElementById('sloPercentage').value);
var windowDays = parseFloat(document.getElementById('timeWindow').value);
var obsHours = parseFloat(document.getElementById('observationPeriod').value);
var actualError = parseFloat(document.getElementById('actualErrorRate').value);
if (isNaN(sloTarget) || isNaN(windowDays) || isNaN(obsHours) || isNaN(actualError)) {
alert("Please enter valid numerical values for all fields.");
return;
}
if (sloTarget >= 100 || sloTarget 0)
var exhaustionText = "Never";
if (burnRate > 0) {
var hoursRemaining = totalWindowHours / burnRate;
if (hoursRemaining > 24) {
exhaustionText = (hoursRemaining / 24).toFixed(2) + " Days";
} else {
exhaustionText = hoursRemaining.toFixed(2) + " Hours";
}
}
// 5. Determine Status
var status = "Healthy";
var statusClass = "burn-normal";
if (burnRate > 14.4) {
status = "CRITICAL (Fast Burn)";
statusClass = "burn-high";
} else if (burnRate > 1) {
status = "Warning (Over Budget)";
statusClass = "burn-warning";
}
// Display results
document.getElementById('resBurnRate').innerHTML = burnRate.toFixed(2);
document.getElementById('resBudgetConsumed').innerHTML = budgetConsumedPercent.toFixed(4) + "%";
document.getElementById('resExhaustion').innerHTML = exhaustionText;
document.getElementById('resStatus').innerHTML = status;
document.getElementById('resStatus').className = "slo-result-value " + statusClass;
document.getElementById('sloResult').style.display = 'block';
}