À la découverte de Glances 2.4

Magazine
Marque
GNU/Linux Magazine
Numéro
182
Mois de parution
mai 2015
Spécialité(s)


Résumé
Glances est un logiciel de supervision système dont l'objectif est d'offrir aux utilisateurs une vue synthétique mais néanmoins complète de l'état de leurs machines. Nous allons dans cet article présenter les fonctions de base de Glances ainsi que les nouveautés de la version 2.4.

Body

La genèse de Glances vient d'un simple constat personnel. Il existe, sur nos systèmes d'exploitation modernes, pléthore de logiciels de supervision des différents composants de nos machines : un pour la cpu/charge/mémoire (top), un pour le trafic transitant sur les interfaces réseaux (ifstat) et encore un autre pour vérifier les espaces disques disponibles (df)… Cependant, aucun ne peut répondre rapidement à la question que tout administrateur système, réseau ou simple développeur s'est posé un jour : « Mais que ce passe-t-il (WTF) sur cette machine ? ».

En partant de ce postulat, les objectifs affichés de Glances sont les suivants :

- contrôler dans une interface unifiée l'ensemble des paramètres sensibles ayant un impact sur les performances : CPU, mémoire vive, mémoire disque, charge, débits réseaux, débits et espaces disques, capteurs de température, liste et état des processus...

- superviser sa machine locale (on parle ici du mode standalone) quel que soit le système d'exploitation utilisé : GNU/Linux, BSD, Mac OS ou bien Windows ;

- superviser ses machines distantes (mode « client/serveur ») ;

- en cas de problèmes, alerter l'utilisateur de la manière la plus claire possible ;

- proposer des interfaces utilisateur de type console (Curse), Web (AngularJS) et API (XML/RPC et Restful) ;

- exporter les statistiques vers d'autres logiciels (CSV, StatsD, InfluxDB) ;

- offrir un logiciel libre (licence LGPL v3) et évolutif (système de modules).

Glances est actuellement maintenu par Alessio Sergi (@asergi) et votre serviteur (@nicolargo) et dispose d'une communauté active d'une dizaine de contributeurs.

1. Installation de Glances

Sous GNU/Linux, le plus simple est d'utiliser le script d'installation automatique (actuellement uniquement disponible pour Ubuntu/Debian et Fedora/CentOS) :

# curl -L http://bit.ly/glances | /bin/bash

L'avantage de ce script par rapport à l'utilisation de Pypi (https://pypi.python.org/pypi/Glances) est une installation exhaustive des dépendances pour l'ensemble des fonctions.

Pour les autres systèmes d'exploitation et les autres méthodes d'installation, le mieux est de consulter la documentation officielle [1].

2. Utilisation basique

Maintenant que Glances est installé sur votre machine, vous pouvez lancer le mode standalone grâce à la commande suivante :

$ glances

L'interface par défaut est la console/terminal visible en figure 1.

figure_01

Fig. 1: Interface par défaut en mode console.

Comme vous pouvez le voir en redimensionnant votre terminal, l'interface est « curse responsive ».

Commençons par le tour du propriétaire. La première ligne donne les informations générales sur la machine (nom de l'hôte, système d'exploitation, adresse IP principale et uptime).

Viennent en dessous les statistiques principales (CPU, mémoires et charge) dont le nombre et la précision sont dépendantes du système (par exemple, on ne dispose pas des statistiques de charge sur un système Windows).

Sur la gauche on trouve les informations secondaires (débits des interfaces réseaux, débits d'entrée/sortie des disques, état du RAID (non présent sur ma copie d'écran), espaces disques et températures des capteurs).

Au centre, on retrouve les statistiques sur les conteneurs Docker, les processus à surveiller et la liste des processus.

Par défaut, la liste des processus est triée automatiquement en fonction de l'alerte globale courante. Si tout est normal sur votre système, un tri par consommation CPU sera appliqué. En cas de saturation de la RAM c'est un tri par pourcentage d'occupation de la mémoire qui sera utilisé. Il est bien sûr possible d'opter pour un tri statique des processus (pour cela cliquer sur la touche <h> pour voir la liste des touches raccourci-clavier).

Il est également possible de configurer une liste ou un ensemble de processus à surveiller : ils seront affichés avant la liste des processus. Par exemple, pour surveiller l'ensemble de vos processus Python, il suffit d'ajouter les lignes suivantes dans votre fichier de configuration :

[monitor]

# Define the list of processes to monitor

# *** This section is optional ***

# The list is composed of items (list_#nb <= 10)

# An item is defined:

# * description: Description of the processes (max 16 chars)

# * regex: regular expression of the processes group to monitor

# * command: (optional) full path to shell command/script for extended stat

# Use with caution. Should return a single line string.

# Only execute when at least one process is running

# By default display CPU and MEM %

# Limitation: Do not use in client / server mode

# * countmin: (optional) minimal number of processes

# A warning will be displayed if number of process < count

# * countmax: (optional) maximum number of processes

# A warning will be displayed if number of process > count

list_1_description=Python prg

list_1_regex=^python.*

Dans cette configuration, le groupe nommé Python prg est défini par l'expression régulière ^python.*, c'est à dire toutes les commandes commençant par le mot clé python.

Enfin en bas de l'écran, en plus de l'heure de la machine, on peut consulter l'historique des 10 dernières alertes jugées sévères ou critiques.

Par défaut, le temps de rafraîchissement est de 3 secondes. Vous pouvez le modifier en utilisant l'option -t de la ligne de commandes. L'augmentation de cette valeur aura un impact positif sur la consommation CPU de Glances.

L'affichage des statistiques utilise un code de couleur standardisé afin d'identifier rapidement les problèmes : du vert, quand tout va bien, au rouge, dans le cas d'une valeur critique. Ces seuils sont configurables dans le fichier /etc/glances/glances.conf (ou dans ~/.config/glances/glances.conf).

En cas de problème lors de l'utilisation de Glances, il peut être utile de consulter le fichier de log (par défaut sous /tmp/glances.log). Il est possible de passer en mode debug grâce à l'option -d.

2. Le mode client/serveur

Pour superviser à distance une machine sans avoir à utiliser une connexion SSH, il est possible de lancer Glances en mode serveur avec la commande :

$ glances -s

Le processus va se mettre en attente d'une connexion cliente (en limitant sa consommation CPU pendant cette période).

Le poste client doit lancer la commande :

$ glances -c <serveur>

ou <serveur> est à remplacer par le nom ou l'adresse IP du serveur.

L'affichage sera identique au mode standalone avec uniquement un indicateur de connexion entre le client et le serveur en plus, en haut à gauche de l'écran, comme vous pouvez le voir sur la figure 2.

figure_02

Fig. 2: Affichage en mode serveur.

Le serveur est en écoute sur toutes les interfaces réseaux sur le port TCP/61209. Ce port doit donc être joignable à partir du ou des postes clients (attention à la configuration des firewalls). La consommation réseau entre le serveur et un client est d'environ 30 Kbps.

Une nouvelle fonction apparue dans la version 2.2 permet de disposer d'un point central pour superviser un ensemble de serveurs Glances. Quand le client est lancé avec l'option --browser, il va afficher la liste des serveurs pré-configurés dans le fichier glances.conf ainsi que les serveurs Glances détectés sur le même réseau local (en utilisant le protocole de découverte automatique ZeroConf [2]) :

$ glances --browser

On obtient un menu où l'on peut sélectionner le serveur à superviser (voir figure 3).

figure_03

Fig. 3: Menu de sélection du serveur à superviser.

Il est également possible d'utiliser le client Glances pour récupérer les statistiques systèmes à partir d'un simple serveur SNMP. Ainsi, si le client n'arrive pas à trouver un serveur Glances, il va essayer de basculer ses requêtes vers le serveur SNMP. Bien que ce mode ne soit pas aussi complet qu'un serveur Glances, il permet de superviser des machines appliances comme des routeurs Cisco, des serveurs VmWare ESXi ou bien des SAN NetApps.

Pour forcer l'utilisation du mode SNMP, il faudra utiliser la commande :

$ glances -c <serveur SNMP> --snmp-force

3. Interface Web

Les besoins en mobilité devenant de plus en plus grand, la supervision des systèmes doit adapter ses interfaces utilisateurs. Ainsi, Glances dispose d'une interface Web permettant de surveiller à distance ses machines à partir de n'importe quel PC disposant d'un navigateur Web, d'une tablette ou d'un téléphone portable.

L'interface Web de la version 2.4 a été entièrement repensée par deux contributeurs (Nicolas Hart et Sylvain Mouquet) et se base maintenant sur des technologies AngularJS et responsive design.

Pour lancer Glances en mode serveur Web :

$ glances -w

Glances web server started on http://0.0.0.0:61208/

En saisissant l'URL http://<serveur>:61208/ dans un navigateur, on arrive sur l'interface Web dynamique présentée en figure 4.

figure_04

Fig. 4: Interface Web.

La même interface à partir d'un smartphone est visible en figure 5.

figure_5

Fig. 5: Interface Web depuis un smartphone

Le serveur Web est en écoute sur toutes les interfaces réseaux sur le port HTTP/61208. Ce port doit donc être joignable à partir du ou des postes clients (attention à la configuration des firewalls).

4. Les APIs

Une des grandes valeurs ajoutées de Glances par rapport aux autres logiciels équivalents est la mise à disposition d'APIs permettant, dans vos infrastructures, l'exploitation des statistiques systèmes.

Glances propose deux interfaces pour son API :

- XML/RPC : voir la documentation sur le Wiki (https://github.com/nicolargo/glances/wiki/The-Glances-2.x-API-How-to)

- RESTFUL/JSON : documentation également sur le Wiki (https://github.com/nicolargo/glances/wiki/The-Glances-RESTFULL-JSON-API)

Voici un exemple d'utilisation de l'API RESTFUL/JSON à partir de la ligne de commandes. On commence par lancer Glances en mode serveur Web :

$ glances -w

Glances web server started on http://0.0.0.0:61208/

Puis on demande la consommation CPU à l'API RESTful (/api/2/cpu) :

$ curl -s http://0.0.0.0:61208/api/2/cpu | json_pp

{

"system" : 0.5,

"guest_nice" : 0,

"idle" : 97,

"user" : 2.4,

"softirq" : 0,

"nice" : 0,

"guest" : 0,

"steal" : 0,

"iowait" : 0,

"total" : 3,

"irq" : 0

}

On peut demander également la consommation mémoire (/api/2/mem) :

$ curl -s http://0.0.0.0:61208/api/2/mem | json_pp

{

"inactive" : 1990729728,

"total" : 8273547264,

"available" : 4227063808,

"used" : 4046483456,

"percent" : 48.9,

"free" : 4227063808,

"active" : 3854503936,

"cached" : 1724342272,

"buffers" : 578723840

}

Et il est possible de cibler une statistique directement par l'API (/api/2/mem/used) :

$ curl -s http://0.0.0.0:61208/api/2/mem/used | json_pp

{

"used" : 4113895424

}

5. Les modules d'export des données

Au vu des architectures logicielles actuelles, un système de supervision fermé n'a plus de sens. Glances intègre donc nativement des modules d'exports des données. Depuis la version 2.3, Glances propose les modules suivants : fichier CSV, Statsd et InfluxDB. Nous allons nous focaliser dans ce chapitre sur ce dernier module.

InfluxDB est une base de données NoSQL de type temps/valeurs, optimisée pour le stockage des données de métrologie que vous pouvez coupler avec Grafana, un client Web permettant de créer des tableaux de bord graphiques.

La configuration du couple InfluxDB/Grafana sort du cadre du présent article mais il existe de nombreuses références sur le Web. Je pars donc du principe que vous disposez d'un serveur InfluxDB fonctionnel avec une base nommée glances.

Pour connecter Glances à InfluxDB, il faut vérifier que votre fichier de configuration de Glances (glances.conf) contient la section suivante :

[influxdb]

host=localhost

port=8086

user=root

password=root

db=glances

On lance ensuite Glances avec l'option d'exportation InfluxDB (--export-influxdb) :

$ glances --export-influxdb

Le résultat dans un tableau de bord Grafana (template fourni avec Glances [6]) est présenté en figure 6.

figure_06

Fig. 6: Tableau de bord Grafana.

6. Focus sur les nouveautés de la version 2.4

Glances utilise une architecture modulaire. Ainsi, chaque groupe de statistiques (CPU, mémoire, swap, charge, processus…) est défini sous la forme d'un plugin. La structure d'un plugin Glances permet de capturer, mettre en forme et exporter les statistiques.

Il est bien sûr possible d'enrichir cet écosystème en écrivant vous même un plugin. Ainsi les dernières versions ont vu apparaître les plugins Docker (pour superviser vos conteneurs), RAID (pour surveiller les contrôleurs disques) et Quick Look (jauges en mode console).

6.1 Le plugin Docker

Les conteneurs ont le vent en poupe en ce moment. Il n'y a qu'à voir l'engouement sur les réseaux sociaux autour de l'implémentation Docker [3] pour sentir le virage technologique qui est en train de s'opérer. Glances surfe donc sur cette vague et propose un plugin permettant de superviser les conteneurs. Le plugin s'affiche automatiquement au-dessus de la liste des processus, si Docker est détecté. On retrouve ainsi, la liste des conteneurs, leurs consommations CPU et mémoire ainsi que leurs statuts comme le montre la figure 7.

figure_07

Fig. 7: Plugin de supervision des conteneurs.

Les prochaines versions de Glances intégreront des statistiques supplémentaires (comme les débits réseaux) en fonction de celles disponibles dans l'API Docker.

6.2 Le plugin RAID

Sur des serveurs en production, l'état du contrôleur RAID est un élément critique à surveiller. Glances se base sur la lecture du fichier /proc/mdstat via la librairie Python PyMDStat [4].

Par exemple, l'affichage de Glances dans le cas d'un contrôleur RAID5 avec un disque défectueux est visible en figure 8. Dans cet exemple, on voit que le quatrième disque de la grappe est indisponible (UUUA).

figure_08

Fig. 8: Cas d'un contrôleur RAID5 avec un disque défectueux.

6.3 Lancement d'actions sur alertes

Autre nouveauté de cette version 2.4, la possibilité de lancer des actions (des lignes de commandes) sur alerte.

Illustrons cela par un exemple : vous souhaitez surveiller une machine pendant une nuit et identifier les processus consommateurs de CPU. Nous allons donc déclencher une action (une simple commande ps redirigée vers un fichier temporaire /tmp/<date>-cpu.log) à chaque fois que la CPU user devient critique (supérieure à 90%). On doit pour cela éditer le fichier de configuration de Glances de la manière suivante :

[cpu]

user_critical=90

user_critical_action=ps auxw > /tmp/`date +"%Y%m%d%H%M%S"`-cpu.log

On peut aussi accéder aux valeurs du plugin où l'action est déclenchée grâce à une syntaxe {{Mustache}} [5]. Par exemple pour avoir accès à la valeur courante du CPU user, on utilisera {{user}} dans la ligne de commandes de l'action. Ainsi pour ajouter la valeur du CPU dans le nom du fichier du premier exemple :

user_critical_action=ps auxw > /tmp/`date +"%Y%m%d%H%M%S"`-cpu-{{user}}.log

Conclusion

Dans ce premier billet sur le sujet, nous n'avons abordé qu'une partie des fonctions proposées par Glances. Pour continuer l'aventure, je vous propose donc de consulter la documentation officielle (voir références ci-dessous) et je vous invite à participer au développement de Glances, par vos contributions sur le Github [1] et par vos questions sur le Google Groups [7].

Références

[1] Site officiel de Glances : https://github.com/nicolargo/glances

[2] Protocole ZeroConf : http://www.zeroconf.org/

[3] Docker : https://www.docker.com

[4] PyMDStat : https://github.com/nicolargo/pymdstat

[5] Mustache : http://mustache.github.io/

[6] Dashboard Grafana pour Glances : https://github.com/nicolargo/glances/blob/develop/conf/glances-grafana.json

[7] Glances Google Groups: https://groups.google.com/forum/#!forum/glances-users




Article rédigé par

Les derniers articles Premiums

Les derniers articles Premium

Stubby : protection de votre vie privée via le chiffrement des requêtes DNS

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Depuis les révélations d’Edward Snowden sur l’espionnage de masse des communications sur Internet par la NSA, un effort massif a été fait pour protéger la vie en ligne des internautes. Cet effort s’est principalement concentré sur les outils de communication avec la généralisation de l’usage du chiffrement sur le web (désormais, plus de 90 % des échanges se font en HTTPS) et l’adoption en masse des messageries utilisant des protocoles de chiffrement de bout en bout. Cependant, toutes ces communications, bien que chiffrées, utilisent un protocole qui, lui, n’est pas chiffré par défaut, loin de là : le DNS. Voyons ensemble quels sont les risques que cela induit pour les internautes et comment nous pouvons améliorer la situation.

Surveillez la consommation énergétique de votre code

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Être en mesure de surveiller la consommation énergétique de nos applications est une idée attrayante, qui n'est que trop souvent mise à la marge aujourd'hui. C'est d'ailleurs paradoxal, quand on pense que de plus en plus de voitures permettent de connaître la consommation instantanée et la consommation moyenne du véhicule, mais que nos chers ordinateurs, fleurons de la technologie, ne le permettent pas pour nos applications... Mais c'est aussi une tendance qui s'affirme petit à petit et à laquelle à terme, il devrait être difficile d'échapper. Car même si ce n'est qu'un effet de bord, elle nous amène à créer des programmes plus efficaces, qui sont également moins chers à exécuter.

Donnez une autre dimension à vos logs avec Vector

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Avoir des informations précises et détaillées sur ce qu’il se passe dans une infrastructure, et sur les applications qu'elle héberge est un enjeu critique pour votre business. Cependant, ça demande du temps, temps qu'on préfère parfois se réserver pour d'autres tâches jugées plus prioritaires. Mais qu'un système plante, qu'une application perde les pédales ou qu'une faille de sécurité soit découverte et c'est la panique à bord ! Alors je vous le demande, qui voudrait rester aveugle quand l'observabilité a tout à vous offrir ?

Les listes de lecture

8 article(s) - ajoutée le 01/07/2020
Découvrez notre sélection d'articles pour faire vos premiers pas avec les conteneurs, apprendre à les configurer et les utiliser au quotidien.
11 article(s) - ajoutée le 02/07/2020
Si vous recherchez quels sont les outils du DevOps et comment les utiliser, cette liste est faite pour vous.
8 article(s) - ajoutée le 02/07/2020
Il est essentiel d'effectuer des sauvegardes régulières de son travail pour éviter de perdre toutes ses données bêtement. De nombreux outils sont disponibles pour nous assister dans cette tâche.
Voir les 49 listes de lecture

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous