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