À la découverte de Glances 2.4

Magazine
Marque
GNU/Linux Magazine
Numéro
182
|
Mois de parution
mai 2015
|
Domaines


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


Sur le même sujet

Crostini : débridez Chrome OS avec les applications Linux

Magazine
Marque
Linux Pratique
Numéro
120
|
Mois de parution
juillet 2020
|
Domaines
Résumé

Chrome OS est basé sur un système Linux (Gentoo), mais l'approche adoptée par Google est de limiter les possibilités de paramétrage et d'installation d'applications. Pour améliorer la polyvalence de son système sans remettre en cause son modèle sécuritaire, Google a, par la suite, introduit Crostini : une solution basée sur LXC pour que les utilisateurs de Chrome OS puissent travailler avec Linux dans un conteneur.

Analysez, diagnostiquez et dépannez votre système avec Sysdig

Magazine
Marque
Linux Pratique
HS n°
Numéro
47
|
Mois de parution
juillet 2020
|
Domaines
Résumé

Un système ne manque pas d’avoir des problèmes matériels, de plantage système, de performances, au niveau utilisateur ou noyau. Et malheureusement, les systèmes Linux ne sont pas exempts de ces problèmes à dépanner. Mais heureusement, Linux n’est pas en reste d’outils pour vous aider à diagnostiquer les problèmes. Des outils simples comme top pour surveiller l’usage CPU, ou ps pour les processus. Vous voulez tracer un appel système d’un processus : strace est votre ami. tcpdump, ou tshark vous aideront à inspecter le trafic réseau en ligne de commandes. Vous avez donc beaucoup d’outils à disposition, dans l’esprit « un outil précis pour une tâche unique », cher à Linux. Le problème c’est que lorsque l’on dépanne un système, on n’a pas le temps de se souvenir de tous les outils à disposition et taper toutes ces commandes en live. Outils qui ont chacun une philosophie différente, une interface d’entrée et de sortie différentes, ce qui peut poser soucis dans des situations stressantes et créer de la confusion lors d’occasions qui demandent de réagir dans l’urgence. Surtout que la plupart de ces outils ne sont pas pensés et optimisés pour être utilisés dans des conteneurs, plateformes de plus en plus utilisées et répandues.

Mettez en place une gestion efficace de vos journaux système avec Loki

Magazine
Marque
Linux Pratique
HS n°
Numéro
47
|
Mois de parution
juillet 2020
|
Domaines
Résumé

Bien avant les métriques et les graphiques de performances, les journaux système étaient la première source pour dépanner un système ou un service qui posait problème. Et ils le sont toujours : par défaut, sans aucune configuration, n’importe quel système Linux ou service journalise son activité et ses erreurs. Mais tout comme les métriques, si vous commencez à avoir à administrer plusieurs systèmes, la question se pose de centraliser ces journaux pour pouvoir les consulter simplement. Et quel stockage utiliser ? Des solutions, privées comme Splunk, ou libres comme Kibana sont déjà très populaires. Mais leur type de stockage (ElasticSearch pour Kibana), avec un indexage pour la recherche plein texte, prend beaucoup de place à l’utilisation et en sauvegarde, pour un intérêt limité dans la majorité des cas d’utilisation. Dans cet article, nous allons découvrir Loki, une solution toute récente, plus légère, pour gérer vos journaux.

Basez votre supervision sur des logs de qualité avec Rsyslog

Magazine
Marque
Linux Pratique
HS n°
Numéro
47
|
Mois de parution
juillet 2020
|
Domaines
Résumé

Les événements systèmes (aussi nommés logs dans la suite de l’article) sont des éléments déterminants pour la supervision du bon fonctionnement du système d’exploitation. Leur intérêt est souvent sous-coté aussi bien du point de vue maintenance du système que de sa sécurité. Cet article a pour ambition de poser les bases d’une bonne gestion des logs.

Neovim : dépoussiérez votre Vim

Magazine
Marque
Linux Pratique
HS n°
Numéro
47
|
Mois de parution
juillet 2020
|
Domaines
Résumé

Une application historique, puissante, populaire avec une base utilisateurs énorme, une compatibilité multiplateforme ultra-large, un code et une API quasi inmaintenables, dirigée par un Dictateur Bienveillant À Vie comme chef de projet et unique développeur : Vim présente toutes les caractéristiques d’un projet libre à succès. Et donc aussi tous les problèmes qui irritent ses utilisateurs et les contributeurs qui auraient le courage de participer à son développement. Dans cet article, nous allons découvrir Neovim, un fork de Vim né de la frustration d’utilisateurs de l’éditeur.

Par le même auteur

À la découverte de Glances 2.4

Magazine
Marque
GNU/Linux Magazine
Numéro
182
|
Mois de parution
mai 2015
|
Domaines
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.