# Tableaux de bord Grafana
#### Tips & tricks - présenté en juillet 2022 à l'équipe Monitoring
---
# Base du tableau de bord<!-- .element: style="font-size: smaller" -->
- from scratch (à partir de rien)
- clic clic
- à partir d'un tableau de bord existant.
- Copie puis édition
---
# Première étapes<!-- .element: style="font-size: smaller" -->
- Donner un nom
- Renseigner des variables
- `$datasource`
- `$environment`
- ...
- Ajouter des tags
- Ajouter un *panel* texte pour indiquer que c'est en cours de rédaction
- Sauvegarder
- Exporter au format JSON
---
# Modification d'un TdB existant<!-- .element: style="font-size: smaller" -->
- ajouter (temporairement) un champ texte
- indiquer que le tableau de bord est en cours de modification
- ce champ texte montre qu'on travaille bien au bon endroit
- il indique au client que des modifs sont en cours
- Retirer le champ avec un éditeur de texte
- Le redéploiement effacera le champ texte
---
# Sauvegarder souvent<!-- .element: style="font-size: smaller" -->
- Sauvegarder à chaque modification
- Exporter à chaque modification significative
---
# Variable datasource<!-- .element: style="font-size: smaller" -->
- cf un TdB (exemple : FE - RDS / ucc1)
- utiliser `on time range change` (N/A pour la datasource)
---
# Variable environment<!-- .element: style="font-size: smaller" -->
- cf un TdB (exemple : FE - RDS / ucc1)
- `label_values(<une métrique utilisée>, environment)`
- utiliser la datasource `$datasource`
- utiliser `on time range change`
---
# Variables suivantes<!-- .element: style="font-size: smaller" -->
- cf un TdB (exemple : FE - RDS / ucc1)
- toujours indiquer les variables précédentes
- `label_values(<une métrique utilisée>{environment="$environment"}, instance)`
- utiliser la datasource `$datasource`
- utiliser `on time range change` (sauf si on sait ce qu'on fait)
---
# Variables intermédiaires (cachées)<!-- .element: style="font-size: smaller" -->
- Au lieu de recording rules on peut utiliser des variables cachées
- Exemple : TdB FE - ELB (ucc2)
---
# Variables inutilisées<!-- .element: style="font-size: smaller" -->
- Vérifier dans les variables qu'il n'y a pas de variables inutilisées
---
# Panels<!-- .element: style="font-size: smaller" -->
- ne pas oublier de modifier la datasource pour les métriques
- mettre un titre
- ne pas oublier d'indiquer l'unité
---
# Panels et rows<!-- .element: style="font-size: smaller" -->
- Regrouper les panels de la même catégorie dans des rows
- Cela permet à l'utilisateur de replier ceux du début s'il n'en veut pas
---
# Dupliquer les panels similaires<!-- .element: style="font-size: smaller" -->
- Dupliquer les panels similaires pour gagner du temps
- Il suffit en général de changer l'expression
- Il faut avoir un panel "définitif" avant de le copier (pour éviter de faire 2 fois les mêmes corrections)
---
# Recording rules<!-- .element: style="font-size: smaller" -->
- On peut utiliser des recording rules pour faciliter les calculs
- Pour un nouveau tableau de bord, il est déconseillé d'utiliser des recording rules existantes (cf la mésaventure de l'équipe Front y'a 1 ou 2 ans)
---
# Sauvegarde et export dans git<!-- .element: style="font-size: smaller" -->
- <span>L'export d'un TdB est celui de la dernière sauvegarde, pas celui en cours !</span><!-- .element: style="font-size: smaller" -->
- <span>Lorsque le fichier est sauvegardé (json), faire un `vimdiff` entre l'ancien et le nouveau</span><!-- .element: style="font-size: smaller" -->
- <span>cela évite de voir le diff dans git et de devoir corriger après</span><!-- .element: style="font-size: smaller" -->
- <span>cela permet de corriger manuellement des modifications intempestives (clic au mauvais endroit)</span><!-- .element: style="font-size: smaller" -->
- <span>cela permet de ne pas avoir une inflation de la révision</span><!-- .element: style="font-size: smaller" -->
- <span>on peut contrôler qu'il n'y a pas de modification d'UID ou de titre</span><!-- .element: style="font-size: smaller" -->
- <span>on peut changeret indiquer `"editable": false`</span><!-- .element: style="font-size: smaller" -->
---
# Modifications de masse<!-- .element: style="font-size: smaller" -->
- Exporter le TdB
- Faire les modifications de masse (sed, replace all dans un éditeur de texte...)
- Copier/coller ou importer le TdB (changer le titre+uid si import)
---
# "Stacker" les courbes<!-- .element: style="font-size: smaller" -->
- utile pour des pourcentages (et des portions comme des portions de mémoire)
- `Stack series` juste avant la gestion des axes
- Exemple : TdB `Telegraf System Metrics Linux` -> panel `Memory`
---
# Index négatif<!-- .element: style="font-size: smaller" -->
- utile pour les courbes in/out (réseau, disque, I/O...)
- Add Field Override
- Field returned by query -> `B`
- Add override property
- Graph Styles -> Transform
- Negative Y
- Exemple : FE - VPC (ucc1)
---
# Déjà fini
snif :sob:
---
# Mais non, y'a du boulot !<!-- .element: style="font-size: smaller" -->
- [PF-454 : Documentation sur la création des dashboards](https://jira.corp.cloudwatt.com/browse/PF-454)
- outillage de vérifications (syntaxe, présence de tags, absence de datasources "en dur"...)
<style type="text/css">
p {
font-size: smaller;
}
.reveal ul ul li {
font-size: smaller;
}
.reveal section {
text-align: left;
}
}
.reveal h3 {
color: orange;
text-align: center;
border-bottom: 1px solid orange;
}
.reveal h1 {
color: orange;
text-align: center;
border-bottom: 1px solid orange;
margin-bottom: 0.4em;
}
.reveal code {
color: aquamarine;
font-size: smaller;
}
</style>