Service Level Objectives, or SLOs, are a key part of the site reliability engineering toolkit. SLOs provide a framework for defining clear targets around application performance, which ultimately help teams provide a consistent customer experience, balance feature development with platform stability, and improve communication with internal and external users.
Service Level Indicator (SLI)
A quantitative measurement of a service’s performance or reliability. In Datadog SLOs an SLI is a metric or an aggregation of one or more monitors.
Service Level Objective (SLO)
A target percentage for an SLI over a specific period of time.
Service Level Agreement (SLA)
An explicit or implicit agreement between a client and service provider stipulating the client’s reliability expectations and service provider’s consequences for not meeting them.
The allowed amount of unreliability derived from an SLO’s target percentage (100% - target percentage) that is meant to be invested into product development.
Define the source for your SLO. You can create an SLO from metrics or monitors.
Set a target and a rolling time window (past 7, 30, or 90 days) for the SLO. Datadog recommends you make the target stricter than your stipulated SLAs. If you configure more than one time window, select one to be the primary time window. This time window is displayed on SLO lists. By default, the shortest time window is selected.
Finally, give the SLO a title, describe it in more detail or add links in the description, add tags, and save it.
After you set up the SLO, select it from the Service Level Objectives list view to open the details side panel. The side panel displays the overall status percentage and remaining error budget for each of the SLO’s targets, as well as status bars (monitor-based SLOs) or bar graphs (metric-based SLOs) of the SLI’s history. If you created a grouped monitor-based SLO using one multi alert monitor or a grouped metric-based SLO using the sum by clause, the status percentage and remaining error budget for each individual group is displayed in addition to the overall status percentage and remaining error budget.
Example: If you create a monitor-based SLO to track latency per availability-zone, the status percentages and remaining error budget for the overall SLO and for each individual availability-zone that the SLO is tracking are displayed.
Note: The remaining error budget is displayed as a percentage and is calculated using the following formula:
To leverage the benefits of error budgets and error budget alerts, you must set SLO target values strictly below 100%.
Setting a 100% target means having an error budget of 0% since error budget is equal to 100%—SLO target. Without error budget representing acceptable risk, you face difficulty finding alignment between the conflicting priorities of maintaining customer-facing reliability and investing in feature development. In addition, SLOs with target values of 100% lead to division by zero errors in SLO alert evaluation.
Note: The number of decimal places you can specify for your SLOs differs depending on the type of SLO and the time windows you choose. Refer to the links below for more information for each respective SLO type.
Monitor-based SLOs: Up to two decimal places are allowed for 7-day and 30-day targets, up to three decimal places are allowed for 90-day targets.
To edit an SLO, hover over the SLO’s row in the list view and click the edit pencil icon that appears at the right of the row, or click on the row to open the details side panel and select the edit button from the cog icon in the top right of the panel.
Role based access
All users can view SLOs and SLO status corrections, regardless of their associated role. Only users attached to roles with the slos_write permission can create, edit, and delete SLOs.
To create, edit, and delete status corrections, users require the slos_corrections permissions. A user with this permission can make status corrections, even if they do not have permission to edit those SLOs. For the full list of permissions, see the RBAC documentation.
Granular access controls
Restrict access to individual SLOs by specifying a list of roles that are allowed to edit it.
Click on the SLO to open the details side panel.
Click the cog icon in the upper right of the panel.
Click Restrict Access.
The dialog box updates to show that members of your organization have Viewer access by default.
Use the drop-down to select one or more roles, teams (beta), or users (beta) that may edit the SLO.
The dialog box updates to show that the role you selected has the Editor permission.
To maintain your edit access to the SLO, the system requires you to include at least one role that you are a member of before saving. Users on the access control list can add roles and can only remove roles other than their own.
Note: Users can create SLOs on any monitor even if they do not have write permissions to the monitor. Similarly, users can create SLO alerts even if they do not have write permissions to the SLO. For more information on RBAC permissions for Monitors, see the RBAC documentation or the guide on how to set up RBAC for Monitors.
Advanced search lets you query SLOs by any combination of SLO attributes:
name and description - text search
time window - 7d, 30d, 90d
type - metric, monitor
tags - datacenter, env, service, team, etc.
To run a search, use the facet checkboxes on the left and the search bar at the top. When you check the boxes, the search bar updates with the equivalent query. Likewise, when you modify the search bar query (or write one from scratch), the checkboxes update to reflect the change. Query results update in real-time as you edit the query; there’s no ‘Search’ button to click.
Group your SLOs by team, service or environment to get a summary view of your data. You can quickly analyze how many SLOs are in each state (breached, warning, OK, and no data), grouped by context.
Sort SLOs by the status and error budget columns to prioritize which SLOs need your attention. The SLO list displays the details of SLOs over the primary time window selected in your configuration. All other configuration time windows are available to view in the individual side panel. Open the SLO details side panel by clicking the respective table row.
Add tags to SLOs in bulk with the Edit Tags and the Edit Teams dropdown options at the top of the SLO list.
SLO default view
The default SLO view is loaded when you land on the SLO list view.
The default view includes:
An empty search query
A list of all defined SLOs in your organization
A list of available facets in left side facet list
Saved views allow you to save and share customized searches in the SLO list view for SLOs that are most relevant for you and your team by sharing:
A search query
A selected subset of facets
After you query for a subset of SLOs on the list view, you can add that query as a saved view.
Add a saved view
To add a saved view:
Query for your SLOs.
Click Save View + at the top left of the page.
Name your view and save.
Load a saved view
To load a saved view, open the Saved Views panel by pressing the Show Views button at the top left of the page and select a saved view from the list. You can also search for saved views in the Filter Saved Views search box at the top of that same Saved Views panel.
Share a saved view
Hover over a saved view from the list and select the hyperlink icon to copy the link to the saved view to share it with your teammates.
Manage saved views
Once you are using a saved view, you can update it by selecting that saved view, modifying the query, and clicking the Update button below its name in the Saved Views panel. To change the saved view’s name or delete a saved view, hover over its row in the Saved Views panel and click the pencil icon or trash can icon, respectively.
SLO audit events
SLO audit events allow you to track the history of your SLO configurations using the Event Explorer. Audit events are added to the Event Explorer every time you create, modify or delete an SLO. Each event includes information on an SLO’s configuration, and the stream provides a history of the SLO’s configuration changes over time.
Each event includes the following SLO configuration information:
Target percentages and time windows
Datasources (monitor IDs or metric query)
Three types of SLO audit events appear in the Event Explorer:
SLO Created events show all four pieces of SLO configuration information at creation time.
SLO Modified events show a what configuration information changed during a modification
SLO Deleted events show all four pieces of configuration information the SLO had right before it was deleted
To get a full list of all SLO audit events, enter the search query tags:audit,slo in the Event Explorer. To view the list of audit events for a specific SLO, enter tags:audit,slo_id:<SLO ID> with the ID of the desired SLO.
To proactively manage the configurations of your SLOs, set an Event Monitor to notify you when events corresponding to certain tags occur.
SLO status corrections
Status corrections allow you to exclude specific time periods from SLO status and error budget calculations. This way, you can:
Prevent expected downtime, such as scheduled maintenance, from depleting your error budget
Ignore non-business hours, where you’re not expected to conform to your SLOs
Ensure that temporary issues caused by deployments do not negatively impact your SLOs
When you apply a correction, the time period you specify is dropped from the SLO’s calculation.
For monitor-based SLOs, the correction time window is not counted.
For metric-based SLOs, all good and bad events in the correction window are not counted.
You have the option to create one-time corrections for ad hoc adjustments, or recurring corrections for predictable adjustments that occur on a regular cadence. One-time corrections require a start and end time, while recurring corrections require a start time, duration, and interval. Recurring corrections are based on iCalendar RFC 5545’s RRULE specification. The supported rules are FREQ, INTERVAL, COUNT, and UNTIL. Specifying an end date for recurring corrections is optional in case you need the correction to repeat indefinitely.
For either type of correction, you must select a correction category that states why the correction is being made. The available categories are Scheduled Maintenance, Outside Business Hours, Deployment, and Other. You can optionally include a description to provide additional context if necessary.
Each SLO has a maximum limit of corrections that can be configured to ensure query performance. These limits only apply to the past 90 days per SLO, so corrections for time periods before the past 90 days do not count towards your limit. This means that:
If the end time of a one-time correction is before the past 90 days, it does count towards your limit.
If the end time of the final repetition of a recurring correction is before the past 90 days, it does not count towards your limit.