Glances 1.5 est arrivé

Date: 8/11/2012 | Catégories: Open-source,Planet-libre,Systeme | Tags:

Update: La version corrige un bug qui peut, sur certain OS, empêcher le bon fonctionnement de la version 1.5. Je viens donc de publier une version correctrice (1.5.1) qui effectue les contrôles nécessaires avant le démarrage de Glances.

Quelques mois après la sortie de la version 1.4 et la riche actualité qui a suivi (buzz sur pas mal de sites et intégration dans les paquets Debian Sid), voici donc la nouvelle mouture de Glances.

Pour rappel, Glances est un logiciel de supervision système en ligne de commande (interface texte basée sur Curses) permettant de voir en un clin d'oeil l'état de sa machine. Un code couleur permet de mettre en avant les statistiques que Glances juge nominale, à surveiller,  en alerte ou critique. Il peut également afficher la liste des dernières alertes/critiques. La lisibilité et l'économie de l'espace pour l'affichage sont des critères importants que j'ai essayé de garder en tête lors du développement et du choix des évolutions.

Nous allons dans ce billet aborder les principales nouveautés de la version 1.5, avec notamment un focus sur la fonction client/serveur permettant de surveiller les machines à distance.

Glances est disponible sous GNU/Linux, BSD, Mac OS X et même Windows (uniquement en mode serveur).

Installation et mise à jour

En attendant la disponibilité de la version 1.5 de Glances dans vos packets managers favoris, il est possible (et conseillé) d'utiliser le gestionnaire de paquet Python Pip pour installer ou mettre à jour le logiciel.

Installation:

Mise à jour:

Si vous avez déjà une version antérieure de Glances installée, il se peut que la mise à jour ne ne fasse pas correctement. Il suffit alors de suivre la procédure suivante:

Note: si vous avez Python 2.7 ou supérieure, il faut adapter les chemins ci-dessus.

Pour tester que l'installation / mise à jour s'est bien passée, le plus simple est de lancer la commande:

Puis de lancer Glances pour vérifier que les statistiques de votre machine s'affichent correctement:

Les nouveautés de la version 1.5

Visuellement, les utilisateurs des anciennes versions ne seront pas perdus. On retrouve un découpage avec des statistiques essentielles en haut de l'écran (CPU, LOAD, MEM) avec une optimisation de l'espace. Puis sur la gauche des informations optionnelles comme le débit des interfaces réseau, les entrées/sorties disques et l'espace des différents points de montage (maintenant avec un affichage optimisé pour tenir compte des noms longs). Sur la droite, on a la possibilité de voir le détail des processus (avec par défaut un classement automatique et dynamique selon l'état de la machine). Enfin en bas de l'écran, le log des dernières alertes que l'on peut nettoyer avec les touches 'w' pour supprimer uniquement les Warning et 'x' pour supprimer toutes les alertes finies).

La touche 'h' permet toujours d'afficher l'aide en ligne avec la liste des touches disponibles.

La liste complète des changements par rapport à la dernière version est disponible dans le fichier ChangeLog.

Focus sur le mode client / serveur

C'est la grosse nouveauté de cette version. La mise à disposition pour les utilisateurs d'un mode client /serveur permettant à partir d'un Glances client d'afficher les statistiques d'un Glances serveur. On peut ainsi à partir d'un client GNU/Linux surveiller une autre machine GNU/Linux ou même, idée folle, une machine Windows.

Quand Glances est lancé en mode serveur, il créé un serveur XMLRPC en écoute sur le port TCP/61209 (ce port est bien sur configurable). Quand un client se connecte, il met à jour les statistiques avec un système de cache pour éviter de surcharger la machine puis il envoie les statistiques au client qui se charge de l'affichage et de la gestion des alertes. Il est bien sûr possible d'avoir plusieurs clients différents connectés sur un même serveur.

Pour lancer Glances en mode serveur, il suffit d'utiliser l'option -s:

On lance ensuite le client sur une autre machine avec l'option -c:

Si tout se passe bien, vous devriez avoir les statistiques du serveur qui s'affiche sur l'écran de votre client. Pour vérifier que la connexion entre le client et le serveur fonctionne correctement, j'ai mis en place un indicateur en bas à gauche de l'écran:

Ce dernier passe change en cas de problème de connexion:

Et Windows ?

Comme je l'ai noté en introduction, la version server de Glances fonctionne sous Windows (moyennant l'installation de Python et de PsUtil). Je dois avouer que je n'ai pas testé à fond la compatibilité de Glances sur cet OS. Au démarrage, Glances vérifie si il est lancé sur une plate-forme Windows. Si c'est le cas, il se lancera automatiquement en mode serveur (sans avoir à mettre le flag -s).

Je suis preneur de tout retour sur le sujet et si une âme généreuse veut bien s'occuper de maintenir un binaire "all inclusive" pour Windows 32 bits et 64 bits, cela serait vraiment bien ! (c'est assez facile à faire avec outil comme PyInstaller).

  • Pingback: Glances 1.5 est arrivé | evalentin | Scoop.it()

  • Guillaume AMAT

    Bravo pour ce super boulot !
    Je me demande juste pourquoi certains titre de l’interface sont en français alors que d’autres sont en anglais… C’est voulu ?

    • La traduction en Français n’est pas complète…

  • « Pour lancer Glances en mode client, il suffit d’utiliser l’option -s: »

    En mode serveur tu veux dire j’imagine.

  • Xarkam

    Salut, moi j’ai un ptit soucis:
    /home/xarkam# glances
    Traceback (most recent call last):
    File « /usr/local/bin/glances », line 9, in
    load_entry_point(‘Glances==1.5’, ‘console_scripts’, ‘glances’)()
    File « /usr/local/lib/python2.7/dist-packages/pkg_resources.py », line 337, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
    File « /usr/local/lib/python2.7/dist-packages/pkg_resources.py », line 2283, in load_entry_point
    return ep.load()
    File « /usr/local/lib/python2.7/dist-packages/pkg_resources.py », line 1993, in load
    entry = __import__(self.module_name, globals(),globals(), [‘__name__’])
    ImportError: No module named glances

  • Baste

    Salut,
    Je viens de faire une installation de glances 1.5 ( Sous Frugalware / python 2.7 ) avec easy_install glances

    et je rencontre cette erreur :

    File « /usr/lib/python2.7/site-packages/glances/glances.py », line 944, in __init__
    curses.curs_set(0)
    _curses.error: curs_set() returned ERR

    Une idée ? , j’ai python-psutil installé et je suis dans un terminal

  • Xarkam

    Ok, j’ai du virer glances à la main pour faire une réinstall propre. ca passe.

  • NourSs

    Encore moi mais sur un autre de mes serveurs

    http://pastebin.com/A14eaxdn

  • N’est-il pas plus simple de faire un pip install glances –upgrade, histoire de mettre à jour psutil par la même occasion ?

  • Protux

    pour mac os X il faut penser à installer llvm via xcode, sinon aucun soucis.

  • Mydoom

    Bonjour,

    J’avais également la version PPA et j’ai la même erreur que d’autres plus haut à savoir :

    # glances -v
    Traceback (most recent call last):
    File « /usr/local/bin/glances », line 9, in
    load_entry_point(‘Glances==1.5’, ‘console_scripts’, ‘glances’)()
    File « /usr/lib/python2.7/dist-packages/pkg_resources.py », line 337, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
    File « /usr/lib/python2.7/dist-packages/pkg_resources.py », line 2279, in load_entry_point
    return ep.load()
    File « /usr/lib/python2.7/dist-packages/pkg_resources.py », line 1989, in load
    entry = __import__(self.module_name, globals(),globals(), [‘__name__’])
    ImportError: No module named glances

    Bref… en attendant :

    # rm -rf /usr/local/lib/python2.7/dist-packages/glances/
    # rm -rf /usr/local/lib/python2.7/dist-packages/Glances-1.*
    # rm -f /usr/local/bin/glances

    # cd /opt
    # wget -O glances-1.5.tgz https://github.com/nicolargo/glances/tarball/master
    # tar xzvf glances-1.5.tgz
    # cd glances-1.5
    # python setup.py install

    Et ça marche.

  • Salut, même problème sous Ubuntu 12.04.1 LTS Server :

    pip install glances
    Downloading/unpacking glances
    Downloading glances-1.5.tar.gz (650Kb): 650Kb downloaded
    Running setup.py egg_info for package glances

    warning: no files found matching ‘ChangeLog’
    Requirement already satisfied (use –upgrade to upgrade): psutil>=0.4.1 in /usr/local/lib/python2.7/dist-packages (from glances)
    Installing collected packages: glances
    Running setup.py install for glances

    warning: no files found matching ‘ChangeLog’
    Installing glances script to /usr/local/bin
    Successfully installed glances
    Cleaning up…
    root@srvmail:~# glances
    Traceback (most recent call last):
    File « /usr/local/bin/glances », line 9, in
    load_entry_point(‘Glances==1.5’, ‘console_scripts’, ‘glances’)()
    File « /usr/lib/python2.7/dist-packages/pkg_resources.py », line 337, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
    File « /usr/lib/python2.7/dist-packages/pkg_resources.py », line 2279, in load_entry_point
    return ep.load()
    File « /usr/lib/python2.7/dist-packages/pkg_resources.py », line 1989, in load
    entry = __import__(self.module_name, globals(),globals(), [‘__name__’])
    File « /usr/local/lib/python2.7/dist-packages/glances/glances.py », line 81, in
    print(_(‘PsUtil > 0.4.0 is needed. Glances cannot start.’))
    NameError: name ‘_’ is not defined

    • Kris

      J’ai exactement la même erreur.
      Je suis également sur ubuntu server 12.04.
      J’ai totalement désinstaller la précédente version de glances (python2.6 et 2.7) et j’ai tout réinstallé en respectant la procédure, mais rien n’y fait.
      (pour info je fais tout a distance avec putty)
      Est-ce que quelqu’un a trouvé une solution?

  • prohand

    Bonsoir,

    Moi il me met cette erreur avec n’importe quel façon de l’installer :

    Traceback (most recent call last):
    File « /usr/local/bin/glances », line 9, in
    load_entry_point(‘Glances==1.5’, ‘console_scripts’, ‘glances’)()
    File « /usr/lib/python2.6/dist-packages/pkg_resources.py », line 305, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
    File « /usr/lib/python2.6/dist-packages/pkg_resources.py », line 2244, in load_entry_point
    return ep.load()
    File « /usr/lib/python2.6/dist-packages/pkg_resources.py », line 1954, in load
    entry = __import__(self.module_name, globals(),globals(), [‘__name__’])
    File « /usr/local/lib/python2.6/dist-packages/Glances-1.5-py2.6.egg/glances/glances.py », line 81, in
    print(_(‘PsUtil > 0.4.0 is needed. Glances cannot start.’))
    NameError: name ‘_’ is not defined

    Vous avez une solution ?

    Merci

  • Bonjour Nico
    Tu n’a pas fait un binaire d’install du coup ?
    un .exe avec python, les lib et glances ?

    Du coup faut installer python, ps util, pyinstaller ?

  • Peux tu faire un petit tuto pour l’install sous windows ?

    J’ai installé Python 2.7, psUtil
    et pyinstaller

    C:\Documents and Settings\antony\Bureau\pyinstaller-2.0>pyinstaller.py install g
    lances
    Error: PyInstaller for Python 2.6+ on Windows needs pywin32.
    Please install from http://sourceforge.net/projects/pywin32/

    • J’ai fait un binaire pour tester la version 1.5 sous Windows (je peux le publier dès lundi prochain si nécessaire) mais je n’ai pas envie de me rajouter cette tache sur Glances. C’est pour cela que je cherche un contributeur Windowsien pour s’en occuper…

  • gamebouille

    Le lien de changelog : https://github.com/nicolargo/glances/blob/master/Changelog tombe en 404 !!!

  • louis

    Bonjour Nico,
    Déjà merci pour ce super outil qui est bien pratique.
    Aujourd’hui j’ai essayé de le mettre à jour avec la version 1.5 en suivant la manip., mais j’ai une error lors du lancement:
    Statgrab initialization failed, Glances cannot start.

    Est-ce que le problème est connu? Est-ce qu’il y a une solution?

    • louis

      J’ai la solution a ce problème:

      ‘sudo apt-get install statgrab python-statgrab’

      Cependant, maintenant j’ai un autre problème:
      ‘Traceback (most recent call last):
      File « /usr/local/bin/glances », line 9, in ..’

      • Statgrab n’est plus utilisé depuis la version 1.4. Je te conseille de faire une désinstallation complète + réinstallation (voir autre commentaire pour la procédure à suivre)…

  • seb

    Merci beaucoup pour cet utilitaire!! Je suis un habitué de htop/iotop et là je suis à présent content de voir toutes ces infos ensemble! Et même en plus clair!

    Merci aussi pour le procédure d’install détaillée que tu as fourni. Je n’ai eu aucun soucis sur Ubuntu 10.04 .

  • Hedy

    J’ai un soucis pour lancer le client.
    Voici l’erreur obtenue qd je lance « glances -c 192.168.0.200 » :

    Traceback (most recent call last):
    File « /usr/bin/glances », line 9, in
    load_entry_point(‘Glances==1.5.1’, ‘console_scripts’, ‘glances’)()
    File « /usr/lib/python2.7/site-packages/glances/glances.py », line 2715, in main
    screen.update(stats, cs_status = server_status)
    File « /usr/lib/python2.7/site-packages/glances/glances.py », line 1270, in update
    self.flush(stats, cs_status = cs_status)
    File « /usr/lib/python2.7/site-packages/glances/glances.py », line 1258, in flush
    self.display(stats, cs_status = cs_status)
    File « /usr/lib/python2.7/site-packages/glances/glances.py », line 1236, in display
    diskio_count)
    File « /usr/lib/python2.7/site-packages/glances/glances.py », line 1618, in displayFs
    self.fs_x, ‘_’+fs[mounted][‘mnt_point’][-7:], 8)
    UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\xe9′ in position 3: ordinal not in range(128)

  • Salut et bravo pour cette appli. Maintenant que tu as ajouté le mode client/serveur, il serait peut-être « utile »/ »pratique » d’avoir une version webApp du client non ? Qu’en penses-tu ?
    Ce serait bien utile pour surveiller un ou plusieurs serveurs depuis un téléphone ou une tablette quand on est en déplacement etc.

    • bah avec un export html (et le template qui va bien) et jquery-mobile ce n’est définitivement pas un problème. Bon ok faut le faire … mais ce n’est pas compliqué. Par contre exposer directement les sorties glances html sur l’extérieur sans sécurité ….. pas très sécure tout cela.

      • Ben en même temps entre l’export html et ce que te retourne le XMLRPC je vois pas trop ce qu’il y a de dangereux niveau sécurité. Fais l’essai avec un client xmlrpc. Je vais voir si je peux pondre un petit bout de site pour voir.

      • J’ai prévu une authentification simple dans la prochaine release (1.5.2).

        https://github.com/nicolargo/glances/issues/117

        Je pense également modifier l’export HTML pour utiliser Bootstrap (http://twitter.github.com/bootstrap/) et Bootle pour la création d’un serveur Web intégré à Glances.

  • ManicoW

    Ca parait sympa comme logiciel, sauf que j’ai trouvé un « bug » dans psutil qui ne me permet pas de l’utiliser sur les mes machines virtuelles.

    En effet, après m’être pris a répétition des « PsUtil > 0.4.0 is needed. Glances cannot start. », après avoir mis a jour psutil, supprimé, réinstaller, pareil avec glances, et m’être assuré que seul psutil 0.6.1 était installé sur le serveur, j’ai fini par aller faire un tour dans le code source.

    Il apparait que glances lance une fonction de psutil pour en vérifier la version, sauf que si cette fonction retourne une erreur, glances indique un problème de version, alors que ca peut être un autre soucis.

    J’ai donc lancé la fonction à la main dans un « shell » python, et j’obtiens un beau

    RuntimeError: couldn’t find any physical disk

    Je plonge donc dans le code source de psutil, et je trouve la dite fonction, pour linux dans mon cas, et une partie de code que je n’aime pas :

    # determine partitions we want to look for
    partitions = []
    f = open(« /proc/partitions », « r »)
    try:
    lines = f.readlines()[2:]
    finally:
    f.close()
    for line in lines:
    _, _, _, name = line.split()
    if name[-1].isdigit():
    partitions.append(name)

    Ha oui, mais heu, moi mes partitions de machines virtuelles, elles ont pas de chiffre au bout ! et je dois pas être le seul 🙂

    Je crois que j’ai gagné le droit de faire un rapport de bug chez psutil 🙂

    Un jour, j’utiliserai glances, un jour… 🙂

  • melesigene

    Je viens enfin de me bouger pour installer cet outil …

    C’est excellent ! je vais de ce pas le tester en client/Serveur.

    Merci beaucoup pour ce superbe outils

  • Pingback: Nono’s Vrac 84 « m0le'o'blog()

  • ergeka

    Bonjour Nicolargo,
    Je viens enfin de prendre le temps d’installer Glances. Ça fonctionne impec sur LMDE.
    Merci pour ce super boulot 😉

    Je vais maintenant installer quelques Glances/serveur sur mes plugs …

  • Salut Nicolargo, super outil.
    Je test actuellement la 1.5b2 du jour sur un raidsonic kirkwood.

    Juste deux remarques, il y a un « — upgrade » au lieu de « –upgrade » dans la documentation de la page blog.nicolargo.com/2012/11/glances-1-5-est-arrive.html et une erreur de majuscules en trop dans le nom sur la doc (readme ?) du git.

    Il ne me reste plus qu’à attendre la version avec les alertes par messagerie… 😉

    Pour l’instant, l’export .html est déjà plus que sympathique et pratique.

    As-tu une astuce pour le lancer en mode démon, avec redémarrage en cas d’échec ?
    J’utilise un cron/hourly avec :

    #!/bin/sh
    /usr/bin/pgrep /usr/local/bin/glances || /usr/local/bin/glances -t 5 -o HTML -f /var/www

    Il y a possibilité de modifier le modèles .html pour avoir des styles plus petits ?
    As-tu prévu des couleurs comme dans la version console ?

    Encore bravo et merci

  • prohand

    Salut,

    J’ai suivi la procédure pour supprimer glances et le réinstaller mais j’ai toujours la même chose :

    /usr/local/nagios/libexec# glances
    PsUtil > 0.4.0 is needed. Glances cannot start.
    ()
    On Ubuntu 12.04 or higher:
    $ sudo apt-get install python-psutil
    ()
    To install PsUtil using pip (as root):
    # pip install psutil
    ()

    Merci de l’aide