Table des matières

Prometheus : installation

Prérequis

Une VM doit avoir été installée, et un disque additionnel qui recevra les datas de Prometheus (/var/lib/prometheus) devra être créé. Pour créer un disque addtionnel VMDK + LVM, voir cette page.

Installation depuis le site Prometheus

Rendez-vous à l'adresse : https://prometheus.io/download/

Nous récupérons les archives dont nous avons besoin :

Nous dézippons et copions les exécutables dans /usr/local/bin

Nous créons le compte système :

sudo useradd -M -r -s /bin/false prometheus

Nous changeons les droits sur les exécutables :

cd /usr/local/bin
sudo chown -v prometheus: alertmanager amtool prometheus promtool

Nous créons le répertoire qui va accueillir le fichier de configuration :

sudo mkdir /etc/prometheus

Nous copions les deux répertoires dans /etc/prometheus

sudo chown -Rv prometheus: console_libraries/ consoles
sudo mv -v console_libraries/ consoles /etc/prometheus

Nous donnons les bons droits sur le répertoire

sudo chown -Rv prometheus: /etc/prometheus

Nous créons le fichier de configuration

sudo nano /etc/prometheus/prometheus.yml

et y ajoutons

scrape_configs:
  - job_name: 'prometheus'

    scrape_interval: 5s
    scrape_timeout: 5s

    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node'
    static_configs:
      - targets: ['monserveur:9100','monserveurdeux:9100']

Lancement du service

Nous créons le fichier systemd de démarrage / arrêt du service :

sudo vi /etc/systemd/system/prometheus.service

Nous ajoutons ces lignes :

[Unit]
Description=Prometheus Time Series Collection and Processing Server
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

[Install]
WantedBy=multi-user.target

Nous rechargeons la configuration du démon systemd :

sudo systemctl daemon-reload

Nous démarrons et activons le service Prometheus :

sudo systemctl enable --now prometheus

Pour conrôler l'état du service :

sudo systemctl status prometheus

À partir de là, si le service est bien lancé, vous devriez pouvoir vous connecter à la console Prometheus depuis votre navigateur à l'adresse :

http://monserveur:9090

Installation Grafana

Si le paquet n'est pas installé, nous l'installons

sudo aptitude install apt-transport-https gnupg2

Nous ajoutons le dépôt APT

sudo nano /etc/apt/sources.list.d/grafana.list

Nous ajoutons ces lignes

##
# Grafana repository
# Version: Stable
##

deb https://packages.grafana.com/oss/deb stable main

Nou récupérons la clé GPG du dépôt

wget --quiet -O- "https://packages.grafana.com/gpg.key" | sudo apt-key add -

Nous installons grafana

sudo aptitude update && sudo aptitude install grafana

Nous lançons le service

sudo systemctl enable --now grafana-server.service

Installation de Nginx en frontal

Nous installons Nginx

sudo aptitude install nginx

Nous créons le vHost pour Grafana

sudo nano /etc/nginx/sites-available/monitor.domain.tld
##
# Nginx vHost
# Grafana for Prometheus
##

server {
    listen 80;

        server_name monitor.domain.tld;

        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_pass http://127.0.0.1:3000;
        }
}

Nous créons le vHost pour la console Prometheus

sudo nano /etc/nginx/sites-available/promconsole.domain.tld
##
# Nginx vHost
# Prometheus console
##

server {
    listen 80;

        server_name promconsole.domain.tld;

        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_pass http://127.0.0.1:9090;
        }
}

Nous créons les liens symboliques

cd /etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/monitor.domain.tld
sudo ln -s /etc/nginx/sites-available/promconsole.domain.tld

Nous rechargeons la configuration de Nginx

sudo service nginx reload

Liens