1. Pyrra en bref #
Un générateur avec une interface.
Composants #
Pyrra fait le même travail que Sloth (règles multi-fenêtres et alertes burn rate) et y ajoute une interface web qui liste tous les SLO, leur budget restant et leurs graphes, sans dashboard à importer.
| Composant | Rôle |
|---|---|
pyrra api | Interface web et API (port 9099), interroge Prometheus |
pyrra kubernetes | Opérateur : lit les CRD ServiceLevelObjective et crée des PrometheusRule |
pyrra filesystem | Hors Kubernetes : lit des fichiers YAML et écrit des fichiers de règles pour Prometheus |
2. Définir des SLO #
Disponibilité et latence.
Disponibilité #
apiVersion: pyrra.dev/v1alpha1
kind: ServiceLevelObjective
metadata:
name: checkout-errors
namespace: monitoring
labels: { prometheus: k8s, role: alert-rules }
spec:
target: "99.9"
window: 4w
description: Requêtes de checkout sans erreur 5xx.
indicator:
ratio:
errors:
metric: http_requests_total{service="checkout", code=~"5.."}
total:
metric: http_requests_total{service="checkout"}Latence #
spec:
target: "99"
window: 4w
indicator:
latency:
success:
metric: http_request_duration_seconds_bucket{service="checkout", le="0.3"}
total:
metric: http_request_duration_seconds_count{service="checkout"}À savoir : Avec grouping: [route], Pyrra calcule un SLO par valeur du label (une ligne par route dans l'interface), à partir d'une seule définition.3. Sloth ou Pyrra ? #
Deux bons choix.
Comparatif #
| Critère | Sloth | Pyrra |
|---|---|---|
| Interface web | Non (dashboards Grafana) | Oui |
| Kubernetes | Opérateur + CLI | Opérateur |
| Hors Kubernetes | CLI qui génère des fichiers | Mode filesystem |
| SLI de latence natif | Requêtes libres | Oui (histogrammes) |
| Plugins de SLI | Oui (bibliothèque de SLI) | Non |
Les versions commerciales de Grafana (Grafana Cloud SLO), Datadog, Dynatrace ou Nobl9 proposent des fonctions équivalentes intégrées. Les concepts (SLI ratio, fenêtres, burn rate) restent identiques.
