About observability-manage-slos
observability-manage-slos is a skill for creating and managing Elastic Observability SLOs through the Kibana API. It is for teams tracking service reliability targets and covers SLI types based on logs, metrics, APM, and Synthetics, along with configuration considerations.
Key features
- 01Create and manage SLOs
- 02Support log- and metric-based SLI types
- 03Support APM latency and availability SLIs
- 04Support Synthetics availability SLIs
- 05Authenticate and operate through the Kibana API
Use cases
- 01Define service targets from log queries
- 02Measure service performance with metric aggregations
- 03Track APM transaction latency or error rate
- 04Calculate availability from Synthetics monitors
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ elastic/ agent-skills --skill observability-manage-slosAfter installing, type/observability-manage-slosin Claude Code to confirm it loaded.
Details
From the project READMEService-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
| Type | API value | Use 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.targetis a decimal between 0 and 1 (for example0.995for 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
transformandingestroles. - Use
POST .../slos/{id}/_resetwhen 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
groupBymanually. - 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
- Service-level objectives (SLOs) — concepts, SLI types, budgeting methods, and dashboard panels.
- Create an SLO — step-by-step guide for creating SLOs in the Kibana UI.
- View and manage SLOs — searching, filtering, and managing existing SLOs.
Kibana SLO API
- Create an SLO — full request body schema with all SLI type payloads.
- Get an SLO | Update | Delete | Reset
- Enable | Disable | Get definitions