1. Le principe #
Décrire, générer, charger.
Pourquoi Sloth #
Sloth est un générateur open source : à partir d'une spécification de SLO, il produit les règles d'enregistrement des SLI pour toutes les fenêtres, les métadonnées (objectif, budget restant) et les alertes multi-fenêtres multi-taux de la méthode Google.
2. Écrire une spécification #
Le format prometheus/v1.
Exemple #
version: "prometheus/v1"
service: "checkout"
labels:
owner: "equipe-paiement"
slos:
- name: "requests-availability"
objective: 99.9
description: "Requêtes de l'API checkout sans erreur 5xx."
sli:
events:
error_query: sum(rate(http_requests_total{service="checkout",code=~"5.."}[{{.window}}]))
total_query: sum(rate(http_requests_total{service="checkout"}[{{.window}}]))
alerting:
name: CheckoutHighErrorRate
labels:
category: availability
annotations:
summary: "Budget d'erreur de checkout consommé trop vite"
runbook_url: https://wiki.example.org/runbooks/checkout
page_alert:
labels: { severity: critical }
ticket_alert:
labels: { severity: warning }Le gabarit {{.window}} est remplacé par chaque fenêtre (5m, 30m, 1h, 2h, 6h, 1d, 3d, 30d).
sloth validate -i slos/
sloth generate -i slos/checkout.yml -o rules/checkout-slo.yml
# ou avec Docker
docker run --rm -v $PWD:/w ghcr.io/slok/sloth generate -i /w/slos/checkout.yml -o /w/rules/checkout-slo.ymlCe qui est généré #
| Métrique | Signification |
|---|---|
slo:sli_error:ratio_rate5m ... ratio_rate30d | Taux d'erreur par fenêtre |
slo:objective:ratio | Objectif (0,999) |
slo:error_budget:ratio | Budget (0,001) |
slo:current_burn_rate:ratio | Burn rate actuel |
slo:period_error_budget_remaining:ratio | Budget restant sur la période |
Toutes portent les labels sloth_service, sloth_slo et sloth_id.
3. Sur Kubernetes et dans Grafana #
Opérateur et dashboards.
Opérateur #
En mode Kubernetes, Sloth surveille des ressources PrometheusServiceLevel et crée les PrometheusRule correspondantes pour le Prometheus Operator :
apiVersion: sloth.slok.dev/v1
kind: PrometheusServiceLevel
metadata:
name: checkout
namespace: paiement
spec:
service: checkout
slos:
- name: requests-availability
objective: 99.9
sli:
events:
errorQuery: sum(rate(http_requests_total{service="checkout",code=~"5.."}[{{.window}}]))
totalQuery: sum(rate(http_requests_total{service="checkout"}[{{.window}}]))
alerting:
name: CheckoutHighErrorRate
pageAlert: { labels: { severity: critical } }
ticketAlert: { labels: { severity: warning } }Bonne Pratique : Sloth publie deux dashboards Grafana (identifiants 14348 pour le détail d'un SLO et 14643 pour la vue d'ensemble) qui exploitent directement les métriques générées.
Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
💬 Discussions récentes de la formation
- Alerter sur un SLO de 99,9 % sans être réveillé pour rien✓ résolu · 1 réponse(s)
Poser une question sur cette leçon →Voir toutes les discussions de la formation
Articles recommandés
Piloter ses SLO avec Pyrra
Pyrra : définir des SLO de disponibilité et de latence en CRD Kubernetes ou en fichiers, générer ...
Alertes sur le taux de consommation du budget (burn rate multi-fenêtres)
Pourquoi alerter sur le burn rate plutôt que sur un seuil, et comment construire les alertes mult...
Le budget d'erreur : décider avec les SLO
Calculer et suivre un budget d'erreur, rédiger une politique de budget d'erreur et l'utiliser pou...
Grafana SLO dans Grafana Cloud
Définir des SLO, suivre le budget d'erreur et générer les alertes de burn rate.
Chaos engineering : principes, outils et mise en pratique avec les SLO
Guide complet du chaos engineering : principes, régime permanent et hypothèse, rayon d'impact, li...
Les SLO dans Dynatrace : objectifs, budget d’erreur et burn rate
SLI, SLO et SLA, budget d'erreur et taux de consommation : définir un SLO de disponibilité ou de ...
Bonnes pratiques SRE : SLO utiles et budgets respectés
Check-list pour mettre en place des SLO qui servent : choix des parcours utilisateurs, objectifs ...
SRE : SLI, SLO et SLA expliqués simplement
Les fondamentaux de l'ingénierie de la fiabilité (SRE) : différence entre SLI, SLO et SLA, choix ...
Mesurer des SLI avec Prometheus
Implémenter des SLI de disponibilité et de latence avec Prometheus : métriques nécessaires, requê...