INFOTHEMA

Section Hackerspace de l'association / Espace d'Expérimentation Technique => Gestion Serveur d'applications GNU/Linux et Microsoft Windows => Discussion démarrée par: Animateur le février 19, 2023, 12:25:32 pm

Titre: [LJP-Infos] Découverte de Prometheus
Posté par: Animateur le février 19, 2023, 12:25:32 pm
[LJP-Infos] Découverte de Prometheus



Depuis quelques temps, le reporting a pris une grande place dans les systèmes informatiques.
Il est indispensable de connaître l'état de santé d'un système, son historique, son utilisation.
 
Il existe un très grand nombre d'outils de reporting. Mais pour faire du reporting, il faut des informations, pas d'infos pas de rapport.
 
Il existe des tas de moyens de remonter les informations, sans parler des systèmes eux même qui l'intègre. Ruby, Java, par exemple embarque leur propres outils de metrics.
Prometheus est quand même l'un de ces outils les plus connus en matière de remontée de metrics.

Voici comment l'installer et récupérer la liste des metrics. Même si ces metrics ne sont pas exploitables directement, on peut déjà voir et récupérer toutes les données.
Pour un affichage cohérent de ces données, je le montrerai au travers de Grafana.
 
Le document d'installation est disponible ici:

https://drive.google.com/file/d/1OIxXV2vztf5K5HjdIHoej-O-pDV8tCZp/view


Time code:
01:46 Avertissement
02:55 L'installation
04:31 Installation point par point
16:46 Créer un service pour Prometheus
19:24 Premier accès à Prometheus
20:20 Installation de node_exporter
25:59 Afficher les metrics par curl, en http sur le port 9100 ou 9090
29:23 La suite

# Install Prometheus
dnf update -y
dnf install wget tar -y

useradd -m -s /bin/false prometheus
mkdir /etc/prometheus
mkdir /var/lib/prometheus
chown prometheus:prometheus /etc/prometheus
chown prometheus:prometheus /var/lib/prometheus

cd ~
wget https://github.com/prometheus/prometheus/releases/download/v2.40.2/prometheus-2.40.2.linux-amd64.tar.gz
tar xvf prometheus-2.40.2.linux-amd64.tar.gz

cp prometheus-2.40.2.linux-amd64/prometheus /usr/local/bin/
cp prometheus-2.40.2.linux-amd64/promtool /usr/local/bin/
chown prometheus:prometheus /usr/local/bin/prometheus
chown prometheus:prometheus /usr/local/bin/promtool

cp -r prometheus-2.40.2.linux-amd64/prometheus.yml /etc/prometheus/

cp -r prometheus-2.40.2.linux-amd64/consoles /etc/prometheus
cp -r prometheus-2.40.2.linux-amd64/console_libraries /etc/prometheus
chown -R prometheus:prometheus /etc/prometheus/consoles
chown -R prometheus:prometheus /etc/prometheus/console_libraries

# Si on veut repartir d'un fichier de config de prometheus propre
echo "" > /etc/prometheus/prometheus.yml
vi /etc/prometheus/prometheus.yml

# Configuration de base
global:
  scrape_interval: 15s
scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']

chown -R prometheus:prometheus /etc/prometheus/prometheus.yml

# On ajoute le paramètre dans le pare-feu si ce n'est pas fait
firewall-cmd --add-port=9090/tcp --permanent
firewall-cmd --reload

# On peut tester Prometheus avec (ctrl+c pour quitter) on peut aller voir ce que ça donne sur http:\\localhost_ou_ip:9090
sudo -u prometheus /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus/data --web.console.templates=/etc/prometheus/consoles --web.console.libraries=/etc/prometheus/consoles_libraries


# On crée et on démarre Prometheus comme service
vi /etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus
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

# On active et démarre le service
systemctl daemon-reload
systemctl enable prometheus --now

# On peut vérifier avec
systemctl status prometheus

===================================================

# On crée un user "node_exporter"
useradd -m -s /bin/false node_exporter

# On télécharge/extrait le fichier de binaires
wget https://github.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gz
tar xvf node_exporter-1.4.0.linux-amd64.tar.gz

# On copie le binaire vers dans le dossier correspondant avec les droits
cp node_exporter-1.4.0.linux-amd64/node_exporter /usr/local/bin
chown node_exporter:node_exporter /usr/local/bin/node_exporter

# On crée le fichier de service
vi /etc/systemd/system/node_exporter.service

[Unit]
Description=Prometheus Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target

# On active et démarre
systemctl daemon-reload
systemctl enable node_exporter --now

# On peut vérifier avec "systemctl status node_exporter"

# On ajoute le port au pare-feu
firewall-cmd --add-port=9100/tcp  --permanent
firewall-cmd --reload

# On l'ajoute à la conf de Prometheus
vi /etc/prometheus/prometheus.yml
...
  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']

# Si le système est distant on pourra rajouter en cible
   - targets: ['ip_du_serveur:9100']
   
# On redémarre Prometheus pour valider la nouvelle config   
systemctl restart prometheus   


# On peut afficher les metrics ici (ou sur l'ip):
curl http://localhost:9100/metrics

# Dans Prometheus
http://localhost:9090
- Dans "Target" (Status) on peut alors voir les deux jobs cible, leur état...
- ici http://localhost_ou_ip:9100/metrics (avec la bonne ip) on retrouve les métrics de node
- ici http://localhost_ou_ip:9090/metrics (avec la bonne ip) on retrouve les métrics de Prometheus