PluginBench
Skill
Review
Audit score 70

observability-manage-slos

elastic/agent-skills

Create and manage SLOs in Elastic Observability using the Kibana API.

What is observability-manage-slos?

Define and track Service-Level Objectives (SLOs) against measurable targets using service-level indicators (SLIs) computed from Elasticsearch data. Use this skill when setting performance targets, defining error budgets, or managing the SLO lifecycle through the Kibana API.

  • Create SLOs with multiple SLI types: custom KQL, custom metrics, timeslice metrics, histograms, APM latency, APM availability, and Synthetics availability
  • Manage SLO lifecycle: get, update, delete, reset, enable, and disable SLOs via Kibana API
  • Authenticate using API keys or basic auth with support for non-default Kibana spaces
  • Configure objective targets as decimals (e.g., 0.995 for 99.5%) and budgeting methods
  • Group SLOs by field values to create instances per unique value for multi-dimensional tracking
  • Reset SLOs when stuck or after index mapping changes to recompute historical data

How to install observability-manage-slos

npx skills add https://github.com/elastic/agent-skills --skill observability-manage-slos
Prerequisites
  • Elastic Observability deployment with Kibana access
  • Kibana API key or basic authentication credentials
  • Elasticsearch cluster with nodes having both transform and ingest roles
  • Appropriate permissions configured for SLO access in Kibana
Claude Code
Cursor
Windsurf
Cline

How to use observability-manage-slos

  1. 1.Authenticate to Kibana using an API key or basic auth credentials
  2. 2.Choose an SLI type matching your data source (APM, Synthetics, custom KQL, or metrics)
  3. 3.Define the objective target as a decimal between 0 and 1 (e.g., 0.995 for 99.5%)
  4. 4.Create the SLO via POST request to /api/observability/slos with the appropriate SLI payload
  5. 5.Optionally configure group-by fields for multi-dimensional SLOs (avoid high-cardinality fields)
  6. 6.Monitor SLO status and manage via get, update, delete, or reset operations as needed

Use cases

Good for
  • Define latency SLOs for API endpoints using APM transaction duration data
  • Track error rate targets for microservices using APM transaction error rates
  • Monitor uptime percentages for synthetic monitors across multiple locations
  • Create custom SLOs from raw logs using KQL queries for good/total event counts
  • Set up metric-based SLOs with threshold checks per time slice for infrastructure components
Who it's for
  • SRE and DevOps engineers managing service reliability targets
  • Platform teams defining and tracking SLO compliance across services
  • Observability engineers setting up performance monitoring and alerting
  • Teams using Elastic Observability for incident management and burn rate tracking

observability-manage-slos FAQ

What SLI types are available?

Seven types: custom KQL (raw logs), custom metric (metric equations), timeslice metric (per-slice thresholds), histogram metric (range/value_count), APM latency (transaction duration), APM availability (error rate), and Synthetics availability (uptime percentage).

How do I authenticate to the Kibana SLO API?

Use either an API key with Authorization header or basic auth. Include the kbn-xsrf: true header on all POST, PUT, and DELETE requests. For non-default spaces, prefix the path with /s/<space_id>.

What happens when I update an SLO?

Updating an SLO resets the underlying transform and recomputes historical data. Use POST .../slos/{id}/_reset if an SLO is stuck or after index mapping changes.

Can I create SLOs grouped by field values?

Yes, 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.

Are burn rate alert rules created automatically?

No, burn rate alert rules are not auto-created via the API. Set them up separately in Kibana after creating the SLO.

Full instructions (SKILL.md)

Source of truth, from elastic/agent-skills.


name: observability-manage-slos description: > Create and manage SLOs in Elastic Observability using the Kibana API. Use when defining SLIs, setting error budgets, or managing SLO lifecycle. metadata: author: elastic version: 0.2.0

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 KQLsli.kql.customRaw logs — good/total using KQL queries
Custom metricsli.metric.customMetric fields — equations with aggregations
Timeslice metricsli.metric.timesliceMetric fields — per-slice threshold check
Histogram metricsli.histogram.customHistogram fields — range/value_count
APM latencysli.apm.transactionDurationAPM — latency threshold
APM availabilitysli.apm.transactionErrorRateAPM — success rate
Synthetics availabilitysli.synthetics.availabilitySynthetics 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