SLOs

Service Level Objectives (SLOs) define reliability targets for your services. dtctl lets you list, create, evaluate, and manage SLOs directly from the command line.

Listing SLOs

# List all SLOs
dtctl get slos

# Filter by name
dtctl get slos --filter 'name~production'

# Wide output with target, warning, and current status
dtctl get slos -o wide

# JSON or YAML for scripting
dtctl get slos -o json

Describing an SLO

Get full details for a specific SLO, including its current status, error budget, and evaluation configuration:

dtctl describe slo slo-123

Templates

Dynatrace provides built-in SLO templates for common use cases. Use them as a starting point:

# List available SLO templates
dtctl get slo-templates

# Create an SLO from a template (interactive — prompts for required fields)
dtctl create slo --from-template

Creating and Applying SLOs

Define SLOs in YAML and create or update them:

# Create (fails if the SLO already exists)
dtctl create slo -f slo.yaml

# Apply (creates if new, updates if existing — idempotent)
dtctl apply -f slo.yaml

Example SLO YAML

name: Service Availability
description: 97% of requests are successful over the last 7 days
criteria:
  - timeframeFrom: -7d
    target: 97.0
    warning: 98.0
customSli:
  indicator: |
    timeseries { total=sum(dt.service.request.count), failures=sum(dt.service.request.failure_count) }
    , by: { dt.smartscape.service }
    | fieldsAdd sli=(((total[]-failures[])/total[])*(100))
    | fieldsAdd dt.smartscape.entity.name = getNodeName(dt.smartscape.service)
    | fieldsRemove total, failures, smartscapeIds
tags:
  - slo-type:availability
Field Description
evaluationType AGGREGATE (single value over the timeframe) or PER_INTERVAL (evaluated per interval)
target The SLO target percentage (e.g., 99.9)
warning Warning threshold — alerts before the target is breached
filter Entity selector to scope the SLO
metricExpression Metric expression that computes the SLO value
timeframe Evaluation window (e.g., "-1w", "-30d")

Evaluating an SLO

Trigger an on-demand evaluation to check the current status and remaining error budget:

dtctl exec slo slo-123

This returns the current SLO value, error budget remaining, and evaluation status:

Name:           Checkout Availability
Status:         SUCCESS
SLO Value:      99.94%
Target:         99.90%
Warning:        99.95%
Error Budget:   0.04% remaining
Timeframe:      last 7 days

Watch Mode

Monitor SLOs in real time:

dtctl get slos --watch

Press Ctrl+C to stop watching.

Deleting an SLO

dtctl delete slo slo-123

dtctl prompts for confirmation in interactive mode. Use --plain to skip the prompt in scripts and CI pipelines.