| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| grafana [2021/09/09 15:50] – [Présentation] nekan | grafana [2022/11/29 10:44] (Version actuelle) – [Installation de Grafana] nekan |
|---|
| ====== Installation de Grafana ====== | ====== Grafana - Installation d'un outil de visualisation de données ====== |
| | <poem> |
| <label type="info">Création</label> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2021/09/02 14:53// | <label type="info">Création</label> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2021/09/02 14:53// |
| | <label type="success">Mise à jour</label> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2022/11/27 18:33// |
| | </poem> |
| ===== Présentation ===== | ===== Présentation ===== |
| |
| * ''Telegraf'' : Agent de collecte de données sur les postes clients. | * ''Telegraf'' : Agent de collecte de données sur les postes clients. |
| |
| * Référence : [[https://grafana.com/grafana/|Grafana]] | |
| * Référence : [[https://www.influxdata.com/|InfluxDB]] | |
| * Référence : [[https://www.influxdata.com/time-series-platform/telegraf/|Telegraf]] | Références : |
| | * [[https://grafana.com/grafana/|Grafana]] |
| | * [[https://www.influxdata.com/|InfluxDB]] |
| | * [[https://www.influxdata.com/time-series-platform/telegraf/|Telegraf]] |
| |
| ===== Prérequis ===== | ===== Prérequis ===== |
| |
| ''InfluxDB'' nécessite le paquet ''curl'', il faut donc s'assurer que ce dernier est bien installé : | ''InfluxDB'', ''Telegraf'' et ''Grafana'' nécessitent certains paquets, il faut donc s'assurer de les installer avant : |
| <sxh bash>apt install -y curl</sxh> | <sxh bash>apt install -y gnupg2 curl software-properties-common</sxh> |
| |
| ===== Installation ===== | ===== InfluxDB ===== |
| |
| <callout type="info" title="Environnement" icon="true">Cette procédure a été réalisée et testé sur une VM en Debian 11, hébergée par un serveur Proxmox 7.0.</callout> | <callout type="info" title="Environnement" icon="true">Cette procédure a été réalisée et testé sur une VM en Debian 11, hébergée par un serveur Proxmox 7.0.</callout> |
| <callout type="danger" title="Droits" icon="true">Cette procédure nécessite les droits ''root''. Par conséquent, faîtes attention à ce que vous faîtes et rappelons-le, les sauvegardes et snapshots de VM sont toujours utiles.</callout> | <callout type="danger" title="Droits" icon="true">Cette procédure nécessite les droits ''root''. Par conséquent, faîtes attention à ce que vous faîtes et rappelons-le, les sauvegardes et snapshots de VM sont toujours utiles.</callout> |
| |
| * Comme avant toute installation, on commence par mettre à jour notre système : | ==== Installation ==== |
| <sxh bash>apt update && apt upgrade</sxh> | |
| * On peut maintenant télécharger et installer ''InfluxDB''. La version à l'heure où j'écris ces lignes est la 2.0.8 : | * On commence par ajouter le dépôt avant de mettre à jour notre base : |
| <sxh bash>cd /tmp | <sxh bash>add-apt-repository "deb https://repos.influxdata.com/debian bullseye stable" |
| wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.0.8-amd64.deb | apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 684A14CF2582E0C5 |
| dpkg -i influxdb2-2.0.8-amd64.deb</sxh> | apt update</sxh> |
| * L'installation de la base terminée, on peut lancer le service : | * On peut maintenant télécharger et installer ''InfluxDB'' : |
| <sxh bash>service influxdb start</sxh> | <sxh bash>apt install -y influxdb</sxh> |
| * On peut désormais se connecter à l'interface de ''InfluxDB'' sur le port 8086 de l'adresse de notre serveur. On clique alors sur ''Get Started'' pour commencer sa configuration : | * Le service ''influxdb'' nécessite l'écoute du port ''8086''. Il nous faut donc ouvrir ce port : |
| <image shape="thumbnail">{{ :linux:grafana:grafana_001.png |}}</image> | <sxh bash>iptables -A INPUT -p tcp --dport 8086 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT</sxh> |
| * On crée l'utilisateur initial en renseignant son nom, son mot de passe, son organisation (cela équivaut à son groupe) et son //bucket// (c'est-à-dire sa base). Cela fait, on clique sur ''Continue'' : | * On peut désormais activer et lancer le service : |
| <image shape="thumbnail">{{ :linux:grafana:grafana_002.png |}}</image> | <sxh bash>systemctl enable influxdb |
| * Sur l'écran suivant, nous avaons le choix entre trois options pour terminer la primo-configuration de la base : | systemctl start influxdb |
| * ''Quick Start'' : Cette option va paramétrer automatiquement la base pour acquérir les données locales envoyées par ''Telegraf''. | systemctl status influxdb</sxh> |
| * ''Advanced'' : Comme son nom l'indique, cela permet aux utilisateurs expérimentés de paramétrer la base selon leurs souhaits. | |
| * ''Configure Later'' : Permet de configurer ultérieurement la base. | ==== Paramétrage ==== |
| * Pour ma part, j'ai cliqué sur ''Configure Later'' : | |
| <image shape="thumbnail">{{ :linux:grafana:grafana_003.png |}}</image> | * On va maintenant créer la base de données (''influx_bdd'' pour l'exemple) : |
| * On peut maintenant se lancer dans l'installation de ''Telegraf''. La version au 02 septembre 2021 est la 1.19.2 : | <sxh bash>influx -execute "CREATE DATABASE influx_bdd"</sxh> |
| <sxh bash>cd /tmp | * On crée l'utilisateur et on lui donne les droits sur la base : |
| wget https://dl.influxdata.com/telegraf/releases/telegraf_1.19.2-1_amd64.deb | <sxh bash>influx -execute "CREATE USER influx_user WITH PASSWORD 'P@ssw0rd'" |
| dpkg -i telegraf_1.19.2-1_amd64.deb</sxh> | influx -execute "GRANT ALL ON influx_bdd TO influx_user"</sxh> |
| * On retourne sur l'interface de ''InfluxDB'' et on va dans ''Data'', ''Telegraf'' et on clique sur ''Create Configuration'' : | * On règle la rétention de données : |
| <image shape="thumbnail">{{ :linux:grafana:grafana_004.png |}}</image> | <sxh bash>influx -execute "CREATE RETENTION POLICY "a_year" ON "influx_bdd" DURATION 52w REPLICATION 1 DEFAULT"</sxh> |
| * On choisit ''System'' et on clique sur ''Continue'' : | |
| <image shape="thumbnail">{{ :linux:grafana:grafana_005.png |}}</image> | ===== Telegraf ===== |
| * On entre le nom de cette configuration et sa description puis on clique sur ''Create and Verify'' : | |
| <image shape="thumbnail">{{ :linux:grafana:grafana_006.png |}}</image> | * On installe le paquet à partir des dépôts déjà configurés : |
| * Là, on va pouvoir tester notre configuration. L'interface nous donne un jeton à exporter et une commande de collecte. On va donc les exécuter et cliquer sur ''Listen for Data'' : | <sxh bash>apt install -y telegraf</sxh> |
| <image shape="thumbnail">{{ :linux:grafana:grafana_007.png |}}</image> | * On configure l'agent en éditant le fichier ''/etc/telegraf/telegraf.conf''. Ce fichier contient **énormément** de données, toutes ne vous seront pas obligatoirement utiles. Vous aurez cependant besoin de spécifier : |
| * Si la configuration est bonne, le message ''Connection Found!'' apparaît. On peut alors cliquer sur ''Finish'' : | * Section ''[agent]'' (facultatif) : |
| <image shape="thumbnail">{{ :linux:grafana:grafana_008.png |}}</image> | * ''logtarget = "file"'' : Active les logs locaux. |
| * La configuration apparaît alors sur l'interface. On alors cliquer sur son nom : | * ''logfile = "/var/log/telegraf/telegraf.log"'' : Fichier de destination pour l'écriture des logs. |
| <image shape="thumbnail">{{ :linux:grafana:grafana_009.png |}}</image> | * ''logfile_rotation_interval = "24h"'' : Age du fichier log avant rotation. |
| * Cela fait apparaître la configuration à entrer dans le fichier ''/etc/telegraf/telegraf.conf'' pour que le service soit automatisé. Il nous reste plus qu'à modifier ce fichier en ce sens. On pourra aussi ajouter les option suivantes : | * ''logfile_rotation_max_size = "1GB"'' : Taille maximale du fichier log avant rotation. |
| * ''logtarget = "file"'' : Cette option va activer l'envoi des logs dans un fichier. | * ''logfile_rotation_max_archives = 5'' : Nombre de fichier de log à conservé. |
| * ''logfile = "/var/log/telegraf/telegraf.log"'' : Cette option indique dans quel fichier envoyer les logs. | * Section ''[[outputs.influxdb]] (obligatoire)'' |
| * ''logfile_rotation_interval = "1d"'' : Cette option va activer la rotation des logs tous les jours. | * ''urls = ["http://xxx.xxx.xxx.xxx:8086"]'' : Adresse du serveur ''influxdb''. |
| * ''logfile_rotation_max_size = "1GB"'' : Cette option va permettre d'activer la rotation plus tôt si le fichier de logs dépasse les 1Go. | * ''database = "influx_bdd"'' : Nom de la base. |
| * ''logfile_rotation_max_archives = 5'' : Cette option supprimera les anciens logs, ne gardant que les 5 derniers. | * ''username = "influx_user"'' : Utilisateur pour la connexion. |
| * Le fichier de log n'existant pas, il faut le créer et lui donner les bons droits : | * ''password = "P@ssw0rd"'' : Mot de passe pour la connexion. |
| <sxh bash>touch /var/log/telegraf/telegraf.log | * Sections ''[[inputs.*]]'' |
| chown telegraf:telegraf /var/log/telegraf/telegraf.log</sxh> | * On active toutes les sections ''inputs'' qui nous intéresse. |
| * On peut alors démarrer le service : | * Une fois les paramétrages terminés, on active le service : |
| <sxh bash>service telegraf start</sxh> | <sxh bash>systemctl enable telegraf |
| * Les données locales sont désormais collectées. On peut appliquer l'installation de ''telegraf'' et la configuration de ces agents sur ''InfluxDB'' sur tous nos serveurs à surveiller. | systemctl start telegraf</sxh> |
| * Une fois les agents installés, on peut passer à ''Grafana''. | |
| | ===== Grafana ===== |
| | |
| | ==== Installation ==== |
| | |
| | * Une fois les agents installés sur tous les serveurs à monitorer, on peut passer à ''Grafana''. On commence donc par l'ajout du dépôt : |
| | <sxh bash>curl -fsSL https://packages.grafana.com/gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/grafana.gpg |
| | add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"</sxh> |
| | * On installe le paquet : |
| | <sxh bash>apt update && apt -y install grafana</sxh> |
| | * Le service nécessite l'accès au port ''3000'', on paramètre donc le pare-feu en ce sens : |
| | <sxh>-A INPUT -p tcp --dport 3000 -m state --state NEW,ESTABLISHED,RELATED -j SHYRKA</sxh> |
| | * On peut désormais activer et lancer le service : |
| | <sxh bash>systemctl enable grafana-server |
| | systemctl start grafana-server</sxh> |
| | |
| | ==== Paramétrages ==== |
| | |
| | * On accède donc à l'interface de ''grafana'' sur le port ''3000'' du serveur. |
| | * Il nous faut commencer par définir le mot de passe administrateur. Par défaut, le compte utilisateur est ''admin'' et son mot de passe ''admin'' : |
| | {{ :linux:grafana:graf_001.png |}} |
| | * On renseigne le nouveau mot de passe et on clique sur ''Submit'' : |
| | {{ :linux:grafana:graf_002.png |}} |
| | * On doit ajouter la source de données ''influxdb''. On va donc cliquer sur l'icône des paramètres puis ''Data sources'' : |
| | {{ :linux:grafana:graf_003.png |}} |
| | * On clique sur ''Add data source'' : |
| | {{ :linux:grafana:graf_004.png |}} |
| | * Il y a de nombreuses sources possibles. On recherche donc ''infludb'' et on clique sur la source : |
| | {{ :linux:grafana:graf_005.png |}} |
| | * On renseigne : |
| | * ''URL'' : l'adresse et le port du serveur ''influxdb''. |
| | * ''Database'' : le nom de la base. |
| | * ''User'' : l'utilisateur pour la connexion. |
| | * ''Password'' : le mot de passe de l'utilisateur. |
| | * Une fois terminé, on clique sur ''Save & test'' : |
| | {{ :linux:grafana:graf_006.png |}} |
| | * Si tout est correct, le système nous l'indique : |
| | {{ :linux:grafana:graf_007.png |}} |
| | * On peut désormais créer le tableau de données ou ''dashboard''. Il est possible de le créer de toute pièce (option ''+ New dashboard'') mais le plus simple est d'en importer un. Le site [[https://grafana.com/grafana/dashboards/|Grafana - Dashboards]] en propose de nombreux. Du coup, on va cliquer sur l'onglet ''Dashboards'' puis ''+ Import'' : |
| | {{ :linux:grafana:graf_008.png |}} |
| | * On entre le numéro du ''dashboard'' à importer et on clique sur ''Load'' : |
| | {{ :linux:grafana:graf_009.png |}} |
| | * On indique la source de données et on clique sur ''Import'' : |
| | {{ :linux:grafana:graf_010.png |}} |
| | * On accède alors à notre ''dashbord''. Il ne nous reste plus qu'à l'enregistrer : |
| | {{ :linux:grafana:graf_011.png |}} |
| | * On clique donc sur ''Save'' : |
| | {{ :linux:grafana:graf_012.png |}} |
| |
| {{:underconstruction-copy-300x150.jpg?400|}} | <callout type="success" title="Enjoy" icon="true">Et voilà ! Vos serveurs sont désormais monitorés via une plateforme graphique assez agréable à regarder et plutôt efficace dans les faits.</callout> |
| |
| ~~DISCUSSION~~ | ~~DISCUSSION~~ |