MODOP – Partie 5 – PostgreSQL HA – Grafana/Prometheus : Cluster ETCD

1. Machine grafana/Promteheus

  • hostname : Node-gsql01
    • IP : 192.168.1.112/24
    • OS : Rocky Linux 8.5
    • RAM : 2Go
    • CPU : 1

2. Mise à jour

[root@node-gsql ~]# dnf update -y

3. Ajout des hosts ETCD

[root@node-gsql ~]# echo "192.168.1.100 node-esql01" >> /etc/hosts
[root@node-gsql ~]# echo "192.168.1.101 node-esql02" >> /etc/hosts
[root@node-gsql ~]# echo "192.168.1.102 node-esql03" >> /etc/hosts
[root@node-gsql ~]# echo "192.168.1.112 node-gsql" >> /etc/hosts

4. Désactiver SELinux

[root@node-gsql ~]# setenforce 0
[root@node-gsql ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

5. Synchroniser DateTime sur le fuseau de PARIS

[root@node-gsql ~]# timedatectl set-timezone Europe/Paris

6. Installation Grafana

Installation repository

[root@node-gsql ~]# vi /etc/yum.repos.d/grafana.repo

[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
[root@node-gsql ~]# dnf update -y

Installation grafana

[root@node-gsql ~]# dnf install grafana -y

Start les service grafana

[root@node-gsql ~]# systemctl start grafana-server
[root@node-gsql ~]# systemctl enable grafana-server
[root@node-gsql ~]# systemctl status grafana-server

Règle Firewall

[root@node-gsql ~]# firewall-cmd --add-port=3000/tcp --permanent
[root@node-gsql ~]# firewall-cmd --reload

Accès Grafana

  • login : admin
  • password : admin

7. Installation prometheus

Création user

[root@node-gsql ~]# adduser -M -r -s /sbin/nologin prometheus

Création structure

[root@node-gsql ~]# mkdir /etc/prometheus
[root@node-gsql ~]# mkdir /var/lib/prometheus
[root@node-gsql ~]# chown prometheus:prometheus /etc/prometheus
[root@node-gsql ~]# chown prometheus:prometheus /var/lib/prometheus

Récupération des sources

[root@node-gsql ~]# cd /tmp
[root@node-gsql tmp]# dnf install wget tar
[root@node-gsql tmp]# wget https://github.com/prometheus/prometheus/releases/download/v2.42.0/prometheus-2.42.0.linux-amd64.tar.gz

[root@node-gsql tmp]# tar xzvf prometheus-2.42.0.linux-amd64.tar.gz

Copier les binaires sur la structure Prometheus

[root@node-gsql tmp]# cp prometheus-2.42.0.linux-amd64/prometheus /usr/local/bin/
[root@node-gsql tmp]# cp prometheus-2.42.0.linux-amd64/promtool /usr/local/bin/
[root@node-gsql tmp]# chown prometheus:prometheus /usr/local/bin/prometheus
[root@node-gsql tmp]# chown prometheus:prometheus /usr/local/bin/promtool

Copier les fichiers conf sur la structure Prometheus

[root@node-gsql tmp]# cp -r prometheus-2.42.0.linux-amd64/consoles /etc/prometheus
[root@node-gsql tmp]# cp -r prometheus-2.42.0.linux-amd64/console_libraries /etc/prometheus
[root@node-gsql tmp]# chown -R prometheus:prometheus /etc/prometheus/consoles
[root@node-gsql tmp]# chown -R prometheus:prometheus /etc/prometheus/console_libraries

Création du service Prometheus

[root@node-gsql tmp]# 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
[root@node-gsql tmp]# systemctl daemon-reload

8. Configurer prometheus ⬄ Cluster ETCD

[root@node-gsql tmp]#vi /etc/prometheus/prometheus.yml

global:
scrape_interval: 10s
scrape_configs:
- job_name: etcd
scrape_interval: 5s
static_configs:
- targets: ['node-esql01:2379']
- targets: ['node-esql02:2379']
- targets: ['node-esql03:2379']

[root@node-gsql tmp]# promtool check config /etc/prometheus/prometheus.yml

Démarrage du service Promotheus

[root@node-gsql tmp]# systemctl start prometheus && systemctl enable prometheus
[root@node-gsql tmp]# systemctl status prometheus

Régle firewall

[root@node-gsql ~]# firewall-cmd --zone=public --add-port=9090/tcp –permanent
[root@node-gsql ~]# firewall-cmd --reload

Connexion au service Prometheus


« Status » puis « Targets »


Le Cluster ETCD est bien présent et « Up » sur Promotheus.

9. Interfacer prometheus à Grafana


« DATA SOURCES »


Choisir «  Prometheus »

Dans URL préciser l’adresse http de la base prometheus.

Ajouter un dashboard


« DASHBOARD » puis « + Import »

https://grafana.com/grafana/dashboards/?search=etcd

  • ID: 9733
  • ID: 3070
  • ID: 12362
  • ID: 18233


« Ajouter l’ID souhaité » puis « Load »


« Import »

Générer du trafic SQL/Etcd

Prérequis

[root@node-gsql ~]# dnf -y install postgresql python3-psycopg2 python3
[root@node-gsql ~]# cd /home
[root@node-gsql home]# echo "192.168.1.110 node-sql" >> /etc/hosts

Récupération du script

[root@node-gsql home]# curl -LO https://raw.githubusercontent.com/jobinau/pgscripts/main/patroni/HAtester.py

[root@node-gsql home]# chmod -x HAtester.py

Configuration du script

[root@node-gsql home]# vi HAtester.py

# CONNECTION DETAILS
host = "node-sql"
dbname = "chris2023"
user = "chris"
password = "chris2023"

Prérequis du script

[root@node-gsql home]# psql -U chris -h node-sql -p 5000 -d chris2023 -t -c "CREATE TABLE HATEST (TM TIMESTAMP);"
[root@node-gsql home]# psql -U chris -h node-sql -p 5000 -d chris2023 -t -c "CREATE UNIQUE INDEX idx_hatext ON hatest (tm desc);"

Générer trafic Répliquât

[root@node-gsql home]# ./HAtester.py 5001

Générer trafic Master

[root@node-gsql home]# ./HAtester.py 5000

Monitoring Grafana – Cluster ETCD

Sur 6 heures

Sur 24H

Sur 48H

Views: 2

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *