======Installation de Prometheus et Grafana====== =====Étape 0: Préparatifs===== 1- Il est important en terme de sécurité de créer un nouvel utilisateur pour les installations sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus sudo useradd --no-create-home --shell /bin/false node_exporter 2- On créé des dossiers pour pouvoir stocker Prometheus et ses fichiers sudo mkdir /etc/prometheus sudo mkdir /var/lib/prometheus 3- Enfin, on donne à ces dossiers prometheus en owner sudo chown prometheus:prometheus /etc/prometheus sudo chown prometheus:prometheus /var/lib/prometheus =====Étape 1: Installation de Node Exporter===== Node Exporter est un outil qui permet de récupérer des informations sur le CPU et autres composants du PC. Il n'est pas essentiel mais il peut être intéressant de l'installer pour récupérer des données supplémentaires. Etape 1: Dans un premier temps, on récupère la dernière version de Node Exporter. Pour cela, on peut les récupérer via wget et dézipper via tar. wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz tar xvf node_exporter-1.1.2.linux-amd64.tar.gz Etape 2: On copie les fichiers récupérés dans /usr/local/bin et on met node_export en propriétaire sudo cp node_exporter-1.1.2.linux-amd64/node_exporter /usr/local/bin sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter Etape 3 (optionnel): Supprimer les fichiers de bases qui ont été copiés dans l'étape précédente Etape 4 (optionnel mais conseillé): On créé un fichier dans systemd sudo nano /etc/systemd/system/node_exporter.service Et on met ces informations dedans: [Unit] Description=Node Exporter Wants=network-online.target After=network-online.target [Service] User=node_exporter Group=node_exporter Type=simple ExecStart=/usr/local/bin/node_exporter [Install] WantedBy=multi-user.target Etape 5: Il ne reste plus qu'a activer le service: sudo systemctl daemon-reload sudo systemctl start node_exporter On vérifie le status: sudo systemctl status node_exporter Et enfin, si l'étape 3 a été faite, on active le lancement au démarrage: sudo systemctl status node_exporter =====Etape 2: Installation de Prometheus===== Prometheus est un outil qui sert à récolter des données basique des applications qui tournent sur le serveur. Etape 1: Dans un premier temps, on récupère la dernière version de Node Exporter. Pour cela, on peut les récupérer via wget et dézipper via tar ou bien récupérer directement la dernière version sur le site: Dans un premier temps, on récupère la dernière version de Node Exporter. Pour cela, on peut les récupérer via wget et dézipper via tar ou bien récupérer directement la dernière version sur le site: https://prometheus.io/download/ . Ne pas oublier de se déplacer dans le dossier extrait ensuite Etape 2: On copie les fichiers récupérés dans /usr/local/bin et on met prometheus en propriétaire sudo cp ./prometheus /usr/local/bin/ sudo cp ./promtool /usr/local/bin/ sudo chown prometheus:prometheus /usr/local/bin/prometheus sudo chown prometheus:prometheus /usr/local/bin/promtool Etape 3: On copie les dossiers console et console_libraries dans les dossiers prometheus créés plus tôt. On leur met ensuite le bon owner sudo cp -r ./consoles /etc/prometheus sudo cp -r ./console_libraries /etc/prometheus sudo chown -R prometheus:prometheus /etc/prometheus/consoles sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries Etape 4 (optionnel): Supprimer les fichiers de Prometheus de base === Ensuite, on va vouloir configurer Prometheus=== Pour pouvoir faire cette configuration, on va utiliser un fichier YAML. On y trouve beaucoup de configurations différentes donc voici un exemple: global: scrape_interval: 15s evaluation_interval: 15s rule_files: # - "first.rules" # - "second.rules" scrape_configs: - job_name: 'prometheus' scrape_interval: 5s static_configs: - targets: ['localhost:9090' - job_name: 'node_exporter' scrape_interval: 5s static_configs: - targets: ['localhost:9100'] Expliquons ces différents paramètres: Global: ce sont les paramètres en général de Prometheus, on peut y voir ici deux options: * scrape_interval: le temps qu'on veut entre les collectes de données. Ici, on attend 15 secondes. * evaluation_interval: le temps qu'on veut entre les activations de règles. Ici, on attend 15 secondes Rules Files: ce sont les fichiers qui seront utilisés pour établir des rules. Les rules servent par exemple à mettre en place des alertes bien que cela soit disponible plus tard depuis l'application. Scrape configs: Ici, on choisit les applications qui seront monitorés. On a encore une fois plusieurs paramètres: * Job name: simplement le nom de l'application qui est monitorée (ici c'est prometheus lui même) * scrape_intervals: comme dans global, le temps écoulé avant de récolter des données. Le temps indiqué ici overwritera le temps dans global. * static_configs et targets: Ici, on indique où sont les applications qu'on veut monitorer. Il y a évidemment d'autres options possible dans ce fichier mais ceci sont les plus basiques. Enfin, on oublie pas de mettre à jour le propriétaire de ce fichier: sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml ===Lancer Prometheus=== Etape 1: Utiliser cette commande pour pouvoir tester que Prometheus se lance bien: sudo -u prometheus /usr/local/bin/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.path /var/lib/prometheus/ --web.console.templates=/etc/prometheus/consoles --web.console.libraries=/etc/prometheus/console_libraries Etape 2: Aller sur http://ipduserveur:9090 et vérifier que cela fonctionne bien Etape 3 (optionnel mais conseillée): Comme pour Node Exporter, on ajoute un moyen de lancer automatiquement le serveur au démarrage à l'aide de systemd. sudo nano /etc/systemd/system/prometheus.service Et on met dans ce fichier: [Unit] Description=Prometheus Monitoring Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Type=simple ExecStart=/usr/local/bin/prometheus \ --config.file /etc/prometheus/prometheus.yml \ --storage.tsdb.path /var/lib/prometheus/ \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target Etape 4: Enfin, on peut démarrer le service sudo systemctl daemon-reload sudo systemctl enable prometheus sudo systemctl start prometheus =====Etape 3: Installer Grafana===== Grafana est un système qui va permettre d'optimiser l'affichage des données collectées par Prometheus a son maximum. Il n'est pas obligatoire mais est extrêmement conseillée. Etape 1: Récupérer la dernière version de Grafana et installez quelques packages nécessaires: sudo apt-get install -y adduser libfontconfig1 wget https://dl.grafana.com/oss/release/grafana_7.4.3_amd64.deb sudo dpkg -i grafana_7.4.3_amd64.deb Etape 2 (optionnelle): Comme pour node exporter et Prometheus, activons Grafana dès le démarrage: sudo systemctl daemon-reload && sudo systemctl enable grafana-server && sudo systemctl start grafana-server Et c'est tout! Grafana est ensuite directement disponible sur http://ipduserveur:3000 avec en utilisateur de base admin/admin. Le reste des paramétrages se font directement sur Grafana. =====Sources===== Le tutoriel sur lequel cette installation est basée: https://www.scaleway.com/en/docs/configure-prometheus-monitoring-with-grafana/