Supervision express avec Glances
Sommaire
I. Présentation
Aujourd’hui je vous propose, un balayage de l’outil de supervision glances. Il ne s’agit pas à proprement parlé d’une supervision, comme on peut l’entendre avec des outils comme Cacti, Shinken, Centreon/Nagios. Mais, on peut disposer d’une vision "express" des métriques courantes du système et de son environnement.
On ne le dira jamais assez, sécuriser un système à l’aide d’outils de chiffrement c’est bien. Mais, il ne faut surtout pas négliger les outils de sauvegarde et/ou de supervision. Voyons maintenant de quoi est capable l’outil glances.
II. Commençons par le commencement…
Dans ses anciennes versions, l’installation de l’outil glances se fait via le package éponyme en exécutant l’instruction suivante, depuis une distribution CentOS7 :
# yum install glances
Glances est un logiciel libre, distribué sous licence LGPL permettant de surveiller un système d’exploitation GNU/Linux et/ou BSD, et ce, depuis une interface texte ou une console PuTty. L’outil permet de récupérer les informations du système et, est développé en python.
REMARQUE : il est possible, même si ce n’est pas recommandé, d’installer l’outil via les sources. Mais, il faut quoi qu’il en soit installer au préalable les prérequis suivants :
- python
- python-psutils
Depuis peu, il existe aussi une version Glances v2, qui dépend de plus en plus de python et s’administre de la même façon que l’outil de supervision shinken (dont il s’inspire). Pour l’installer facilement, on peut passer par le paquet de python pip. Il faut alors installer via l’utilitaire python les fonctionnalités suivantes :
- le référentiel EPEL
- les utilitaires python-pip
Pour se faire, on va donc procéder à l’installation des éléments suivants :
# yum install epel-release # yum install python-pip python-devel psutils
A partir de là, on peut utiliser l’outil d’installation Python et exécuter l’instruction suivante :
# pip install glances
Cela va déclencher un processus visant à installer à la fois Python, glances et ses dépendances :
Cette nouvelle version utilise un système de plugins (ou de modules). Toutes les statistiques engrangées par glances sont également des plugins. Ainsi, on gagne en rapidité de développement pour ajouter de nouvelles fonctionnalités. Chaque module hérite des méthodes communes permettant ainsi de factoriser le code. On gagne aussi en nombre de lignes codées.
D’ailleurs, à la fin de l’installation si une version plus récente existe, nous en sommes avertis et pouvons exécuter la mise à jour en direct :
La version Glances v2 a été développée en suivant le processus Git Flow. De fait, l’interface standalone a également été optimisée afin d’afficher plus d’informations (si cela était déjà possible), de la manière la plus lisible qui soit, et dans un espace d’affichage restreint. Ce que souhaitent les administrateurs, c’est qu’un problème de performance d’une machine saute aux yeux.
Afin de vérifier que l’installation s’est correctement déroulée, on peut alors exécuter la commande ci-dessous :
# glances -V Glances v2.10 with psutil v5.2.2
Enfin, suite à la demande de nombreuses personnes, Glances v2 intègre également le mode serveur web (via l’outil bottle utilisé aussi par shinken), permettant d’accéder simplement aux statistiques depuis n’importe quel navigateur Internet, via une page HTML5/CSS3. Pour pouvoir bénéficier de cette fonctionnalité, il faut alors installer les modules suivants :
# pip install pysnmp bottle batinfo
A ce stade, il devrait être alors possible d’utiliser le mode serveur web (grâce à l’interface de bottle) comme point central de supervision d’un ensemble de serveurs Glances :
# glances -w
Ensuite, il suffit d’interroger via un navigateur : Internet Explorer, Chrome ou autres, le serveur, sur lequel on a exécuté la commande :
III. Utilisation de Glances
L’interface présente immédiatement un tableau de bord, décomposé en plusieurs sections, permettant de vérifier les différentes métriques du système local :
L’outil peut être utilisé dans des configurations très différentes. Il est facile de l’activer en standalone afin de superviser la machine sur laquelle on se trouve. Mais, il est également possible de l’utiliser en mode client/serveur (option –s). De cette façon, on peut superviser une machine distante depuis l’interface de glances.
Dans ce mode, une fois le daemon exécuté, on peut lancer le client depuis une autre machine en utilisant l’option –c. On devrait alors visualiser les statistiques du serveur s’affichant sur l’écran du client. Dans cette version l’interface est très légèrement différente et possède encore un peu plus de métriques :
L’interface web offre alors un affichage graphique très agréable au travers du navigateur quel qu’il soit :
REMARQUE : dans les dernières versions, cette interface a été grandement améliorée. Mais, on peut également utiliser glances (grâce à son interface web), depuis un portable, un appareil mobile, une tablette et ce pour n’importe quel type de système d’exploitation :
Ainsi, les administrateurs peuvent garder un œil (et même les deux yeux), sur les performances et les seuils des machines de leur infrastructure.
IV. Descriptif des options de Glances
Pour connaître l’ensemble des options disponibles, il suffit d’appuyer sur la lettre "h" (comme Help). Cela permettra d’afficher la liste des possibilités de l’outil :
Chaque lettre indiquée représente une option d’affichage privilégiant, les processus, les ressources, le réseau ou encore les systèmes de fichiers. Ainsi, chaque option permet d’activer telle ou telle fonctionnalité :
REMARQUE : la lettre "z" permet de faire disparaître l’ensemble du tableau des processus :
Les couleurs de surlignage dénotent du degré de criticité des métriques remontées. On peut avoir :
- CAREFUL : pour toute alerte importante.
- WARNING : pour des avertissements mineurs.
- CRITICAL : pour des problèmes critiques à traiter rapidement.
Les autres métriques non surlignées, ou surlignées en vert (signifiant des valeurs correctes), ne posent aucun souci et peuvent être ignorées. On peut à tout moment décider d’augmenter ou réduire les seuils fixés. Pour cela, il suffit d’éditer le fichier glances.conf se trouvant dans le répertoire /etc/glances et d’en modifier les paramètres.
On peut également utiliser l’option --browser qui, depuis la version Glances v2.2 permet de disposer d’un point central de supervision d’un ensemble de serveurs Glances. Lorsqu’un client est exécuté avec cette option, cela affiche la liste des serveurs préconfigurés, dans le fichier de configuration glances.conf, ainsi que les serveurs Glances découverts sur le même réseau local.
# glances --browser
On peut ainsi découvrir les autres points utilisant Glances, au travers d’une liste d’adresses s’affichant à l’écran et effectuer une supervision centrale depuis l’équipement sélectionné.
On peut aussi utiliser Glances pour récupérer les statistiques du système à partir d’un serveur SNMP. Cela permet de forcer les requêtes SNMP vers le serveur passé en paramètre :
# glances -c <Srv-SNMP> --snmp-force
Bien qu’ici on n’ait pas l’étendue des fonctionnalités de Glances, cela permet tout de même de superviser des équipements embarquant des appliances systèmes : routeurs Cisco ou HP, serveurs VMware de type ESXi ou même des contrôleurs de baies de stockage SAN ou NAS.
V. Les modules de Glances
Comme on l’a précisé dans les premiers paragraphes de ce billet, Glances est un logiciel modulaire, depuis sa version v2. Chacun des groupes de métriques affichés : qu’il s’agisse de la CPU, de la mémoire, du swap ou des processus, représente en fait un module séparé. Une telle structure permet ainsi de sauvegarder, capturer, afficher et exporter l’ensemble des valeurs ou des informations récupérées.
Il est aussi possible d’enrichir cet écosystème en écrivant vous-mêmes vos propres plugins, à l’aide des API (au format Xml/Rpc ou Restful/Json) disponibles également sur Git Hub :
- https://github.com/nicolargo/glances/wiki/The-Glances-2.x-API-How-to
- https://github.com/nicolargo/glances/wiki/The-Glances-RESTFULL-JSON-API
Les dernières versions de Glances disposent aujourd’hui, de façon intégrée, des modules ci-dessous :
- plugin docker
- plugin RAID
Le grand intérêt de la configuration à base de plugins, c’est qu’il est alors possible de superviser très rapidement toutes les fonctionnalités en en y intégrant de nouvelles, comme la surveillance des containers embarqués ou l’état des contrôleurs RAID.
En ce qui concerne le premier module sur les containers, Glances affiche automatiquement, au-dessus de la section des processus une section décrivant les différents conteneurs utilisés. Si docker n’est pas présent sur le serveur, rien ne sera présenté.
Exemple : affichage d’une section docker avec Nginx et PHP :
L’autre module de surveillance des contrôleurs RAID, Glances s’appuie sur le contenu du pseudo-fichier /proc/mdstat, lorsqu’une matrice RAID est détectée :
Depuis le début de ce tutoriel on ne cesse de répéter qu’il est possible de récupérer les données statistiques. Cela représente beaucoup d’information en simultané. Pour pouvoir les traiter ultérieurement, on peut les stocker dans une base de données de type NOSQL. C’est ce que propose de faire Glances, depuis sa version 2.3.
Il est donc possible d’exporter les données vers des fichiers CSV ou vers des bases de type InfluxDB. Dans ce dernier cas, il faut paramétrer l’accès à la base de données dans le fichier de configuration glances.conf :
[influxdb] host=localhost port=8086 user=root password=root db=glances
On peut alors exécuter glances en exportant les données dans la base grâce à l’instruction suivante :
# glances --export-influxdb
Du fait du stockage en base de données, il est alors facile de tracer l’ensemble des informations stockées sous forme de graphe via l’utilitaire grafana (modèle fourni avec glances), par exemple :
VI. Conclusion
En règle générale, l’entête affichée par glances présente la version de l’outil, le nom FQDN de la machine, la version du noyau et le système d’exploitation. Les autres sections peuvent variées selon que l’on a ou non chargé des modules supplémentaires. Dans les grandes lignes, on devrait trouver au minimum les sections suivantes :
- CPU – Charge moyenne – Mémoire
- Débits des interfaces réseau – Entrées/Sorties disques
- Processus
- Système de fichiers
Il est bien sûr possible de modifier non seulement les seuils mais également le format d’affichage au travers du fichier de configuration et des modules ajoutés. Tout est paramétrable et ajustable. Depuis, la version 1.3.7, il est même possible de faire afficher les logs. Autant dire que cela vient relayer et compléter les fonctionnalités d’un outil de supervision tel que Cacti, Zabbix, Shinken ou autres.
En espérant que cette présentation vous donnera envie de découvrir ou redécouvrir cet outil indispensable, je vous conseille fortement de l’installer, sur l’ensemble de vos serveurs, pour disposer d’une vue globale et rapide sur l’état du système d’exploitation de vos machines, au travers de vos clients : qu’il s’agisse d’un simple PC, d’une tablette ou d’un smartphone.
Et merci à @Nicolargo, l’auteur de Glances, pour cet outil magnifique, que j’utilise depuis des années maintenant, et qui permet de surveiller en un coup d’œil, à distance l’ensemble de son parc informatique, à l’aide d’un dashboard très réussi.