Agent-skills observability-manage-slos

install
source · Clone the upstream repo
git clone https://github.com/elastic/agent-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/elastic/agent-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/observability/manage-slos" ~/.claude/skills/elastic-agent-skills-observability-manage-slos && rm -rf "$T"
manifest: skills/observability/manage-slos/SKILL.md
source content

Service-Level Objectives (SLOs)

Create and manage SLOs in Elastic Observability. SLOs track service performance against measurable targets using service-level indicators (SLIs) computed from Elasticsearch data.

Authentication

SLO operations go through the Kibana API. Authenticate with either an API key or basic auth:

# API key
curl -H "Authorization: ApiKey <base64-encoded-key>" -H "kbn-xsrf: true" <KIBANA_URL>/api/observability/slos

# Basic auth
curl -u "$KIBANA_USER:$KIBANA_PASSWORD" -H "kbn-xsrf: true" <KIBANA_URL>/api/observability/slos

For non-default spaces, prefix the path:

/s/<space_id>/api/observability/slos
.

Include

kbn-xsrf: true
on all POST, PUT, and DELETE requests.

SLI Types

TypeAPI valueUse case
Custom KQL
sli.kql.custom
Raw logs — good/total using KQL queries
Custom metric
sli.metric.custom
Metric fields — equations with aggregations
Timeslice metric
sli.metric.timeslice
Metric fields — per-slice threshold check
Histogram metric
sli.histogram.custom
Histogram fields — range/value_count
APM latency
sli.apm.transactionDuration
APM — latency threshold
APM availability
sli.apm.transactionErrorRate
APM — success rate
Synthetics availability
sli.synthetics.availability
Synthetics monitors — uptime percentage

Guidelines

  • objective.target
    is a decimal between 0 and 1 (for example
    0.995
    for 99.5%).
  • Timeslice metric indicators require
    budgetingMethod: "timeslices"
    .
  • Updating an SLO resets the underlying transform — historical data is recomputed.
  • The cluster needs nodes with both
    transform
    and
    ingest
    roles.
  • Use
    POST .../slos/{id}/_reset
    when an SLO is stuck or after index mapping changes.
  • Group-by SLOs create one instance per unique value — avoid high-cardinality fields.
  • Synthetics SLOs are auto-grouped by monitor and location; do not set
    groupBy
    manually.
  • Burn rate alert rules are not auto-created using the API — set them up separately.

Additional references

For official documentation, refer to the following resources:

SLO documentation

Kibana SLO API

Troubleshooting and access