Supervision de node
Dans ce chapitre nous allons vous guider tout au long du réglage d'une solution de monitoring locale pour votre node validateur.
Prérequis
Vous devez avoir votre node collateur installé et actif. Ce guide a été testé sous la version Ubuntu 20.04 LTS.
Réglages de Prometheus
Dans la première étape nous allons installer le serveur Prometheus.
User et Directories
Nous créons un user (utilisateur), prometheus, juste à des fins de monitoring qui n'a pas de répertoire home et ne peut pas être utilisé pour ouvrir une session.
$ sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus
Puis nous créons des répertoires pour le fichier exécutable et les fichiers de configuration.
$ sudo mkdir /etc/prometheus
$ sudo mkdir /var/lib/prometheus
Nous allons changer le propriétaire des répertoires pour restreindre l'accès au nouvel utilisateur, prometheus.
$ sudo chown -R prometheus:prometheus /etc/prometheus
$ sudo chown -R prometheus:prometheus /var/lib/prometheus
Installer Prometheus
Vérifier le numéro de la dernière version de Prometheus sur la page de sorties GitHub. Au moment de l'écriture de l'article, la dernière version est la v2.25.2. Insérer la dernière version dans les lignes de commandes suivantes.
# download prometheus
$ wget https://github.com/prometheus/prometheus/releases/download/v2.25.2/prometheus-2.25.2.linux-amd64.tar.gz
# unpack the binaries
$ tar xfz prometheus-*.tar.gz
# enter the unpacked directory
$ cd prometheus-2.25.2.linux-amd64
Maintenant copier les binaires dans votre dossier local.
$ sudo cp ./prometheus /usr/local/bin/
$ sudo cp ./promtool /usr/local/bin/
Nous devons maintenant définir le nouvel utilisateur, prometheus, comme étant propriétaire de ces binaires.
$ sudo chown prometheus:prometheus /usr/local/bin/prometheus
$ sudo chown prometheus:prometheus /usr/local/bin/promtool
Ensuite nous allons copier l'interface web et les pré-configurations.
$ sudo cp -r ./consoles /etc/prometheus
$ sudo cp -r ./console_libraries /etc/prometheus
Vous l'avez peut-être deviné, mais nous allons aussi changer le propriétaire de ces répertoires.
$ sudo chown -R prometheus:prometheus /etc/prometheus/consoles
$ sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
Maintenant que nous avons tous les paquets nécessaires, nous pouvons remonter d'un niveau et supprimer le dossier contenant les sources.
$ cd .. && rm -rf prometheus*
Création du fichier de configuration, prometheus.yml, avec l'éditeur de votre choix (nano / vim / pico).
$ sudo nano /etc/prometheus/prometheus.yml
Notre config est divisé en trois sections:
global
: sets the default values forscrape_interval
and the rule-execution interval withevaluation_interval
rule_files
: specify rule-files the Prometheus server should loadscrape_configs
: this is where you set the monitoring-resources
Nous allons rester simples et terminer avec cette configuration:
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
# - "weHaveNo.rules"
scrape_configs:
- job_name: "prometheus"
scrape_interval: 5s
static_configs:
- targets: ["localhost:9090"]
- job_name: "substrate_node"
scrape_interval: 5s
static_configs:
- targets: ["localhost:9615"]
La première tâche d'organisation de données (scrape) exporte les données de Prometheus, la seconde exporte les mesures du node HydraDX.
Nous avons réglé le scrape_interval
de chaque tâche pour avoir des statistiques plus détaillées. Cela remplace les valeurs globales.
Le target
dans static_configs
définit où les exportateurs fonctionnent, nous nous en tenons aux ports par défaut ici.
Après avoir sauvegardé la configuration nous allons - encore une fois - changer le propriétaire.
$ sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
Démarrer Prometheus
Pour faire démarrer Prometheus automatiquement et fonctionner en arrière-plan nous allons créer un service Prometheus avec systemd
.
Créez un nouveau config (encore avec l'éditeur de votre choix):
$ sudo nano /etc/systemd/system/prometheus.service
Coller les configurations suivantes et sauvegardez le fichier.
[Unit]
Description=Prometheus Monitoring
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
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
Ensuite nous allons effectuer les trois étapes suivantes:
systemctl daemon-reload
charge les nouvelles configurations et met à jour celles existantes.
systemctl enable
active notre nouveau service
systemctl start
déclenche l'exécution du service.
Vous pouvez effectuer les étapes au dessus en une commande en exécutant:
$ sudo systemctl daemon-reload && systemctl enable prometheus && systemctl start prometheus
Vous devriez maintenant être capable d'accéder à l'interface web de Prometheus à http://localhost:9090/.
Node Exporter
Nous allons installer Node Exporter pour organiser les métriques du serveur qui vont être remontées dans le tableau de bord.
Veuillez vérifier le numéro de la dernière version ici et mettez la commande à jour.
Au moment de l'écriture de l'article la dernière version est 1.1.2
.
Installer Node Exporter
Télécharger la dernière version.
$ wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
Extraire l'archive que vous venez de télécharger. Cela créera un dossier appelé node_exporter-1.1.2.linux-amd64
.
$ tar xvf node_exporter-1.1.2.linux-amd64.tar.gz
Ensuite nous copions le binaire dans notre répertoire local d'application and l'assignons à notre utilisateur superviseur.
# copy binary
$ cp node_exporter-1.1.2.linux-amd64/node_exporter /usr/local/bin
# set ownership
$ sudo chown prometheus:prometheus /usr/local/bin/node_exporter
Nous pouvons maintenant faire un peu de ménage et supprimer les paquets téléchargés et extraits.
$ rm -rf node_exporter*
Créer un Service Systemd
De la même façon que Prometheus nous voulons que Node Exporter fonctionne comme un service aussi. Créez un service systemd avec l'éditeur de votre choix.
$ sudo nano /etc/systemd/system/node_exporter.service
Et copiez y la configuration suivante.
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
Nous allons maintenant activer et démarrer le service avec cette simple ligne de commande.
$ sudo systemctl daemon-reload && systemctl enable node_exporter && systemctl start node_exporter
Ajouter Scrape Job pour Node Exporter
Le Node Exporter est maintenant actif et opérationnel mais nous devons dire à Prometheus d'organiser (scrape) ses données. Nous allons ouvre le fichier de configuration, prometheus.yml, encore une fois avec l'éditeur de votre choix.
$ sudo nano /etc/prometheus/prometheus.yml
Et à la toute fin du fichier nous allons ajouter un scrape config de plus. Coller le contenu suivant et sauvegarder le ficher.
- job_name: 'node_exporter'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9100']
L'application des changements de configuration au redémarrage du service Prometheus est requise.
$ sudo systemctl restart prometheus.service
Les métriques de votre serveur sont maintenant organisées (scraped) et peuvent être trouvées dans l'interface web Prometheus. Nous allons en avoir besoin plus tard pour notre tableau de bord.
Configuration de Grafana
Nous pouvons voir nos métriques dans l'interface web, mais ce n'est pas la façon dont on veut les superviser. On les veut belles et propres. C'est là que Grafana entre en jeu.
Installer Grafana
Veuillez vérifier quelle est la dernière version de Grafana avec ce lien.
Vous pouvez soit changer le numéro de version dans les commandes suivantes ou copier les commandes d'installation directement depuis le lien.
Au moment de l'écriture de l'article la dernière version est 7.5.1
.
$ sudo apt-get install -y adduser libfontconfig1
$ wget https://dl.grafana.com/oss/release/grafana_7.5.1_amd64.deb
$ sudo dpkg -i grafana_7.5.1_amd64.deb
Le paquet est fourni avec un service systemd
intégré que nous allons configurer et démarrer exactement comme le service Prometheus.
$ sudo systemctl daemon-reload && sudo systemctl enable grafana-server && sudo systemctl start grafana-server
Accéder à l'interface web
Nous allons être capable d'ouvrir l'interface web Grafana à http://localhost:3000/.
Les identifiants de session de Grafana par défaut sont:
User: admin
Password: admin

Configurer les Datasource
Veuillez cliquer sur la roue des paramètres dans le menu et choisissez source de données (datasource). Dans la fenêtre suivante cliquez "ajouter Datasource" et sélectionnez "Prometheus".
Dans le formulaire suivant vous n'avez pas besoin de changer quoi que ce soit excepté l'URL.
Entrez http://localhost:9090/
et cliquez Save and Test
.

Importer le tableau de bord
Veuillez cliquer sur le bouton Plus
dans le menu principal de navigation et sélectionnez import
.

Nous allons utiliser le Tableau de bord HydraDX pour le charger vous entrez l'id 14158
et cliquez sur le bouton Load
.

Il n'y a pas besoin de beaucoup de configuration ici, assurez vous juste que Prometheus est utilisé comme source de donnée. Vous pouvez maintenant terminer l'importation.

Vous devriez maintenant voir votre tableau de bord directement. Si certains panneaux sont vides, assurez vous que la sélection au dessus des panneaux est comme suit:
Chain Metrics
: SubstrateChain Instance
: localhost:9615Server Job
: node_exporterServer Host
: localhost:9100