# TP21 partie 5 : SLI enregistré + alerte sur le SLO de disponibilité.
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: demo-slo
  namespace: tp21
  labels:
    release: kps
spec:
  groups:
    - name: demo-sli
      rules:
        # SLI : proportion de requêtes réussies (non-5xx) sur 5 minutes.
        - record: demo:availability:ratio_rate5m
          expr: |
            sum(rate(http_request_duration_seconds_count{namespace="tp21", status_code!~"5.."}[5m]))
            /
            sum(rate(http_request_duration_seconds_count{namespace="tp21"}[5m]))
    - name: demo-slo-alerts
      rules:
        # TODO : alerte DemoAvailabilitySLOBreach
        #   - expr : SLI < 0.99
        #   - for : 5m
        #   - labels : severity: critical
        #   - annotations : summary, description et runbook_url (lien vers votre runbook.md sur GitHub)
        - alert: DemoHighLatencyP95
          expr: |
            histogram_quantile(0.95, sum by (le) (rate(http_request_duration_seconds_bucket{namespace="tp21"}[5m]))) > 1
          for: 10m
          labels:
            severity: warning
          annotations:
            summary: "Latence p95 de demo > 1 s"
            description: "La latence au 95e percentile dépasse 1 s depuis 10 minutes."
