
Observability Manage Slos
Define SLIs, create SLOs, and manage error budgets in Elastic Observability through the Kibana SLO API after your app is in production.
Overview
Observability Manage Slos is an agent skill for the Operate phase that creates and manages Service-Level Objectives in Elastic Observability via the Kibana SLO API, including SLI type selection and lifecycle operations.
Install
npx skills add https://github.com/elastic/agent-skills --skill observability-manage-slosWhat is this skill?
- Documents Kibana `/api/observability/slos` auth with API key or basic auth plus required `kbn-xsrf` on mutating calls
- Covers non-default Kibana spaces via `/s/<space_id>/` path prefix on SLO routes
- Maps three SLI API types: `sli.kql.custom`, `sli.metric.custom`, and `sli.metric.timeslice`
- Oriented to SLI design, error-budget thinking, and full SLO lifecycle management in Elastic Observability
- Published skill metadata version 0.2.0 from Elastic agent-skills
- Documents 3 SLI API types: custom KQL, custom metric, and timeslice metric
- Skill metadata version 0.2.0 in SKILL.md frontmatter
Adoption & trust: 989 installs on skills.sh; 502 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You have Elasticsearch-backed telemetry but no repeatable way for your agent to define SLIs, register SLOs in Kibana, or manage error budgets through the official API.
Who is it for?
Indie SaaS or API operators already on Elastic Observability who want agent-assisted SLO setup and maintenance through Kibana rather than manual UI-only workflows.
Skip if: Teams not on Elastic/Kibana, greenfield apps with no production metrics yet, or builders who only need generic uptime pings without SLI/error-budget modeling.
When should I use this skill?
Create and manage SLOs in Elastic Observability using the Kibana API when defining SLIs, setting error budgets, or managing SLO lifecycle.
What do I get? / Deliverables
After running the skill, you get correct Kibana SLO API patterns—auth headers, space paths, and SLI type choice—so SLOs can be created or updated consistently against your reliability targets.
- Kibana SLO API request patterns for create, update, and lifecycle operations
- SLI type selection guidance mapped to `sli.kql.custom`, `sli.metric.custom`, or `sli.metric.timeslice`
Recommended Skills
Journey fit
SLOs and error budgets are production reliability controls—canonical home is Operate where you measure services against targets and govern lifecycle after ship. Monitoring is where SLI definitions, burn-rate visibility, and SLO CRUD belong; this skill wires those workflows to Kibana rather than generic incident triage.
How it compares
Use for Kibana-native SLO API workflows instead of treating SLOs as informal dashboard thresholds in chat.
Common Questions / FAQ
Who is observability-manage-slos for?
Solo and indie builders (or tiny ops teams) shipping on Elastic Observability who need structured help defining SLIs and managing SLO lifecycle calls against Kibana.
When should I use observability-manage-slos?
In Operate monitoring when defining SLIs, setting SLO targets, or updating and retiring SLOs; also when onboarding a new service in production and you want API-correct Kibana requests instead of one-off UI clicks.
Is observability-manage-slos safe to install?
Treat it as documentation for API calls that use credentials and mutate production observability config—review the Security Audits panel on this Prism page and scope API keys minimally before letting an agent execute requests.
SKILL.md
READMESKILL.md - Observability Manage Slos
# 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: ```bash # 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.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 - [Service-level objectives (SLOs)](https://www.elastic.co/docs/solutions/observability/incident-management/service-level-objectives-slos) — concepts, SLI types, budgeting methods, and dashboard panels. - [Create an SLO](https://www.elastic.co/docs/solutions/observability/incident-management/create-an-slo) — step-by-step guide for creating SLOs in the Kibana UI. - [View and manage SLOs](https://www.elastic.co/docs/solutions/observability/incident-management/slo-management) — searching, filtering, and managing existing SLOs. ### Kibana SLO API - [Create an SLO](https://www.elastic.co/docs/api/doc/kibana/operation/operation-createsloop) — full request body schema with all SLI type payloads. - [Get an SLO](https://www.elastic.co/docs/api/doc/kibana/operation/operation-getsloop) | [Update](https://www.elastic.co/docs/api/doc/kibana/operation/operation-updatesloop) | [Delete](https://www.elastic.co/docs/api/doc/kibana/operation/operation-deletesloop) | [Reset](https://www.elastic.co/docs/api/doc/kibana/operation/operation-resetsloop) - [Enable](https://www.elastic.co/docs/api/doc/kibana/operation/operation-enablesloop) | [Disable](https://www.elastic.co/docs/api/doc/kibana/operation/operation-disablesloop) | [Get definitions](https://www.e