Skip to main content

Composite SLOs

Nobl9 has introduced Composite SLOs, a concept that allows aggregating multiple SLO objectives within a single SLO to represent an overall reliability performance view of your service. SLOs can now capture an end-to-end user journey for a complex service.

Composite SLOs - Rules at a Glance

Like all other resources in Nobl9, Composite SLOs are grouped under Projects and Services:

  • Each SLO you define can only be part of one Composite SLO.
  • You can combine a set of objectives within a single SLO into a Composite SLO.
    • You can define up to 12 objectives for an SLO.
    • You can modify the query for each objective.

Composite SLOs and Annotations

You can add an annotation to a Composite SLO. The added annotation appears in all the charts for the Composite SLO and the objectives.

note

For more information on annotations, refer to the SLO Annotations | Nobl9 Documentation.

Composite SLOs and Error Budget Calculations

Composite SLOs have a new error budget calculation method called the Composite Error Budget. It aggregates the error budgets of all the objectives in the SLO. Here's a glance of some rules that underlie changes in the calculation methods:

  • The Composite Error Budget burns if the error budget for any of the SLO objectives within the Composite SLO is burning.
    • For a Time Slice SLO, this is binary depending on whether it was a good or bad minute. If it was a bad minute for any individual objective, it’s considered a bad minute for the Composite SLO.
    • For an Occurrences SLO, the Composite Error Budget is calculated based on the error budget burn rate which measures how fast the error budget is being consumed following the greater than condition. The default burn rate value is 1x and can be customized.

Defining Composite SLOs

You can define your Composite SLOs through the Nobl9 UI or by applying a YAML file through sloctl.

Creating Composite SLOs in the UI

To create a Composite SLO in the Nobl9 UI:

  1. Navigate to Service Level Objectives.
  2. Click the plus button button.
  3. In step 1 of the SLO wizard, select the Service the SLO will be associated with.
  4. In step 2, select a Data Source for your SLO.
  5. Select the type of Metric. The available types vary depending upon the data source used. Check the Getting Started Guide for more details.
  6. Enter a Query for the metric you selected.
  7. In step 3, define a Time Window for the SLO.
  8. In step 4, specify the Error Budget Calculation Method and your Objective(s). You can define up to 12 objectives for an SLO:
  • For the Occurrences method:

    • Enter SLO objective Display Name (optional).
      The Display Name allows you to enter a name with spaces.

    • Enter unique SLO objective Name.
      The Name is required and can only contain lowercase, alphanumeric characters, and dashes. For example: objective-one.
      You can’t edit the SLO objective Name once you’ve created the SLO.

      note

      During the SLO objective unique identifier grace period, you can update the name for existing SLOs only through sloctl, and you can only do that once. Refer here for more information.

    • Enter the Target (mandatory).
      Define the percentage of good events out of total events that you want to meet the target values for the SLI.

    • Enter the target Values (mandatory).
      Compare the values gathered from the metric source. For example, if Values less than 200 is the objective for a Good experience, values below 200 are considered good.

    • You can modify the query for each added objective.

  • For the Time Slices method:

    • Enter SLO objective Display Name (optional).
      The Display Name allows you to enter a name with spaces.

    • Enter unique SLO objective Name.
      The Name is required and can only contain lowercase, alphanumeric characters, and dashes. For example: objective-one.
      You can’t edit the SLO objective Name once you’ve created the SLO.

      note

      During the SLO objective unique identifier grace period, you can update the name for existing SLOs only through sloctl, and you can only do that once. Refer here for more information.

    • Enter the Target (mandatory).
      Define the percentage of good events out of total events that you want to meet the target values for the SLI.

    • Enter the Time Slice Allowance (mandatory).
      Define the percentage of the time slice for which you want to meet that Target. This is used to determine if a time slice should be considered good or bad.

    • Enter the target Values (mandatory).
      Compare the values gathered from the metric source. For example, if Values less than 200 is the objective for a Good experience, values below 200 are considered good.

    • You can modify the query for each added objective.

For details on further steps, refer to the Getting Started Guide.

Creating Composite SLOs in sloctl

Refer to the YAML Guide | Nobl9 Documentation to see how you can define a Composite SLO in a YAML file.

Editing Composite SLOs

You can edit a Composite SLO by clicking the Edit button next to the Composite SLO in the Grid View.

  • In step 4 of the SLO wizard, you can edit:

    • The Target for both the Occurrences and Time Slices error budget calculation methods
    • The Time Slice Allowance for the Time Slices error budget calculation method
    • The Values for both the Occurrences and Time Slices error budget calculation methods
    • The Query for each added Objective by clicking View Query and modifying it
  • You can also add a new Objective to the Composite SLO. Once you’ve saved your changes, error budget calculations proceed with this objective included. Similarly, you can remove a defined Objective. Error budget calculations proceed without this objective after you’ve saved your changes. Calculations do not get reset.

  • In step 5 of the SLO wizard, you can uncheck the Create Composite SLO checkbox. When you save your changes, all the previously added objectives become individual, regular SLOs (the Composite SLO no longer appears in the Nobl9 UI and no history is preserved). Similarly, you can edit a regular SLO and check the Create Composite SLO checkbox in this step of the wizard. When you save your changes, the SLO becomes a Composite SLO.

note

The changes you make to the Composite SLO are reflected within a few minutes. The Composite SLO then starts to show an updated burn down.

Viewing Composite SLOs in Grid View

Like standard SLOs, you can view your Composite SLOs in the Grid View in the Nobl9 UI. Here, you can see the Composite SLO’s Reliability Burn Down chart, remaining error budget, and such.
You can quickly identify them by their special icon and blue header:

composite SLO - Grid View
Image 1: Composite SLO in Grid View

To open the Composite SLO's details view, click the name of the Composite SLO.

In the Composite tab, you can inspect the Reliability Burn Down and Error Budget Burn Rate charts.

composite SLO - Details tab
Image 2: Composite SLO details view

In the Objectives tab, you can see a list of all underlying Objectives with their data (the SLI chart and Reliability Burn Down chart). This allows you to see how each of them contributes to burning the Composite SLO’s error budget.

composite SLO - Objectives tab
Image 3: Composite SLO Objectives tab

Composite SLOs and Data Export

With the rollout of Composite SLOs, we've added a new column (composite) at the end of each CSV row. The new column indicates whether the row in the CSV file contains composite SLOs-related data.

When the value for the composite column is true, you can find the data for your composite SLOs in the following columns in the CSV file:

Column nameData typeDescription
budget_targetDOUBLEObjective’s target value (percentage in its decimal form) or composite’s target value.
objective_valueDOUBLEObjective value or composite SLO’s burn rate condition value.
objective_operatorSTRINGAn operator used with raw metrics or composite’s burn rate condition operator. One of the following values:
  • lte - less than or equal
  • lt - less than
  • get - greater than equal
  • gt - greater than
compositeBOOLEANIndicates whether the row contains composite-related data (true means a row contains composite data).

Composite SLO - Troubleshooting

Composite SLOs | Nobl9 Terraform Documentation

Replay and Composite SLOs