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
Healthest ok.
Fin#
Merger la MR.
