Classic SLOs โ Platform SLOs
Hands-on2 exercises
Classic SLOs โ Platform SLOs
Gen2 SLOs used metric selectors. Gen3 Platform SLOs use DQL-based SLIs โ more flexible and queryable.
Key Differences
GEN2 Classic SLO GEN3 Platform SLO
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Metric selector for SLI DQL timeseries for SLI
Fixed evaluation window Configurable timeframe
API: /api/v2/slo API: /platform/slo/v1/slos
Terraform: dynatrace_slo Terraform: dynatrace_platform_slo
Limited to metric expressions Full DQL power
Platform SLO API
// POST /platform/slo/v1/slos
{
"name": "Service Availability",
"criteria": [{
"target": 99.5,
"warning": 99.8,
"timeframeFrom": "now-7d",
"timeframeTo": "now"
}],
"customSli": "timeseries sli=avg(dt.host.cpu.idle), by:{dt.entity.host}"
}
๐ Try it
Write a Platform SLO API body for a service availability SLO with 99.5% target over 7 days.
extension.yamlYAML
Loading...
SLI Templates
// Service availability (% of successful requests)
timeseries sli = (
sum(dt.service.request.count) - sum(dt.service.request.failure_count)
) / sum(dt.service.request.count) * 100
// Response time P95 under threshold
timeseries sli = percentile(dt.service.request.response_time, 95)
// Host CPU idle (availability proxy)
timeseries sli = avg(dt.host.cpu.idle), by:{dt.entity.host}
// Synthetic availability
timeseries sli = avg(dt.synthetic.browser.availability)
Important Rules
criteriaMUST be an array (not an object)customSliis a DQL string โ must be a single timeseries query- SLO names must be unique (duplicate โ 400 error)
- GET response wraps as
customSli.indicatorโ don't use that format for POST - SLO list returns
response.slos[](notresults)