Pour déployer la suite de surveillance Prometheus, nous allons extraire les binaires et les organiser dans une structure de répertoires standardisée, en utilisant un utilisateur dédié pour des raisons de sécurité.
# Création des répertoires nécessaires et de l'utilisateur système
sudo mkdir -p /opt/prometheus/{bin,conf,data}
sudo useradd -r -s /bin/false prometheus
# Extraction et déplacement des binaires (supposant que les archives sont téléchargées)
tar xvf prometheus-*.tar.gz
sudo cp prometheus-*/prometheus prometheus-*/promtool /opt/prometheus/bin/
sudo cp prometheus-*/prometheus.yml /opt/prometheus/conf/
sudo chown -R prometheus:prometheus /opt/prometheus
Configuration du Serveur Prometheus
Le fichier de configuration principal définit les cibles à surveiller. Voici une configuration de base incluant le serveur lui-même, une instance Pushgateway et des exportateurs de nœuds.
# /opt/prometheus/conf/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus-server'
static_configs:
- targets: ['localhost:9090']
- job_name: 'pushgateway-service'
static_configs:
- targets: ['10.0.0.50:9091']
labels:
environment: 'production'
- job_name: 'node-metrics'
static_configs:
- targets: ['10.0.0.51:9100', '10.0.0.52:9100', '10.0.0.53:9100']
Intégration Systemd pour Prometheus
Créez un fichier de service pour gérer le processus en arrière-plan de manière fiable.
# /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring System
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/opt/prometheus/bin/prometheus \
--config.file=/opt/prometheus/conf/prometheus.yml \
--storage.tsdb.path=/opt/prometheus/data \
--web.enable-lifecycle \
--web.listen-address=:9090
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus
sudo systemctl status prometheus
Déploiement de Pushgateway
Pushgateway permet de récupérer les métriques des travaux de courte durée. Assurez-vous d'avoir extrait le binaire dans le répertoire des binaires précédemment créé.
# /etc/systemd/system/pushgateway.service
[Unit]
Description=Prometheus Pushgateway
Documentation=https://github.com/prometheus/pushgateway
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/opt/prometheus/bin/pushgateway \
--web.listen-address=:9091
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now pushgateway
sudo systemctl status pushgateway
Installation de Node Exporter
Node Exporter collecte les métriques matérielles et du système d'exploitation. Ce composant doit être installé sur chaque nœud cible à surveiller.
# /etc/systemd/system/node_exporter.service
[Unit]
Description=Prometheus Node Exporter
Documentation=https://github.com/prometheus/node_exporter
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/opt/prometheus/bin/node_exporter \
--web.listen-address=:9100
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
sudo systemctl status node_exporter
Visualisation avec Grafana
Une fois les copmosants de collecte déployés, Grafana est utilisé pour la visualisation des données. Après avoir installé Grafana sur votre serveur, ajoutez Prometheus comme source de données via l'interface utilisateur en spécifiant l'URL du serveur Prometheus (par exemple, http://10.0.0.50:9090).