Aller au contenu

Ajout rules Loki pour un client#

Objectifs#

Déployer des rules Loki demandées par le client.

Dans la suite de la documentation, nous utiliserons ces variables :

CLIENT=<client>

Exemple pour obs-test04 :

CLIENT=test04

Procédure#

Aller dans le repository loki-client-rules.

Pour chaque contract il y a un dossier avec le nom correspondant (exemple: obs-test04).

Quand un client nous demande de déployer des rules Loki, il faut :

  • mettre les fichiers dans le dossier correspondant au contrat du client ;
  • vérifier la syntaxe des rules ;
  • mettre à jour la configmap déployée dans le cluster ;
  • vérifier la présence et le status des rules dans Grafana ;
  • commiter et pusher les rules Loki.

Mettre les fichiers dans le dossier correspondant au contrat du client#

ls obs-${CLIENT}/

On doit avoir les fichiers de rules donnés par le client.

Exemples de fichiers :

cat obs-${CLIENT}/nginx-alert.txt
groups:
    - name: Nginx404
      rules:
        - alert: Nginx404
          expr: '(count_over_time({filename="/var/log/nginx/access.log"} |= "HTTP/1.1\" 404"[5m]) > 0)'
          for: 1m
cat obs-${CLIENT}/nginx-record.txt
groups:
  - name: Nginx404
    rules:
    - record: nginx_404
      expr: '(count_over_time({filename="/var/log/nginx/access.log"} |= "HTTP/1.1\" 404"[5m]) > 0)'

Vérifier la syntaxe des rules#

Installer cortextool :

curl -fSL -o "cortextool" "https://github.com/grafana/cortex-tools/releases/download/v0.10.7/cortextool_0.10.7_linux_x86_64"
chmod a+x "cortextool"
sudo mv cortextool /usr/bin/.

Utiliser cette commande en modifiant l'argument avec le bon contrat :

cortextool rules lint --backend=loki obs-${CLIENT}/*

Résultat attendu :

INFO[0000] SUCCESS: x rules found, 0 linted expressions

Modifier les fichiers de rules#

La commande cortextool ajoute un champ namespace dans les fichier de rules.

Ce champ casse le déploiement. On doit le supprimer.

Exemple de fichier valide :

groups:
    - name: BackupAlert
      limit: 5
      rules:
        - alert: BackupFailed
          ...

Exemple de fichier non valide :

namespace: AlertBackupSql
groups:
    - name: BackupAlert
      limit: 5
      rules:
        - alert: BackupFailed
          ...

Préparer la MR#

git switch -c add_rules_${CLIENT}
git add obs-${CLIENT}
git commit -m "update rules for obs-${CLIENT}"
git push origin add_rules_${CLIENT}

Préparer et réaliser le CAASCHR#

Mettre à jour la configmap déployée dans le cluster#

Utiliser cette commande en modifiant l'option --from-file avec le bon contrat :

kswitch svc-loki-client-${CLIENT}
kubectl create configmap -n loki-client-obs-${CLIENT} loki-rules --from-file obs-${CLIENT}/* -o yaml --dry-run=client | kubectl apply -f -

Vérifier la présence et le status des rules dans Grafana#

Vérifier dans le Grafana du client https://grafana.obs-$CLIENT.cloudservicesfactory.com/ que :

  • les nouvelles rules sont bien présentes
  • le status Health est ok.

Fin#

Merger la MR.