Présentation complète de Glances

Date: 20/12/2011 | Catégories: Open-source,Planet-libre,Systeme | Tags: ,,

Il y a quelques jours, je vous avez présenté la première version de Glances, mon logiciel pour surveiller simplement ses systèmes en mode texte à partir d'une console ou d'un terminal. Quelques versions plus tard (Glances est actuellement disponible en version 1.3.7), il était temps pour moi de vous en faire une présentation un peu plus complète.

Introduction

Glances est un logiciel libre (distribué sous licence LGPL) permettant de surveiller votre système d'exploitation GNU/Linux ou BSD à partir d'une interface texte. Glances utilise la librairie libstatgrab pour récupérer les informations de  votre système. Il est développé en langage Python.

Installation

Depuis le gestionnaire de paquet de votre système

Des paquets existent pour plusieurs distributions: Arch, Fedora/Redhat...

Le processus de packaging est actuellement en cours sur d'autres distribs, je vous conseille donc de rechercher Glances (avec un s !) sur votre gestionnaire de package avant de faire une installation depuis les sources.

Merci de laisser un commentaire dans ce billet si vous trouvez Glances sur votre système :)

Depuis le PPA

Pour les distributions Ubuntu (et dérivées) depuis la 9.10 jusqu'à la 12.04, il est possible d'utiliser le PPA généreusement maintenu par Arnaud Hartmann.

[cc lang=bash"]

sudo add-apt-repository ppa:arnaud-hartmann/glances-stable

sudo apt-get update

sudo apt-get install glances

[/cc]

Depuis les sources

Le projet Glances est hébergé sur GitHUB.

Pour l'installer, il suffit de suivre les instructions suivantes depuis un terminal.

Récupération de la dernière version (1.3.7):

[cc]

$ wget https://github.com/downloads/nicolargo/glances/glances-1.3.7.tar.gz

[/cc]

Procédez ensuite à l'installation:

[cc]

$ tar zxvf glances-1.3.7.tar.gz
$ cd glances-1.3.7
$ ./configure
$ make
$ sudo make install

[/cc]

Glances a besoin des dépendances suivantes:

  • Python 2.6+ (non testé avec Python 3+)
  • libstatgrab 0.16+
  • python-statgrab 0.5+ (ne marchera PAS avec python-statgrab 0.4)

Notes specifiques pour une installation sous Debian 6.

Debian Squeeze met à disposition la version 0.4 de python-statgrab. Il faut donc installer la version 0.5 à la main:

[cc]

$ sudo apt-get install libstatgrab-dev pkg-config python-dev make
$ wget http://ftp.uk.i-scream.org/sites/ftp.i-scream.org/pub/i-scream/pystatgrab/pystatgrab-0.5.tar.gz
$ tar zxvf pystatgrab-0.5.tar.gz
$ cd pystatgrab-0.5/
$ ./setup.py build
$ sudo ./setup.py install

[/cc]

Notes specifiques pour une installation sous Ubuntu 10.04 et 10.10.

Ces versions d'Ubuntu mettent à disposition la version 0.4 de python-statgrab. Il faut donc installer la version 0.5 à la main:

[cc]

$ sudo apt-get update
$ sudo apt-get install pkg-config build-essential autoconf automake python libstatgrab-dev python-all-dev
$ sudo apt-get remove python-statgrab
$ wget http://ftp.uk.i-scream.org/sites/ftp.i-scream.org/pub/i-scream/pystatgrab/pystatgrab-0.5.tar.gz
$ tar zxvf pystatgrab-0.5.tar.gz
$ cd pystatgrab-0.5/
$ ./setup.py build
$ sudo ./setup.py install

[/cc]

Lancement de Glances

Il suffit de saisir la commande suivante dans une console ou un terminal:

[cc]

$ glances.py

[/cc]

Note: sur certaines distributions, il faut saisir glances en lieu et place de glances.py.

Guide d'utilisation

Par défaut, l'affichage des statistiques est rafraichi toute les secondes.

Il est possible de changer cette valeur en utilisant l'option -t. Par exemple pour fixer un taux de rafraichissement à 5 secondes:

[cc]

$ glances.py -t 5

[/cc]

Les statistiques jugées importantes sont affichées en couleur:

  • VERT: la statistique est "OK"
  • BLEU: la statistique est "CAREFUL" (à surveiller)
  • VIOLET: la statistique est "WARNING" (en alerte)
  • ROUGE: la statistique est "CRITICAL" (critique)

Quand Glances est lancé, il est possible d'utiliser les touches suivantes:

'a' pour trier la liste des processus de manière automatique:

  • Si la CPU totale > 70% alors le tri se fait pas consommation CPU
  • si la mémoire total > 70% alors le tri se fait pas consommation MEMOIRE

'c' pour forcer le tri par consommation CPU

'd' pour desactiver ou activer l'affichage des entrées/sorties disques

'f' pour desactiver ou activer l'affichage de l'occupation des FS

'h' pour afficher ou cacher l'aide en ligne

'm' pour forcer le tri par consommation MEMOIRE

'n' pour desactiver ou activer l'affichage des interfaces réseau

'q' pour quitter Glances (il est également possible d'utiliser CTRL-C)

Passons ensuite à la description de la fenêtre de Glances:

En-tête

L'en-tête montre la version de Glances, le nom de la machine (FQND) ainsi qu'une information sur le système d'exploitation (nom, version).

CPU

L'état de la CPU est affiché par un pourcentage de l'utilisation globale.

  • Si user|kernel|nice CPU est < 50%, alors le status est "OK".
  • Si user|kernel|nice CPU est > 50%, alors le status est "CAREFUL".
  • Si user|kernel|nice CPU est > 70%, alors le status est "WARNING".
  • Si user|kernel|nice CPU est > 90%, alors le status est "CRITICAL".

Charge moyenne (aka Average Load)

Il est assez difficile de donner une définition claire de la charge d'une machine (load average). Sur le blog Nosheep, Zach en donne la définition suivante:

" C'est la somme moyenne du nombre de processus en attente dans la queue d'execution plus le nombre de processus actuellement en train d'être executés sur une période de temps de 1, 5 et 15 minutes."

Glances permet d'afficher les alertes en tenant compte du nombre de coeurs de votre processeur. Par exemple, le seuil WARNING sera de 2 pour un processeur  Bi-Core alors qu'il sera de 4 sur un Quad-Core.

  • Si la charge moyenne est < O.7*Core, alors le status est "OK".
  • Si la charge moyenne est > O.7*Core, alors le status est "CAREFUL".
  • Si la charge moyenne est > 1*Core, alors le status est "WARNING".
  • Si la charge moyenne est > 5*Core, alors le status est "CRITICAL".

Mémoire

Glances affiche 3 types d'informations pour la mémoire: RAM, SWAP et réelle (un peu à la manière de la commande "free -h").

La mémoire réelle occupée est calculée ainsi = used - cache.

La mémoire réelle libre est calculée ainsi = free + cache.

Les alertes utilisent les seuils suivants:

  • Si la mémoire est < 50%, alors le status "OK".
  • Si la mémoire est > 50%, alors le status "CAREFUL".
  • Si la mémoire est > 70%, alors le status "WARNING".
  • Si la mémoire est > 90%, alors le status "CRITICAL".

Débits des interfaces réseau

Glances affiche les débits des interfaces réseau en adaptant dynamiquement l'unité à utiliser (bits par seconde).

Les alertes ne sont affichées que pour les interfaces dont les informations sur la vitesse maximale sont disponibles (cela dépend des distributions):

  • Si le débit < 50%, alors le status est "OK".
  • Si le débit > 50%, alors le status est "CAREFUL".
  • Si le débit > 70%, alors le status est "WARNING".
  • Si le débit > 90%, alors le status est "CRITICAL".

Par exemple, sur une interface Ethernet Fast Ethernet (100 Mbps), le status passera à WARNING si le débit dépasse les 70 Mbps.

Entrées/Sorties disque

Glances permet d'afficher les débits en lecture et écriture sur les disques en adaptant dynamiquement l'unité à utiliser (octets par seconde).

Il n'y a pas d'alerte remontée pour ce type d'information.

Espace sur les systèmes de fichiers

Glances affiche par système de fichiers l'espace disque total et utilisé. L'unité est automatiquement adaptée (octets par seconde).

Les alertes sont remontées sur l'espace disque utilisé:

  • Si l'espace disque utilisé est < 50%, alors le status est "OK".
  • Si l'espace disque utilisé est > 50%, alors le status est "CAREFUL".
  • Si l'espace disque utilisé est > 70%, alors le status est "WARNING".
  • Si l'espace disque utilisé est > 90%, alors le status est "CRITICAL".

Les processus

Glances affiche un résumé sur l'état des processus ainsi qu'une liste détaillé (CPU, MEMOIRE et nom du processus).

Le nombre des processus affichés est adapté à la taille de la fenêtre.

Les logs

Nouveauté de la version 1.3.7.

Lire le billet suivant pour une description de la fonction logs.

 

Pied de page

Glances y affiche la légende (rappel des codes des couleurs) ainsi que la date et l'heure courante.

A faire...

J'ai besoin de contributeurs pour faire évoluer Glances.

Notamment:

  • Packaging pour Debian, Ubuntu, BSD et toutes autres distributions
  • Controle de la présence des librairie dans le fichier configure.ac
  • Inclure les stats de FS directement dans python-statgrab
  • Ajout d'une fenêtre d'aide
  • Optimisation du code

Pour toutes remarques, bugs, demande d'évolution sur Glances, merci d'utiliser le formulaire GitHub.

  • http://www.it-wars.com/categorie8/dev rabah vincent

    Je suis fan !!! Je l’utilise depuis que tu as mis le code en ligne et franchement BRAVO :)

  • http://www.ThorAndCo.fr ThorAndCo

    Suite à l’installation sur une ubuntu server 10.04 viege c’est le message suivants :

    Traceback (most recent call last):
    File “/usr/local/bin/glances.py”, line 755, in
    main()
    File “/usr/local/bin/glances.py”, line 731, in main
    init()
    File “/usr/local/bin/glances.py”, line 723, in init
    stats = glancesStats()
    File “/usr/local/bin/glances.py”, line 131, in __init__
    self.__update__()
    File “/usr/local/bin/glances.py”, line 148, in __update__
    self.diskio = statgrab.sg_get_disk_io_stats_diff()
    File “/usr/local/lib/python2.6/dist-packages/statgrab.py”, line 66, in sg_get_disk_io_stats_diff
    return _statgrab.py_sg_get_disk_io_stats_diff()
    File “_statgrab.pyx”, line 507, in _statgrab.py_sg_get_disk_io_stats_diff
    _statgrab.StatgrabException: ‘sg_get_disk_io_stats_diff() returned NULL’

    Des idées…?

    • http://www.nicolargo.com NicoLargo

      Peux ajouter ton commentaire sur l’issue n°9 directement sur GitHub (https://github.com/nicolargo/glances/issues/9).

      En donnant les informations suivantes:

      Version de python: ___
      # python -v

      Version de libstatgrab: ___
      # sudo apt-cache show libstatgrab6 | grep Version

      Version de python-statgrab: ___
      # sudo apt-cache show python-statgrab | grep “Version”

      Merci !

  • http://www.kywyxy.net mornik

    Slt,
    J’ai juste une remarque sur le nom. glance est un programme d’analyse système en mode console, sur HP-UX…
    Possible problème de propriété intellectuel en vue. Même nom, même type d’application c’est pas top.

  • karl

    salut, aujourd’hui en voulant l’installé sur ma ubuntu j’ai faite une erreur de nom dans les dépôts PPA avec glance donc pas de “s”,donc je croyais installé glances, j’ai vraiment eu de la misère à le désinstallé.

    c’est peut être une bonne idée de le changé de nom.

    aussi j’espère qu’il va y avoir une deb, très original ton programme.

  • fylefou

    Tout d’abord merci oohh merci à toi grand maitre!! ca faisait longtemps que je voulais te feliciter pour tout ton travail et t’as grande activité.
    sinon ca m’interresse fortement comme outil, peut on y mettre des plugin (j’aimerai genre ajouter un ‘ls | wc -l’)? de toute façon je vais voir ca sur git…

    • http://www.nicolargo.com NicoLargo

      Merci à toi.

      Glances n’inclue pas de système de plugin. Je souhaite que le programme reste simple et focaliser sur les fonctions de bases. Par contre, si tu connais un peu le Python, il est assez facile de forker le programme (https://github.com/nicolargo/glances/fork) et de le modifier.

  • Michel BOUY

    Merci pour ce travail…
    Installation en quelques seconde sur LMDE grâce à tes indications spécifiques pour debian.

    Une question subsidaire: comment connaître les applications qui consomment de l’échange réseau (parfois l’upload est saturée mais je n’arrive pas à savoir quelle appli utilise la connexion réseau).

    Autre question: glances peut-il surveiller un ordi distant (sans avoir à l’installer sur cet ordi) ?

    Merci pour le boulot…

    • http://www.nicolargo.com NicoLargo

      >>> Une question subsidaire: comment connaître les applications qui consomment de l’échange réseau (parfois l’upload est saturée mais je n’arrive pas à savoir quelle appli utilise la connexion réseau).

      Tu peux utiliser le programme nommé nethogs. Seul problème, il doit être lancé en root…

      >>> Autre question: glances peut-il surveiller un ordi distant (sans avoir à l’installer sur cet ordi) ?

      Il est possible de le lancer à distance via un tunnel SSH mais il faut que le programme soit installé sur la machine distante…

  • sinseman44

    installé en deux temps trois mouvements sur mon serveur ubuntu 10.10 associé à un terminal virtuel. Ça marche nickel, merci beaucoup.

  • Pingback: Nicolargo : Présentation complète de Glances | Actualités de l'open source | Scoop.it

  • Pinault22

    Salut !!
    Merci à toi pour se bon travail !!
    Bon tuto d’explication pour l’installation, ca fait plaisir !

    Sinon, j’aimerai que tu me dises pourquoi nous avons des valeurs de 1000% en CPU sur des process !
    Le pourcentage est calculé par rapport à un coeur ou cpu ? (je m’y perd un peu là en fait…).

    Merci d’avance nicolargo !

    • http://www.nicolargo.com NicoLargo

      L’affichage au niveau des process ne tient pas compte du nombre de coeur de ton processeur. Tu peux donc très bien avoir une valeur qui dépasse les 100% sur un processeur multi-coeur (mais jamais au dessus de 100*Nombre de coeurs).

      Seul l’affichage de la charge moyenne tient compte du nombre de coeurs (le chiffre est d’ailleurs indiqué à coté de Load: ___ )

      • Pinault22

        Merci pour ta réponse !

        J’ai 16 coeurs, et je t’assure que je dépasse de temps en temps 1600% (jusqu’a 1800 apercu, et même “inf”) !

        Je ne sais pas si c’est un bug (je suis en Glances v1.3.2 running).

        • http://www.nicolargo.com NicoLargo

          Glances “ne fait” qu’afficher de manière lisible les informations qui se trouve dans le répertoire /proc.

          Cela me semble quand même bizarre que tu dépasses les 1600% avec ton 16-Core. Peux tu vérifier que tu as le même comportement avec un autre logiciel (par exemple “top”).

        • Pinault22

          En restant un peu plus longtemps, j’ai même vu des résultats impressionnants : 1950, 4200, 5000 !

          • http://www.nicolargo.com NicoLargo

            As tu le même comportement quand tu augmentes le temps de rafraîchissement ?

            # glances.py -t 5

          • Pinault22

            Bonjour,

            Oui je dépasse les 1600% !
            Est-ce normale ?

            Merci

  • penthium2

    yum ne le trouve pas dans les dépots fedora ( version 16 )
    t’as l’url du rpm ?

    • http://www.nicolargo.com NicoLargo

      Il est pour l’instant dans le dépôt *testing*.

      • penthium2

        \o/ merci je teste de suite

      • MarbolanGos

        Et pour CentOS ?
        Ça pourrait être pratique pour monitorer des clusters !

        • Edouard

          c’est en cours pour epel

  • xarkam

    J’ai demandé pour qu’il soit packagé pour Frugalware.
    C’est Slown qui s’en occupera.

  • http://www.technodz.com Slown

    J’ai cette erreur au lancement, une idée ?

    http://frugalware.org/paste/12069

  • samuel44

    Bonsoir,

    Est-il possible d’envoyer par mail un ‘print écran’ à une heure défini ?

    Merci

  • http://blog.eatda.cat Reventlov

    Avec le paquet glances (glances-1.3.2-1) de AUR (Arch Linux), j’obtiens cet erreur:

    [Aurora]/home/giskard$ glances
    Traceback (most recent call last):
    File “/usr/bin/glances”, line 755, in
    main()
    File “/usr/bin/glances”, line 731, in main
    init()
    File “/usr/bin/glances”, line 723, in init
    stats = glancesStats()
    File “/usr/bin/glances”, line 131, in __init__
    self.__update__()
    File “/usr/bin/glances”, line 148, in __update__
    self.diskio = statgrab.sg_get_disk_io_stats_diff()
    File “/usr/lib/python2.7/site-packages/statgrab.py”, line 66, in sg_get_disk_io_stats_diff
    return _statgrab.py_sg_get_disk_io_stats_diff()
    File “_statgrab.pyx”, line 507, in _statgrab.py_sg_get_disk_io_stats_diff
    _statgrab.StatgrabException: ‘sg_get_disk_io_stats_diff() returned NULL’

    J’ai pas envie de m’inscrire sur github juste pour ça :)

  • http://www.nicolargo.com NicoLargo

    Pour info, la version 1.3.5 vient d’être publiée…

  • http://nospam.org/ R1D1

    Bonsoir,
    Merci pour cet outil bien pratique !

  • Pingback: projects by bufadu - Pearltrees

  • Tobu

    Pour concurrencer `atop -A`, il manque un tri pour les io par process. C’est un des meilleurs indicateurs que je connaisse pour indiquer ce qui charge un système.

  • cleddouze

    installation réussie et fonctionnement OK sur Ubuntu 12.04 version alpha1

  • http://zone42.fr Rodolphe Trujillo

    Je suis un fanboy de Glances :D

    merci beau dev :)

  • http://www.simply-informatique.fr NourSs

    Salut,

    Probléme pour moi avec une debian 5, j’ai ouvert un ticket sur Git ;-)

  • LN27

    Bonjour, j’ai fait un premier essai d’installation sur une ubuntu 10.04 lts, non concluant suite à la 1ère annonce.

    Aujourd’hui, apt-get ne permet pas d’installer directement glances. Mais cette fois-ci, l’installation depuis les sources s’est très bien passée. Mieux que ça, l’application tourne. Je vais pouvoir explorer tout ça et m’initier en douceur aux rudiments de la supervision.

  • http://blogoflip.fr flipflip

    Bonjour, très pratique l’idéal serait qu’il puisse intérroger une machine distante via un mini agent ;) De cette façon pas besoin de l’installer sur X serveur… enfin juste l’agent.

    • http://www.nicolargo.com NicoLargo

      Pas la peine d’un serveur X. Un accès console via SSH suffit pour lancer Glances sur la machine distante…

      • http://blogoflip.fr flipflip

        Par X je pensais à un nombre et non le serveur X :) L’idée est de pouvoir lancer la connexion depuis mon post d’administration un screen avec autant de glances que de serveur à surveiller. Ca éviterais d’installer trop de lib ou programmes sur les serveurs de production.

        • http://www.nicolargo.com NicoLargo

          Ok je comprend mieux :)

          Le problème est que les dépendances sont nécessaires pour faire le grab (acquisition des données) sur la machine à surveiller. Donc même si l’interface était centralisé sur un machine, il faudrait installer StatGrab et PyStatgrab + le Glances “Graber” sur les X machines…

          • http://blogoflip.fr flipflip

            Effectivement dans ce cas c’est pas nécessaire de centraliser.

            Une autre piste serait que l’agent récupère les fichiers bruts et les envoies aux “maitre” ensuite c’est le maitre qui les grab. l’intérêt aussi reduirais la charge sur les serveurs pour graber les infos (pas énorme je suppose).

          • http://www.nicolargo.com NicoLargo

            Intéressant…

            Mais cela nécessite pas mal de taf:
            – taille/format des informations /proc à transférer
            – protocole sécurisé à utiliser entre le maitre et les esclaves
            – refonte de l’interface pour prise en compte de plusieurs noeuds

            Tu peux ouvrir une issue (https://github.com/nicolargo/glances/issues/new) sur GitHub pour proposer l’évolution. Comme cela je la garde sous le coude si j’ai (beoucoup) de temps :)

  • http://blogoflip.fr flipflip

    Je veux bien ouvrir une issue mais j’ai deux problèmes :
    – Créer un énième compte (fausse excuse) ;)
    – Ecrire en anglais.

    Pour ce dernier point je suis une quiche en anglais à moins que tu me dise que je peux le poster en français.

    Pour continuer un peu la discution ici :
    – protocol sécurisé : passe par la couche ssh
    – refonte de l’interface : ou alors un paramètre au lancement de glances qui indique le nom dns/ip de la machine à surveiller.

    Pour le premier point c’est plus délicat ça risque de générer plus de trafic réseau mais dans ce cas tu peux le limiter en jouant sur le délai de rafraichissement.

    • http://blogoflip.fr flipflip

      oupss j’ai pas fais répondre :(

      • http://www.nicolargo.com NicoLargo

        Pas grâve :)

        Pas de pb pour rédiger cela en Français (donc plus d’excuse valable…) !

        J’avais effectivement pensé au SSH mais j’ai bien peur que le taux de rafraîchissement ne soit dépendant du temps de transfert… A tester en tout cas…

  • Pingback: Glances, un monitoring en mode texte pour Linux « wOueb by Romain DECKER / Another IT Guy Blog

  • http://blog.info16.fr Bartounet

    Yop.
    Quelqun a déjà réussi à installer glances sur Opensuse12.1
    J’ai l’impression qu’il n’y à pas de packet python-statgrab

  • Pingback: Glances: Powerful System Monitor for Ubuntu Linux (CLI)

  • http://www.kozodo.com/ Antoine EMERIT

    Bonjour,

    Je viens de réaliser un paquet de Glances pour Debian :

    http://www.kozodo.com/userfiles/files/glances/glances_1.3.7-1_all.deb

    (voir http://www.kozodo.com/userfiles/files/glances/glances_1.3.7-1_all.deb)

    Si certains veulent le tester sous Debian Squeeze et Whezzy et me faire des retours, merci d’avance.

    Antoine EMERIT

  • Pingback: Glances | DJERFY

  • Pingback: Nono’s vrac 27 « m0le'o'blog