Présentation de Glances 1.7

Posté par  (site web personnel) . Édité par ZeroHeure, NeoX, palm123 et Pierre Jarillon. Modéré par ZeroHeure. Licence CC By‑SA.
28
11
août
2013
Supervision

Glances est un logiciel de supervision permettant à partir d'une console ou d'une connexion SSH de visualiser sur un seul écran l'ensemble des statistiques du système et ainsi d'investiguer les éventuels problèmes. Développé en Python et utilisant des librairies multi-système il peut être utilisé sous GNU/Linux, BSD, Mac OS et Windows. Glances peut fonctionner en mode console ou client/serveur.

La version 1.7 de Glances vient de voir le jour sur le dépôt officiel. En plus des habituelles corrections de bug et améliorations de forme, elle apporte son lot de nouveautés:

  • Liste de processus importants à surveiller (Monitored Processes List)
  • Supervision de la température des disques
  • Information sur l'état de charge de la batterie
  • Désactivation possible des statistiques des processus
  • Ajout de fonctions de lancement (per-cpu)
  • Support de l'IPv6 pour le mode client/serveur

Glances est disponible sur le gestionnaire de paquets Python Pypi.

Sommaire

Titre de l'image

Un peu d'histoire

Pour ceux qui découvrent Glances, c'est un projet que j'ai lancé il y a maintenant 2 ans pour pallier un manque dans les outils de supervision système. En effet, j'utilisais tout un tas de logiciels (netstat, top, ntop, ifstat, dstat…) pour investiguer les éventuels problèmes de performance sur un système d'exploitation. Mais aucun ne présentait une visualisation simple (via un terminal par une connexion SSH) et rapide (sur un seul écran) des statistiques nécessaires.

Glances était née.

Monitored processes list

L'objectif qui se cache derrière cette nouvelle fonction est de pouvoir, en un clin d’œil, voir l'état d'un ensemble de processus regroupés ensemble sous une même thématique.

Par exemple, sur un machine hébergeant un serveur Web dynamique, la supervision des processus "importants" peut se découper de la manière suivante :

  • Serveur de caching des pages : processus Varnish
  • Serveur Nginx : processus NGinx
  • Serveur PHP : processus PHP-FPM
  • Serveur de caching des objets : processus Memcached
  • Serveur de base de données : processus MySQL

On a donc 5 objets à superviser. Dans Glances, la définition de ces objets est faite via le fichier de configuration glances.conf. Chaque objet est défini par :

  • description : description des processus (au maximum 16 caractères, exemple : Serveur Web Nginx)
  • regex : expression régulière permettant de regrouper les processus dans l'objet (exemple: .*nginx.*)

et optionnellement par :

  • command : chemin complet vers un script qui sera exécuté par Glances à chaque rafraîchissement (donc toutes les 3 secondes par défaut) et qui devra retourner une chaîne de caractère d'une seule et unique ligne contenant des informations utiles pour cet objet. Attention à ne pas utiliser un script trop consommateur de ressources ou bien augmenter le temps de rafraîchissement (option -t )
  • countmin : nombre minimal de processus attendus. Un message de warning sera affiché si le nombre de processus passe en dessous de cette valeur.
  • countmax : nombre maximal de processus attendus. Un message de warning sera affiché si le nombre de processus passe en dessus de cette valeur.

Ainsi, la configuration de l'objet n°1 (on peut définir jusqu'à 10 objets) correspondant au serveur Web Nginx est donc la suivante:

    [monitor]
    list_1_description=Serveur Web Nginx
    list_1_regex=.*nginx.*
    list_1_command=nginx -v
    list_1_countmin=1
    list_1_countmax=4

La couleur détermine l'état de l'objet. Si le nombre de processus :

  • est compris entre countmin et countmax alors Glances affichera l'objet en vert (état OK)
  • est différent de 0 mais non compris entre countmin et countmax alors Glances affichera l'objet en orange (état WARNING)
  • est égal à 0 alors Glances affichera l'objet en rouge (état CRITICAL)

Comme pour toutes les autres statistiques importantes de Glances, le changement des états est logué.

En mode client/serveur la liste des items est définie au niveau serveur. Une nouvelle entrée dans l'API permet au client de récupérer la liste sur le serveur.

Supervision de la température des disques

Sur certains systèmes, notamment les NAS, la température des disques est un critère important à surveiller. En partant de ce postulat, Mendel Gusmao a développé un module optionnel (activable en passant l'option -y au lancement de Glances) permettant d'aller récupérer la température des disques sur le daemon HDDTemp qui doit être lancé sur votre machine.

Il est bien sûr possible de définir les seuils d'alertes dans la section [hddtemperature] du fichier de configuration de Glances. Les valeurs par défaut sont: CAREFUL=45 / WARNING = 52 / CRITICAL = 60 (en ° celcius).

Information sur l'état de charge de la batterie

L'intégration de la librairie Batinfo permet à Glances d'afficher le pourcentage de capacité des batteries restante (en bas de l'écran au milieu du footer).

Limitation: cette statistique est uniquement disponible sur les systèmes Linux.

Une option pour un Glances "low CPU"

Le traitement de la liste comprenant les processus est un des facteurs principaux de la consommation CPU de Glances. Sur certains systèmes (notamment les nanos PC comme les Raspberry Pi), il est conseillé de réduire le taux de rafraîchissement des statistiques pour faire baisser cette consommation CPU. Cependant, si vous avez besoin d'un taux de rafraîchissement important sans avoir besoin du détail des processus alors l'option -r codée par J.Renner est faite pour vous. En lançant Glances avec l'option -r, vous allez désactiver tous les traitements des processus (liste dynamique, monitored process list…) et ainsi disposer d'un Glances faiblement consommateur de CPU.

Sur ma machine de développement, l'utilisation de cette option fait passer la consommation CPU de 2.9% à 0.3%.

Détail CPU au lancement de Glances

Une version précédente de Glances voyait apparaître une option (activable en appuyant sur la touche '1' dans Glances) permettant d'afficher le détail CPU par cœur et non plus globalement. Une nouvelle option sur la ligne de commande (-1) permet de lancer par défaut ce mode d'affichage.

IPv6

Enfin un vrai support IPv6 pour le mode client serveur de Glances.

A tester simplement et localement avec:

glances -s -B ::0

pour lancer le serveur en mode IPv6 avec un bind sur toutes les interfaces.

Puis ensuite on lance le client sur le localhost IPv6:

glances -c ::1

Installation et mise à jour de Glances

Si vous avez installé Glances via Pypi, une mise à jour peut se faire simplement via la ligne de commande:

sudo pip install --upgrade Glances

Pour une installation toute fraîche (pour les nouveaux venus ayant les droits root):

sudo pip install Glances

Aller plus loin

  • # bravo

    Posté par  . Évalué à 3.

    Bravo pour ce logiciel
    ça fait un moment que je le suis (je t'ai meme envoyé des questions à une epoque) et vraiment glances devient de plus en plus interessant.
    L'option -r me plait particulierement pour les test de charges. C'est la prochaine installation sur mon rapberry :-)

  • # Petite correction disque en veille

    Posté par  . Évalué à 4.

    Bonjour et bravo.

    Juste une petite correction:

    quand mon disque est en veille, la valeur renvoyée par hddtemp est SLP et glances -y se crashe:

    File "/usr/local/lib/python2.6/dist-packages/glances/glances.py", line 952, in __update__
    hddtemp_current['value'] = int(temperature)
    ValueError: invalid literal for int() with base 10: 'SLP'
    

    En attendant J'ai rajouté ça dans le code à la ligne 950:

    elif temperature == "SLP":
        hddtemp_current['label'] = fields[offset + 1].split("/")[-1] + " is sleeping"
        hddtemp_current['value'] = 0
    

    Version de glances testée: 1.7.1

    Merci encore pour cet utilitaire!

  • # Glances sur Mac par MacPorts

    Posté par  . Évalué à 1.

    Bonjour,

    J'ai tenté l'expérience sur Mac (OSX Mountain Lion) en installant par MacPorts (installation réussie sans soucis) mais malheureusement quand je lance la commande glances:

    Traceback (most recent call last):
    File "/opt/local/bin/glances", line 9, in
    load_entry_point('Glances==1.6.1', 'console_scripts', 'glances')()
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
    return ep.load()
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
    entry = import(self.module_name, globals(),globals(), ['__name__'])
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/glances/glances.py", line 39, in
    locale.setlocale(locale.LC_ALL, '')
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 547, in setlocale
    return _setlocale(category, locale)
    locale.Error: unsupported locale setting

    j'ai dû changer la valeur de LC_ALL pour pouvoir utiliser glances:

    LC_ALL='en_US' glances

    Si jamais pour la doc :)

    • [^] # Re: Glances sur Mac par MacPorts

      Posté par  (site web personnel) . Évalué à 1.

      Merci pour le test, c'st effectivement une erreur connu sur la version 1.6.1 (celle présente sur MacPots) et qui a été corrigé sur la version 1.7.
      La version 1.7 devrait être intégré prochainement dans les MacPorts.

      A+

  • # Commentaire supprimé

    Posté par  . Évalué à 1.

    Ce commentaire a été supprimé par l’équipe de modération.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.