Fonctionnalités Technologie

Apprenez à superviser Raspberry Pi avec RPi-Monitor en Perl

mai 5, 2021

Apprenez à superviser Raspberry Pi avec RPi-Monitor en Perl

This post is also available in : Anglais Espagnol

Superviser Raspberry Pi avec RPi-Monitor en Perl

Pour de nombreux informaticiens, les Raspberry Pi sont des gadgets très connus en matière de programmation. Ils sont peu coûteux, consomment peu d’énergie et sont très flexibles, ils peuvent rappeler quelqu’un la description de Pandora FMS, pour ces raisons les deux sont complémentaires. Dans ce blog, nous avons utilisé ces appareils pour créer un tableau interactif sur un téléviseur, pour superviser la bande passante à la maison et en entreprise (dans ce dernier article décrit en détail sur la façon de l’installer), cette fois nous allons apprendre à superviser Raspberry Pi avec RPi-Monitor. Mais Raspberry Pi a en fait des centaines d’autres utilisations ! Allons-y !

monitor RPi que muestra temperatura y humedad

Raspberry Pi : Histoire et introduction

Dans Wikipedia vous pourrez connaître en profondeur tous les détails sur le Raspberry Pi, nous soulignons ce qui suit :

  • Bien que son matériel soit propriétaire et fabriqué en Chine, son système d’exploitation et ses applications sont entièrement des logiciels libres.

Il a de nombreux systèmes d’exploitation, un bien connu dérivé de Debian est le Raspbian. Il existe également Pidora (basé sur Fedora), SUSE et Arch Linux, basé sur ARM (voir point suivant).

Son unité centrale de traitement (UCT), est son architecture informatique avec jeu d’instructions réduit (RISC) appelé ARM (acronyme de Advanced RISC Machine), 32 bits et maintenant 64 bits dans le modèle Raspberry Pi 3. Cette architecture permet d’économiser des transistors, ce qui se traduit par une petite taille de processeur et des économies d’énergie conséquentes.

Une particularité du Raspberry Pi est qu’il manque horloge temps réel (en anglais, real-time-clock, RTC) donc il dépendent de la communication avec l’extérieur via le Network Time Protocol (NTP ) afin de prendre la date et l’heure de vos opérations, ce qui est très important lors de la supervision. Ils commencent toujours par la date du 30 novembre 1999 et si vous êtes dans un environnement « hostile », où ils ne peuvent se connecter à aucun réseau local, vous pouvez acquérir un RTC comme celui-ci. On le répète : si on n’a pas la date et l’heure exactes, on sème le trouble en matière de monitoring.

Si la taille et l’efficacité sont surprenantes en soi, il y a aussi le modèle Raspberry Zero, encore plus petit, moins cher mais bien sûr avec des connecteurs différents : dans le cas de la vidéo il est livré avec mini HDMI au lieu de HDMI, par exemple (aucun Raspberry Pi n’apporte le ancien connecteur VGA analogique).

Ils manquent leur propre source d’énergie, mais cela ne veut pas dire qu’ils ne surchauffent pas (puisque chaque convertisseur de courant alternatif à courant continu émet de la chaleur par rayons infrarouges) et c’est l’un des points que nous allons superviser et traiter dans ce travail. Le Raspberry Pi est alimenté par un connecteur microUSB de 5 volts ou des connecteurs d’entrée et de sortie à usage général (en anglais General Purpose Input/Output ou GPIO ). Ces derniers connecteurs seront également utilisés pour connecter un RTC afin qu’ils conservent l’heure et la date à leur mise hors tension, si nécessaire.

Selon le modèle, il dispose de différents périphériques d’entrée et de sortie : connecteur Ethernet, réseau sans fil, port USB, Bluetooth, sortie audio, sortie vidéo, etc.

La mémoire RAM est partagée avec la mémoire vidéo, elle peut apporter 512 ou 1 024 mégaoctets mais elles ne peuvent pas être étendues.

Le stockage est externe au moyen d’une carte USB ou d’une carte SD, il est recommandé au moins 8 gigaoctets car on peut allouer 5 gigaoctets pour l’image de n’importe quel système d’exploitation et 3 gigaoctets pour les applications et les données. Déjà intégré dans le firmware, le Raspberry Pi démarrera pour la première fois avec un mini système d’exploitation qui vous permettra d’installer le système d’exploitation souhaité.

Le Raspberry Pi vient nu, pour ainsi dire, non seulement pour l’économie mais pour la flexibilité : chaque utilisateur donnera une utilisation différente et connectera les accessoires dont il a besoin. Généralement, fabriqués par des tiers, on peut trouver des boîtiers Raspberry Pi de toutes sortes. Sur les sites de vente en ligne, ils vendent des ensembles de boîtiers, de câbles, de cartes mémoire, de capteurs, et arrêtons de compter, soit en combinaison, soit même chaque composant séparément. Chaque ensemble d’accessoires est orienté vers un usage spécifique : industrie, apprentissage, usages scientifiques, etc.

RaspberryPi con estructura de legos

RPi-Monitor

RPi-Monitor est un logiciel libre écrit en langage Perl par le français Xavier Berger. Elle est née de la nécessité de superviser ces appareils utiles, qui étaient à l’origine destinés à l’enseignement de l’informatique mais néanmoins les entreprises et les industries ont noté leur grande adaptabilité dans le domaine de la production et de la fabrication, ainsi que dans le commerce. Garder un œil sur ces appareils bon marché, bien que faciles à remplacer en raison de leur coût, est une très bonne idée pour être toujours en ligne et ne pas avoir de revers avec votre travail en prédisant un dysfonctionnement ou une mauvaise configuration.

Depuis la version 2.6 (année 2014), il est disponible dans la boutique de logiciels appelée « The Pi Store », un service officiel qui vous permet d’installer et de mettre à jour une grande quantité de logiciels pour Raspberry Pi. Vous aurez besoin d’avoir installé (en fait par défaut, il est déjà installé) le logiciel « pistore » mais si nécessaire ou en cas de doute, vous pouvez toujours exécuter sudo apt-get update && sudo apt-get install pistore dans le terminal de commande.

Installation de RPi-Monitor sur un Raspberry Pi

Nous partirons d’un Raspberry Pi configuré comme précédemment décrit (vous pouvez vous connecter au Raspberry Pi via SSH, interface web ou même via bureau distant avec eHorus en téléchargeant les packages officiels pour Raspbian sur demande). Pour installer ce logiciel, vous pouvez le télécharger directement depuis votre page de contrôle de version sur GitHub, ajouter un référentiel supplémentaire au Raspbian du Raspberry Pi ou depuis sa boutique officielle dont nous avons discuté. Dans tous les cas, vous devez d’abord installer les bibliothèques (dépendances) suivantes pour la version 2.8 :

  • librrds-perl
  • libhttp-daemon-perl
  • libjson-perl
  • libipc-sharelite-perl
  • libfile-which-perl
  • aptitude

Fonctionnement de base

RPi-Monitor n’a besoin que du langage Perl et de rien d’autre. Il enregistre les données dans un format appelé Round-Robin-Database qui est simplement un ou plusieurs fichiers qui sont reformatés et subdivisés en périodes et champs à enregistrer avec la même taille fixe. Le détail est d’utiliser un curseur qui pointe vers le dernier enregistrement actif afin d’enregistrer le suivant et en atteignant la fin du fichier, il commencera à écraser le premier enregistrement.

Esquema circular

Ainsi, avec ce schéma, vous pouvez établir le temps de supervision (par exemple, les données de la semaine ou du mois dernier) avec la tranquillité d’esprit de savoir que vous ne dépasserez jamais la capacité de stockage en raison de la stratégie d’écriture circulaire, comme son nom en anglais l’indique. Compte tenu de la simplicité électronique du Raspberry Pi, il n’est pas nécessaire de sauvegarder plus de configuration, cependant, si vous êtes exigeants et comme il est écrit en logiciel libre, vous pouvez créer un agent en langage Perl pour sauvegarder les données dans une base de données distante (comme MySQL, par exemple) en lisant simplement tous les enregistrements et en comparant chaque enregistrement par date.

Aspects à superviser

RPi-Monitor est capable de superviser les paquets envoyés et reçus par une ou plusieurs interfaces réseau installées sur un Raspberry Pi. Ainsi que l’utilisation et l’état des périphériques de stockage (cartes SD ou USB), la mémoire d’échange, la RAM, la durée de fonctionnement et même la température du CPU. Dans le cas du système d’exploitation, il nous informe de sa version et s’il y a des mises à jour à installer, cette dernière très importante car elle corrige les vulnérabilités pour protéger vos appareils contre les attaques potentielles de personnes ou entités malveillantes.

Interface Web

L’interface utilisateur est totalement séparée du logiciel de supervision et nécessite un serveur Web Ngix, auquel vous pouvez donner un accès sécurisé à votre Raspberry Pi en production à l’aide de SSL, htpasswd et shellinabox et la génération des certificats requis. Ce schéma de travail serait nécessaire si votre appareil est exposé à Internet, car aucune information d’identification n’est nécessaire pour afficher les données collectées. Il faut souligner que toutes les données sont en lecture seule, pas en temps réel (vous devrez actualiser la page Web lorsque vous voulez voir des données mises à jour), il n’a pas de données de liaison au-delà de l’adresse IP et il est supposé et imaginé qu’ils n’offrent plus d’attrait à aucun attaquant ; Cependant, votre propre vie privée et/ou celle de vos clients/utilisateurs est toujours bonne pour la pousser à l’extrême dans tous les cas et à tout moment.

Configuration RPi-Monitor sur un Raspberry Pi

Nous passerons rapidement en revue les principales valeurs à changer en fonction de vos besoins. Pour obtenir tous les détails, il faut consulter à la fois son référentiel sur GitHub et son blog dédié à cet effet.

  • Changer le port d’écoute : Modifiez le fichier /etc/rpimonitor/daemon.conf et changez la valeur par défaut, qui est 8888, selon ce dont vous avez besoin.

Pour superviser la carte réseau sans fil (Wifi), comme au point précédent, modifiez le même fichier et décommentez la ligne suivante #include=/etc/rpimonitor/template/wlan.conf en supprimant le symbole numérique du début de celle-ci.

Pour superviser les clés USB, allez vers le fichier /etc/rpimonitor/storage.conf et de la même manière décommentez #include=/etc/rpimonitor/template/storage.conf (une configuration supplémentaire est requise selon le nombre de volumes connectés).

Pour les autres services, le Raspberry Pi a la programmation intelligente du RPi-Monitor : il a un tableau des ports les plus utilisés et juste décommentez #include=/etc/rpimonitor/template/services.conf pour inclure des programmes tels que PostgreSQL ou MySQL.

Finalement, vous pouvez personnaliser la forme et l’ordre des données supervisées, donc, si vous voulez qu’il vous montre d’abord l’état de MySQL, puis de PostgreSQL, ajoutez les lignes suivantes :

dynamic.1.name=mysql
dynamic.2.source=netstat -nlt
dynamic.2.regexp=tcp\d? .*:(3306).*LISTEN

dynamic.2.name=postgresql
dynamic.2.source=netstat -nlt
dynamic.2.regexp=tcp\d? .*:(5432).*LISTEN

Comme on peut le voir, il suffit de porter la numérotation consécutive de chaque service à superviser et pour être sûr, on spécifie le port de chaque application.

Pour terminer la configuration, redémarrez le RPi-Monitor avec sudo systemctl restart rpimonitor. Ensuite pour connaître son état au lieu de « redémarrer » mettez « status », pour arrêter le service « stop » et pour le démarrer « start », tous mnémotechniques en raison de leur signification naturelle en anglais.

Un écran LCD sur Raspberry Pi ?

La supervision du Raspberry Pi peut aller au-delà de la supervision à distance et peut même fournir des données localement et directement. Si vous acquérez un écran LCD modèle PCD8544 (très populaire dans les téléphones mobiles), connectez-le à l’un de ses GPIO et avec un peu de langage Python vous pouvez afficher la température actuelle du Raspberry Pi à l’écran. Il faut faire attention à remplacer « localhost » par la véritable adresse IP (ou même l’adresse web) et le port 8888 vers le port que vous avez configuré :

#!/usr/bin/env python
import httplib, time, os, sys, json
import pcd8544.lcd as lcd

# Démarrez la connexion au serveur Web intégré de RPi-Monitor
# N'oubliez pas de remplacer « localhost » et 8888 par les valeurs appropriées
connection = httplib.HTTPConnection ("localhost", 8888)

# Demander le fichier dynamic.json (format de données json)
conexion.request("GET","/dynamic.json")

# Réponse du serveur
réponse = conexion.getresponse()

# Pour une réponse correcte, récupérez les données elles-mêmes
if ( réponse.status == 200 ):
data = réponse.read ()
# Ouvrir une fonction qui analyse les données, communique
# et allume l'écran pour afficher les données plus tard
écran = json.loads (données)
lcd.init()
lcd.backlight(1)

# Par exemple, obtenez la température :
rpi_température = écran ['temperature']

# Fermer la connexion au serveur Web intégré du RPi-Monitor
connexion.close()
# et éteignez l'écran lcd
lcd.backlight(0)

Utilisation de Raspberry Pi avec Pandora FMS

Pandora FMS se distingue par sa flexibilité et vous pouvez créer un complément ou plugin pour importer les données de votre Raspberry Pi.

Un script en langage Python pourrait être le précédent utilisé pour afficher les données de supervision sur l’écran LCD mais en redirigeant les données vers le complément ou le plugin créé à cet effet ; dans cette entrée vous pouvez obtenir plus de détails sur la création de plugins dans Pandora FMS.

Périphériques sur Raspberry Pi : humidité et température ambiante

Ce sont deux variables qui pourraient affecter, entre autres, votre salle de serveurs. Bien que cela ne fasse pas partie de la supervision proprement dite du Raspberry Pi, il peut être intégré au RPi-Monitor si vous achetez un DHT11 pour mesurer la température ambiante et un DHT22 pour l’humidité ambiante.
Pour cela, vous aurez besoin d’expérience en électronique, car des composants supplémentaires sont nécessaires tels qu’une résistance, un câblage et une plaque pour loger les composants. Donc cette partie est pour revoir les concepts : téléchargez les pilotes pour ces composants depuis Adafruit et ajoutez les éléments suivants dans la configuration RPi-Monitor (remplacez « . Jan. » par la valeur numérique suivante dans le fichier de configuration) :

dynamic.ene.name=humidity
dynamic.ene.source=Adafruit_DHT 11 27
dynamic.ene.regexp=Hum = (\S+)
dynamic.ene.postprocess=
dynamic.ene.rrd=GAUGE

Vous devrez également ajouter pour qu’il l’affiche également sur le serveur Web intégré :

web.statistics.1.content.ene.name=humidity
web.statistics.1.content.ene.ds_graph_options.humidity.label=Humidity (%)
web.statistics.1.content.ene.ds_graph_options.humidity.yaxis=2
web.statistics.1.content.ene.graph_options.y2axis={ position: "right", min: 0, max: 100 }

Conclusions

En raison de la grande variété de matériel pouvant être connecté au Raspberry Pi et comme il fonctionne avec des logiciels gratuits, les combinaisons sont illimitées pour tous les goûts et/ou besoins, mais ici nous avons « supervisé le moniteur » et nous l’avons adapté à l’ensemble des statistiques que vous devez superviser dans un réseau local pour faciliter votre travail quotidien.


Leave a comment

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.