Prometheus
Prometheus
Prometheus est disponible dans les dépôts Debian avec forcément un décalage avec la dernière version.
Installation via les packets
Actuellement, Prometheus est en version 2.7.1.
apt install -y prometheus prometheus-node-exporter
Prometheus
Contrôle du service
systemctl status prometheus
● prometheus.service - Monitoring system and time series database
Loaded: loaded (/lib/systemd/system/prometheus.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-06-13 18:45:04 CEST; 1min 39s ago
Docs: https://prometheus.io/docs/introduction/overview/
Main PID: 2259 (prometheus)
Tasks: 10 (limit: 2330)
Memory: 28.9M
CGroup: /system.slice/prometheus.service
└─2259 /usr/bin/prometheus
juin 13 18:45:04 grafana prometheus[2259]: level=info ts=2020-06-13T16:45:04.263785211Z caller=main.go:302 host_details="(Linux 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64 grafana (none))"
juin 13 18:45:04 grafana prometheus[2259]: level=info ts=2020-06-13T16:45:04.26395904Z caller=main.go:303 fd_limits="(soft=8192, hard=8192)"
juin 13 18:45:04 grafana prometheus[2259]: level=info ts=2020-06-13T16:45:04.264134173Z caller=main.go:304 vm_limits="(soft=unlimited, hard=unlimited)"
juin 13 18:45:04 grafana prometheus[2259]: level=info ts=2020-06-13T16:45:04.265086335Z caller=main.go:618 msg="Starting TSDB ..."
juin 13 18:45:04 grafana prometheus[2259]: level=info ts=2020-06-13T16:45:04.265651345Z caller=web.go:411 component=web msg="Start listening for connections" address=0.0.0.0:9090
juin 13 18:45:04 grafana prometheus[2259]: level=info ts=2020-06-13T16:45:04.274234991Z caller=main.go:633 msg="TSDB started"
juin 13 18:45:04 grafana prometheus[2259]: level=info ts=2020-06-13T16:45:04.275447813Z caller=main.go:693 msg="Loading configuration file" filename=/etc/prometheus/prometheus.yml
juin 13 18:45:04 grafana prometheus[2259]: level=info ts=2020-06-13T16:45:04.276361825Z caller=main.go:720 msg="Completed loading of configuration file" filename=/etc/prometheus/prometheus.yml
juin 13 18:45:04 grafana prometheus[2259]: level=info ts=2020-06-13T16:45:04.276671785Z caller=main.go:587 msg="Server is ready to receive web requests."
juin 13 18:45:09 grafana prometheus[2259]: level=error ts=2020-06-13T16:45:09.26766491Z caller=notifier.go:481 component=notifier alertmanager=http://localhost:9093/api/v1/alerts count=0 msg="Error sending alert" err="Post http://localh
Accès web
http://xx.xx.xx.xx:9090
Node Exporter
Prometheus n'est rien sans Node Exporter. Car c'est Node Exporter qui collecte les données.
vi /etc/prometheus/prometheus.yml
De base,le fichier de configuration ce suffit à lui même. J'ai juste rajouté le cas avec un second Node Exporter.
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
scrape_timeout: 5s
static_configs:
- targets: ['localhost:9090']
- job_name: 'node'
static_configs:
- targets: ['monserveur:9100','second_serveur:9100']
Pour voir si Node Exporter est bien connecter avec Prometheus : aller dans dans Status > Targets
Prometheus comme source pour Grafana
Installation via les binaires pré-compilés
Pour être certains d'avoir la version la plus récente, on va passer par le dépot GIT
Pré-requis
apt install -y wget curl
groupadd --system prometheus
useradd -s /sbin/nologin --system -g prometheus prometheus
mkdir /var/lib/prometheus
Téléchargement et installation
mkdir -p /tmp/prometheus && cd /tmp/prometheus
curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -
tar xvf prometheus*.tar.gz
# cd prometheus*/
# mv prometheus promtool /usr/local/bin/
Contrôle que Prometheus est bien installer et savoir sa version
# prometheus --version
prometheus, version 2.19.0 (branch: HEAD, revision: 5d7e3e970602c755855340cb190a972cebdd2ebf)
build user: root@d4cf5c7e268d
build date: 20200609-10:29:59
go version: go1.14.4
# promtool --version
promtool, version 2.19.0 (branch: HEAD, revision: 5d7e3e970602c755855340cb190a972cebdd2ebf)
build user: root@d4cf5c7e268d
build date: 20200609-10:29:59
go version: go1.14.4
Installer Node Exporter et ajouter à Prometheus
Node Exporter
A quoi sert Node Exporter ?
Node Exporter est le programme qui récupère les metrics (infos du système) et vas les rendre disponible par simple requête curl.
Installation
Téléchargement
Pour commencer, télécharger la dernière version de Node Exporter ici: Node-Exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
Dépaquetage
On extrait l'archive
dpkg -xvf node_exporter-1.0.1.linux-amd64.tar.gz
Puis on la déplace dans un répertoire qui lui permet d'être gérer par le système
mv exporter-1.0.1.linux-amd64/node_exporter /usr/local/bin/
Installation & Mise en service
En réalitée, on installe pas vraiment Node Exporter, on crée juste une tache système qui vas lancer la commande.
Et pour ça, on crée un utilisateur node exporter qui va s'occuper du service.
useradd -rs /bin/false node_exporter
Ensuite on crée le fameux service.
nano /etc/systemd/system/node_exporter.service
Le fichier doit contenir les infos suivante:
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
Maintenant il faut recharger le daemon
systemctl daemon-reload
Puis démarrer node_exporter
systemctl start node_exporter
Il faut vérifier si node_exporter fonctionne
systemctl status node_exporter
Si tout vas bien, alors on peut l'ajouter au service au démarrage
systemctl enable node_exporter
Pour savoir si tout vas bien:
curl http://localhost:9100/metrics
Ajouter l'host à Prometheus
Ajout de l'host
Pour ajouter l'host il faut modifier le fichier de configuration de Prometheus
nano /etc/prometheus/prometheus.yml
Ajouter un target avec l'adresse ip voulu en dessous du target existant. Example avec 192.168.0.2:
- job_name: 'node_exporter'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9100']
- targets: ['192.168.0.2:9100']
Redémarrage de Prometheus
Pour que tout soit pris en compte il faut redémarrer le service prometheus:
systemct restart prometheus
Vérification
Pour voire si tout vas bien, un petit tour sur votre interface prometheus (http://prometheus-ip:9090/targets) ou grafana et voir si votre host apparait bien !