Après plusieurs mois de développement (5 pour être précis), la nouvelle version majeure de Glances (version 2.0) arrive dans les bacs. Nous allons dans cette dépêche détailler les évolutions par rapport à la version précédente et effectuer un focus sur les nouveautés.
Avant de commencer et pour ceux qui ne connaissent pas encore Glances, voici une définition de l'objectif de ce logiciel: "Glances est un outil permettant d'identifier le plus simplement possible les problèmes de performance d'une machine".
Pour cela il dispose d'une interface regroupant le maximum de statistiques système utiles dans un minimum de place. Les interfaces mise à disposition de l'utilisateur dans cette version sont : interface texte (Curse) pour les consoles & terminaux, mode client/serveur, interface Web (pure HTML/CSS), interface programmatique via une API.
Glances est multiplate-forme: GNU/Linux, *BSD, OS X et Windows.
Sommaire
Les évolutions
CLI
Le diable étant dans les détails. Une optimisation de l'affichage de chacun des modules a été effectuée. De plus, l'interface occupe tout l'espace disponible dans le terminal ou la console.
Pour les habitués de la version 1, voici quelques changements à prendre en compte:
- la statistique "CPU steal" n'est plus loguée en cas de dépassement des limites, seules les statistiques CPU user, system et iowait le sont ;
- le log de la charge de la machine est affiché sur la statistique 15 minutes et non plus sur 5 minutes et 15 minutes ;
- afin d'améliorer la lisibilité, les statistiques "sensors" (température des disques et batteries) sont réunies dans un même bloc ;
- les colonnes des statistiques des processus ont été ré-organisées ;
Fichier de configuration
La structure du fichier de configuration a été reprise. Ainsi, il va falloir adapter votre configuration existante pour cette nouvelle version. On trouve notamment une fonction permettant de fixer les alertes sur le débit des interfaces réseau. Par exemple pour une liaison ADSL :
# Default limits (in bits per second aka bps) for interface bitrate
wlan0_rx_careful=4000000
wlan0_rx_warning=5000000
wlan0_rx_critical=6000000
wlan0_tx_careful=700000
wlan0_tx_warning=900000
wlan0_tx_critical=1000000
API
L'API a également été revue pour améliorer la sécurité. Ainsi, dans le mode client/serveur, plus aucun mot de passe ne transite en clair sur le réseau en plus d'un encodage SHA256.
La documentation de cette nouvelle version de l'API est disponible sur cette page.
Les nouveautés
L'interface Web
Avant de me faire jeter des pierres par des barbus énervés, sachez que cette nouvelle interface est un réel besoin remonté par les utilisateurs. Ils souhaitaient disposer d'une interface Web pour surveiller leurs machines depuis n'importe quel poste fixe ou mobile. J'ai donc supprimé le mode d'exportation au format HTML (basé sur Jinja) pour le remplacer par un service Web intégré (utilisant le framework Bottle).
Une fois Glances lancé avec l'option -w, on dispose ainsi d'une interface Web "responsive":
$ glances -w
Bottle v0.12.5 server starting up (using WSGIRefServer())...
Listening on http://0.0.0.0:61208/
Hit Ctrl-C to quit.
Ce qui donne dans un navigateur Web d'un PC:
ou dans celui d'une tablette:
Les prochaines versions amélioreront encore cette interface avec notamment des fonctions de tri des colonnes, de configuration du taux de rafraîchissement (par défaut à 5 secondes) et de thèmes pour n'afficher que les informations que vous jugez utiles.
Le "fallback SNMP" dans le mode client/serveur
Depuis sa version 1.3, il est possible d'utiliser Glances en mode client/serveur afin de superviser ses machines à distance. Pour cela, il suffit de lancer le serveur avec l'option -s :
serveur$ glances -s
Glances server is running on 0.0.0.0:61209
Puis le client sur une machine distante:
client$ glances -c <@IP serveur>
La version 2.0 apporte une nouvelle fonction de fallback SNMP au client. Ainsi, si le serveur Glances n'est pas detecté sur la machine serveur, Glances essaye de récupérer les statistiques en utilisant des requêtes SNMP.
Note: pour l'instant, ce mode est expérimental et ne fonctionne que dans certains cas (serveur SNMP v2/2c sous GNU/Linux). L'équipe de développement a besoin de contributeurs pour faire évoluer cette fonction et l'ouvrir à d'autres type de matériel (autres OS, routeurs Cisco…).
Gestion des limites au niveau serveur
Les limites (CAREFUL, WARNING et CRITICAL) sont maintenant fixées au niveau du serveur et non plus du client comme dans les versions précédentes. La méthode getAllLimits() de l'API permet de récupérer ces limites.
Comme dans la version 1.x, les limites peuvent être modifiées dans le fichier de configuration (/etc/glances/glances.conf par défaut sous GNU/Linux).
Et celles que l'on ne voit pas…
…ou celles qui ne sont pas vues par l'utilisateur final. Glances v2.0 n'est pas qu'une simple mise à jour de la version 1.0 mais une refonte complète de l'architecture logicielle. Ainsi, le découpage en plugins des différentes fonctions (d'entrées et de sorties) va permettre à l'équipe de développement une plus grande souplesse pour l'ajout de nouvelles fonctions dans les prochaines versions. Chaque fonction de récupération de statistiques est isolée dans un plugin disposant de méthodes (voir par exemple celui de récupération des statistiques de la mémoire vive).
Au niveau du processus de développement, le passage à cette deuxième version a coïncidé avec l'utilisation du workflow Git Flow. Une page a été rédigée dans le Wiki pour expliquer le workflow à suivre pour les corrections et les améliorations de la version de développement.
Installation et mise à jour de Glances
Glances est disponible dans les dépôts de la plupart des distributions GNU/Linux. En attendant que les packagers fassent leur boulot, il est possible d'installer cette dernière version via pip :
Installation:
pip install glances
Note : PsUtil, la bibliothèque Python permettant à Glances de récupérer les statistiques de votre machine, nécessite l'installation préalable des headers Python (apt-get install python-dev sous Debian). Pour une procédure d'installation plus détaillée, je vous conseille la lecture de la documentation officielle.
Mise à jour :
pip install --upgrade glances
Certaines fonctions (comme le mode serveur Web) nécessite l'installation de bibliothèques tierces (Glances vous alerte automatiquement s'il lui en manque une). Pour installer la totalité des bibliothèques vous pouvez saisir la commande suivante :
pip install glances pysnmp bottle batinfo https://bitbucket.org/gleb_zhulik/py3sensors/get/tip.tar.gz
Et après ?
L'équipe de développement a déjà quelques idées de nouvelles fonctionnalités : amélioration du mode fallback SNMP, création d'une API REST, refonte de l'IA pour une mise en évidence encore plus précise des problèmes…
Glances est un projet open-source sous licence LGPL. Il a donc besoin de contributeurs pour continuer à évoluer.