groq/sloth
forked from slok/sloth
Captured source
source ↗groq/sloth
Language: Go
License: Apache-2.0
Stars: 1
Forks: 0
Open issues: 4
Created: 2025-02-03T22:55:11Z
Pushed: 2026-04-28T16:46:04Z
Default branch: main
Fork: yes
Parent repository: slok/sloth
Archived: no
README:
Sloth
 
Introduction
Meet the easiest way to generate [SLOs][google-slo] for Prometheus.
Sloth generates understandable, uniform and reliable Prometheus SLOs for any kind of service. Using a simple SLO spec that results in multiple metrics and [multi window multi burn][mwmb] alerts.
https://sloth.dev
Features
- Simple, maintainable and understandable SLO spec.
- Reliable SLO metrics and alerts.
- Based on [Google SLO][google-slo] implementation and [multi window multi burn][mwmb] alerts framework.
- Autogenerates Prometheus SLI recording rules in different time windows.
- Autogenerates Prometheus SLO metadata rules.
- Autogenerates Prometheus SLO [multi window multi burn][mwmb] alert rules (Page and warning).
- SLO spec validation (including
validatecommand for Gitops and CI). - Customization of labels, disabling different type of alerts...
- A single way (uniform) of creating SLOs across all different services and teams.
- Automatic [Grafana dashboard][grafana-dashboard] to see all your SLOs state.
- Single binary and easy to use CLI.
- Kubernetes ([Prometheus-operator]) support.
- Kubernetes Controller/operator mode with CRDs.
- Support different [SLI types](#sli-types-manifests).
- Support for [SLI plugins](#sli-plugins)
- A library with [common SLI plugins][common-sli-plugins].
- [OpenSLO] support.
- Safe SLO period windows for 30 and 28 days by default.
- Customizable SLO period windows for advanced use cases.

Getting started
Release the Sloth!
sloth generate -i ./examples/getting-started.yml
version: "prometheus/v1"
service: "myservice"
labels:
owner: "myteam"
repo: "myorg/myservice"
tier: "2"
slos:
# We allow failing (5xx and 429) 1 request every 1000 requests (99.9%).
- name: "requests-availability"
objective: 99.9
description: "Common SLO based on availability for HTTP request responses."
labels:
category: availability
sli:
events:
error_query: sum(rate(http_request_duration_seconds_count{job="myservice",code=~"(5..|429)"}[{{.window}}]))
total_query: sum(rate(http_request_duration_seconds_count{job="myservice"}[{{.window}}]))
alerting:
name: "MyServiceHighErrorRate"
labels:
category: "availability"
annotations:
# Overwrite default Sloth SLO alert summmary on ticket and page alerts.
summary: "High error rate on 'myservice' requests responses"
page_alert:
labels:
severity: "pageteam"
routing_key: "myteam"
ticket_alert:
labels:
severity: "slack"
slack_channel: "#alerts-myteam"[This](examples/_gen/getting-started.yml) would be the result you would obtain from the above [spec example](examples/getting-started.yml).
Documentation
[Check the docs to know more about the usage, examples, and other handy features!][docs]
SLI plugins
Looking for common SLI plugins? Check [this repository][common-sli-plugins], if you are looking for the sli plugins docs, check [this][docs-sli-plugins] instead.
Development and Contributing
Check [CONTRIBUTING.md](CONTRIBUTING.md).
[google-slo]: https://landing.google.com/sre/workbook/chapters/alerting-on-slos/ [mwmb]: https://landing.google.com/sre/workbook/chapters/alerting-on-slos/#6-multiwindow-multi-burn-rate-alerts [prometheus-operator]: https://github.com/prometheus-operator [grafana-dashboard]: https://grafana.com/grafana/dashboards/14348 [openslo]: https://openslo.com/ [common-sli-plugins]: https://github.com/slok/sloth-common-sli-plugins [docs-sli-plugins]: https://sloth.dev/usage/plugins/ [docs]: https://sloth.dev
Notability
notability 2.0/10Low-profile fork, minimal traction.