Aller au contenu

Alerting

Configuration des alertes basées sur les logs.

Types d'Alertes

1. Alertes Grafana (Recommandé)

Grafana permet de créer des alertes directement depuis les dashboards.

2. Alertes Loki Ruler

Loki peut évaluer des règles et envoyer des alertes vers Alertmanager.

Créer une Alerte Grafana

Étape 1 : Créer une requête

Dans un dashboard, créez un panel avec une requête LogQL :

sum(count_over_time({app="nestjs-backend"} |~ "(?i)error" [5m]))

Étape 2 : Configurer l'alerte

  1. Cliquez sur Alert dans l'éditeur du panel
  2. Configurez les conditions :
  3. Condition : WHEN last() OF query(A) IS ABOVE 10
  4. Evaluate every : 1m
  5. For : 5m

Étape 3 : Configurer les notifications

  1. Allez dans Alerting > Contact points
  2. Ajoutez un point de contact (Email, Slack, Discord, etc.)

Exemples d'Alertes Utiles

Trop d'erreurs

# Alerte si plus de 50 erreurs en 5 minutes
sum(count_over_time({env="prod"} |~ "(?i)(error|exception)" [5m])) > 50

Application silencieuse

# Alerte si aucun log en 10 minutes
absent(count_over_time({app="nestjs-backend"} [10m]))

Erreurs critiques

# Alerte immédiate sur FATAL/PANIC
{env="prod"} |~ "(?i)(fatal|panic|critical)"

Latence élevée (si loggée)

# Parse le temps de réponse et alerte si > 5s
{app="nestjs-backend"}
| json
| response_time > 5000

Règles Loki (Avancé)

Créez un fichier de règles dans /opt/monitoring/config/rules/ :

# alerts.yml
groups:
  - name: lyroh-alerts
    interval: 1m
    rules:
      - alert: HighErrorRate
        expr: |
          sum(rate({env="prod"} |~ "(?i)error" [5m])) > 0.1
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Taux d'erreurs élevé en production"
          description: "Plus de 0.1 erreurs/seconde détectées"

      - alert: ApplicationDown
        expr: |
          absent(count_over_time({app="nestjs-backend"} [5m]))
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "Application nestjs-backend ne produit plus de logs"

Canaux de Notification

Slack

# Dans Grafana > Alerting > Contact points
type: slack
settings:
  url: https://hooks.slack.com/services/XXX/YYY/ZZZ
  channel: "#alerts"
  username: "Grafana"

Discord

type: discord
settings:
  url: https://discord.com/api/webhooks/XXX/YYY

Email

type: email
settings:
  addresses: admin@lyroh.com

Bonnes Pratiques

  1. Évitez les faux positifs : Utilisez des seuils réalistes et des durées for appropriées
  2. Groupez les alertes : Ne créez pas une alerte par application, utilisez des labels
  3. Documentez : Ajoutez des annotations utiles pour le debugging
  4. Testez : Vérifiez que les notifications arrivent bien