Skip to main content

Release Announcement

​ Composite SLOs (currently in Beta), a Nobl9 feature that enables defining multiple SLIs for a single SLO, will change how you define SLOs via YAML files.

warning

For all Nobl9 Terraform users: since this feature requires a change in our API, upgrade your Nobl9 Terraform provider to the latest version.

How does this change affect me?​

​ With the rollout of Composite SLOs, all SLO queries can now be defined on the objective level. This affects how you can define your SLOs through YAML files. ​

There is a backward compatibility, but only for the sloctl apply slo operations. This means that you will still be able to apply existing YAML definitions with a single query at the indicator level, but you’ll also be able to use the new, preferred method with queries defined for each objective (see the YAML samples below). ​

Keep in mind that all sloctl get slo operations will return SLOs with queries defined on the objective level only. So, if you try to get your SLOs using sloctl get slo, you won’t see the query defined on the indicator level in the YAML output. Instead, the query will be defined on the level of each objective (just like in ratio metric SLOs).

If you're using the Data Export feature, keep in mind that there's a new column in the exported CSV files that's related to composite SLOs. Go to Composite SLOs guide for more details.

​

Examples​

​ Here’s an example of an old YAML definition for an SLO: ​

- apiVersion: n9/v1alpha
kind: SLO
metadata:
name: splunk-raw-rolling
project: splunk
spec:
service: splunk-service
indicator:
metricSource:
name: splunk
rawMetric:
splunk:
query: index=* source=udp:5072 sourcetype=syslog status<400 | bucket _time span=1m | stats avg(response_time) as n9value by _time | rename _time as n9time | fields n9time n9value
timeWindows:
- unit: Day
count: 7
isRolling: true
budgetingMethod: Occurrences
objectives:
- displayName: Good
op: lte
value: 0.25
target: 0.50
- displayName: Moderate
op: lte
value: 0.5
target: 0.75
- displayName: Annoying
op: lte
value: 1.0
target: 0.95

​ Here’s an example for a new YAML for all SLOs (changes in SLO definitions have been highlighted in the snippet): ​

- apiVersion: n9/v1alpha
kind: SLO
metadata:
name: splunk-raw-rolling
project: splunk
spec:
service: splunk-service
indicator:
metricSource:
name: splunk
timeWindows:
- unit: Day
count: 7
isRolling: true
budgetingMethod: Occurrences
objectives:
- displayName: Good
op: lte
rawMetric:
query:
splunk:
query: index=* source=udp:5072 sourcetype=syslog status<400 | bucket _time span=1m | stats avg(response_time) as n9value by _time | rename _time as n9time | fields n9time n9value
value: 0.25
target: 0.50
- displayName: Moderate
op: lte
rawMetric:
query:
splunk:
query: index=* source=udp:5072 sourcetype=syslog status<400 | bucket _time span=1m | stats avg(response_time) as n9value by _time | rename _time as n9time | fields n9time n9value
value: 0.5
target: 0.75
- displayName: Annoying
op: lte
rawMetric:
query:
splunk:
query: index=* source=udp:5072 sourcetype=syslog status<400 | bucket _time span=1m | stats avg(response_time) as n9value by _time | rename _time as n9time | fields n9time n9value
value: 1.0
target: 0.95
---