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

Prometheus0.png

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

Prometheus1.png

Prometheus comme source pour Grafana

grafana_prometheus_1.png

grafana_prometheus_2.png

grafana_prometheus_3.png

grafana_prometheus_4.png

grafana_prometheus_5.png

grafana_prometheus_6.png

grafana_prometheus_7.png

grafana_prometheus_8.png

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 !