Installation de Prometheus avec Grafana
Prometheus est une solution de surveillance flexible en développement depuis 2012. Le logiciel stocke toutes ses données dans une base de données chronologique et propose un modèle de données multidimensionnel et un langage de requête puissant pour générer des rapports sur les ressources surveillées.
Préparer le terrain
Pour exécuter Prometheus en toute sécurité sur notre serveur, nous devons créer un utilisateur pour Prometheus sans possibilité de connexion. Pour ce faire, nous utilisons le paramètre --no-create-home
qui ignore la création d'un répertoire personnel et désactivons le shell avec --shell /usr/sbin/nologin
.
useradd --no-create-home --shell /usr/sbin/nologin prometheus
Créez les dossiers requis pour stocker les fichiers binaires de Prometheus et ses fichiers de configuration :
mkdir /etc/prometheus
mkdir /var/lib/prometheus
Définissez la propriété de ces répertoires pour notre utilisateur prometheus
, pour vous assurer que Prometheus peut accéder à ces dossiers :
chown prometheus:prometheus /etc/prometheus
chown prometheus:prometheus /var/lib/prometheus
Téléchargement et installation de Prometheus
Téléchargez et décompressez Prometheus :
apt-get update && apt-get upgrade
wget https://github.com/prometheus/prometheus/releases/download/v2.19.0/prometheus-2.19.0.linux-amd64.tar.gz
tar xfz prometheus-*.tar.gz
cd prometheus-*
Les deux fichiers binaires suivants se trouvent dans le répertoire:
- Prometheus - Fichier binaire principal de Prometheus
- promtool
Les deux dossiers suivants (qui contiennent l'interface Web, des exemples de fichiers de configuration et la licence) se trouvent dans le répertoire:
- consoles
- bibliothèques_consoles
Copiez les fichiers binaires dans le répertoire /usr/local/bin/
:
cp ./prometheus /usr/local/bin/
cp ./promtool /usr/local/bin/
Définissez la propriété de ces fichiers pour l'utilisateur prometheus
précédemment créé :
chown prometheus:prometheus /usr/local/bin/prometheus
chown prometheus:prometheus /usr/local/bin/promtool
Copiez les répertoires consoles
et console_libraries
dans /etc/prometheus
:
cp -r ./consoles /etc/prometheus
cp -r ./console_libraries /etc/prometheus
Définissez la propriété des deux dossiers, ainsi que de tous les fichiers qu'ils contiennent, à notre utilisateur prometheus
:
chown -R prometheus:prometheus /etc/prometheus/consoles
chown -R prometheus:prometheus /etc/prometheus/console_libraries
Configurer Prometheus
Avant d'utiliser Prometheus, il a besoin d'une configuration de base. Ainsi, nous devons créer un fichier de configuration nomméprometheus.yml
Remarque: Le fichier de configuration de Prometheus est écrit en YAML ce qui interdit strictement l'utilisation des onglets. Si votre fichier n'est pas formaté correctement, Prometheus ne démarre pas. Soyez prudent lorsque vous le modifiez.
Ouvrez le fichier prometheus.yml
dans un éditeur de texte :
nano /etc/prometheus/prometheus.yml
Le fichier de configuration de Prométhée est divisé en trois parties: global
, rule_files
et scrape_configs
.
Dans la partie global
, nous pouvons trouver la configuration générale de Prometheus:
scrape_interval
définit la fréquence à laquelle Prometheus élimine les cibles, evaluation_interval
contrôle la fréquence à laquelle le logiciel évaluera les règles.
Les règles sont utilisées pour créer de nouvelles séries temporelles et pour générer des alertes.
Le bloc rule_files
contient des informations sur l'emplacement des règles que nous voulons que le serveur Prometheus charge.
Le dernier bloc du fichier de configuration est nommé scape_configs
et contient les informations sur les ressources surveillées par Prometheus.
Notre fichier devrait ressembler à cet 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']
La valeur globale scrape_interval
est définie sur 15 secondes, ce qui est suffisant pour la plupart des cas d'utilisation.
Dans la partie scrape_configs
nous avons défini notre premier exportateur. C'est Prometheus qui est surveillé. Comme nous voulons avoir des informations plus précises sur l'état de notre serveur Prometheus, nous avons réduit la scrape_interval
à 5 secondes pour ce travail.
Les paramètres static_configs
et targets
déterminent l'emplacement d'exécution des exportateurs. Dans notre cas, il s'agit du même serveur, nous utilisons donc localhost
le port 9090
.
Pour toutes les informations sur la configuration de Prometheus, vous pouvez consulter la documentation de configuration .
Définissez la propriété du fichier pour notre utilisateur Prometheus
:
chown prometheus:prometheus /etc/prometheus/prometheus.yml
Notre serveur Prometheus est prêt à fonctionner pour la première fois.
Exécution de Prometheus
Démarrez Prometheus directement à partir de la ligne de commande avec la commande suivante, qui exécute le fichier binaire en tant qu'utilisateur Prometheus
:
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
Le serveur commence à afficher plusieurs messages d'état et les informations que le serveur a démarrées :
level=info ts=2018-04-12T11:56:53.084000977Z caller=main.go:220 msg="Starting Prometheus" version="(version=2.2.1, branch=HEAD, revision=bc6058c81272a8d938c05e75607371284236aadc)"
level=info ts=2018-04-12T11:56:53.084463975Z caller=main.go:221 build_context="(go=go1.10, user=root@149e5b3f0829, date=20180314-14:15:45)"
level=info ts=2018-04-12T11:56:53.084632256Z caller=main.go:222 host_details="(Linux 4.4.127-mainline-rev1 #1 SMP Sun Apr 8 10:38:32 UTC 2018 x86_64 scw-041406 (none))"
level=info ts=2018-04-12T11:56:53.084797692Z caller=main.go:223 fd_limits="(soft=1024, hard=65536)"
level=info ts=2018-04-12T11:56:53.09190775Z caller=web.go:382 component=web msg="Start listening for connections" address=0.0.0.0:9090
level=info ts=2018-04-12T11:56:53.091908126Z caller=main.go:504 msg="Starting TSDB ..."
level=info ts=2018-04-12T11:56:53.102833743Z caller=main.go:514 msg="TSDB started"
level=info ts=2018-04-12T11:56:53.103343144Z caller=main.go:588 msg="Loading configuration file" filename=/etc/prometheus/prometheus.yml
level=info ts=2018-04-12T11:56:53.104047346Z caller=main.go:491 msg="Server is ready to receive web requests."
Ouvrez votre navigateur et tapez http://IP.OF.YOUR.SERVER:9090
pour accéder à l'interface Prometheus.
Si tout fonctionne, nous terminons la tâche en appuyant sur CTRL + C
sur notre clavier.
Le serveur fonctionne maintenant, mais il ne peut pas encore être lancé automatiquement au démarrage.
Pour ce faire, nous devons créer un nouveau systemd
fichier de configuration qui indiquera à votre système d'exploitation quels services doit-il lancer automatiquement pendant le processus de démarrage.
nano /etc/systemd/system/prometheus.service
Copiez les informations suivantes dans le fichier et enregistrez-le, puis quittez l'éditeur :
[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
Pour utiliser le nouveau service, rechargez systemd
:
systemctl daemon-reload
Nous activons le service pour qu'il soit chargé automatiquement lors du démarrage:
systemctl enable prometheus
Démarrez Prometheus :
Installer Grafana
Installez Grafana sur notre instance qui interroge notre serveur Prometheus :
wget https://dl.grafana.com/oss/release/grafana_7.0.3_amd64.deb
dpkg -i grafana_7.0.3_amd64.deb
Activez le démarrage automatique de Grafana en systemd
:
systemctl daemon-reload && systemctl enable grafana-server && systemctl start grafana-server
Grafana fonctionne maintenant et nous pouvons nous y connecter à http://your.server.ip:3000
.
L'utilisateur et le mot de passe par défaut sont admin
/ admin
.

Vous devez maintenant créer une source de données Prometheus:
- Cliquez sur le logo Grafana pour ouvrir la barre latérale.
- Cliquez sur «Sources de données» dans la barre latérale.
- Choisissez «Ajouter nouveau».
- Sélectionnez «Prometheus» comme source de données.
- Définissez l'URL du serveur Prometheus (dans notre cas: http://localhost:9090/)
- Cliquez sur «Ajouter» pour tester la connexion et enregistrer la nouvelle source de données.
Vos paramètres devraient ressembler à ceci :

Vous êtes maintenant prêt à créer votre premier tableau de bord à partir des informations collectées par Prometheus. Vous pouvez également importer certains tableaux de bord à partir d'une collection de tableaux de bord partagés.
Voici un exemple de tableau de bord qui utilise l'utilisation d'un exporteur de données :
