Sortie de Glances version 2.0

Posté par  (site web personnel) . Édité par Nils Ratusznik, palm123, Nÿco et claudex. Modéré par Nÿco. Licence CC By‑SA.
Étiquettes :
42
15
juin
2014
Supervision

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

Screenshot

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 ;

CPU

  • le log de la charge de la machine est affiché sur la statistique 15 minutes et non plus sur 5 minutes et 15 minutes ;

LOAD

  • afin d'améliorer la lisibilité, les statistiques "sensors" (température des disques et batteries) sont réunies dans un même bloc ;

Sensors

  • les colonnes des statistiques des processus ont été ré-organisées ;

Processus

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:

Glances dans Firefox, sur PC

ou dans celui d'une tablette:

Glances sur un Nexus 5

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>

Mode client/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.

Aller plus loin

  • # Nouveau fan

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

    Merci pour cet outil, je viens d'installer et je crois que je suis déjà fan : plein d'infos pertinentes, bien affichées dans une grille claire, c'est cool.
    D'ailleurs…

        CPU%  MEM%  VIRT   RES   PID USER        NI S    TIME+ IOR/s IOW/s Command
        57.5  59.6 2.64G 1.16G  3425 xinfe        0 S 37:36.50     0     0 /usr/lib/firefox/firefox
    

    Je viens bientôt avoir besoin d'une machine dédiée au browsing, vu comme Firefox bouffe les ressources disponibles. (HS: quelqu'un connait un outil pour faire du profiling des onglets Firefox histoire de savoir lesquels sont déraisonnables ? about:memory ne m'avance pas)

    Pour revenir à Glances, pourquoi je n'ai pas de rubrique "sensors" ? J'ai installé lmsensors lequel m'en affiche 3 de dispo :

        acpitz-virtual-0
        Adapter: Virtual device
        temp1:        +61.5°C  (crit = +99.0°C)
    
        coretemp-isa-0000
        Adapter: ISA adapter
        Core 0:       +62.0°C  (high = +100.0°C, crit = +100.0°C)
        Core 1:       +63.0°C  (high = +100.0°C, crit = +100.0°C)
    

    Je suis étonné de ne pas en voir plus, d'ailleurs : Core 0, Core 1, GPU, Motherboard et éventuellement batterie me semblent un minimum dans un ordi, non ?

    • [^] # Re: Nouveau fan

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

      Alors pour les sensors, j'ai lancé la ligne magique suivante et tout va bien maintenant :

      pip install glances pysnmp bottle batinfo https://bitbucket.org/gleb_zhulik/py3sensors/get/tip.tar.gz
      

      Par contre, je n'ai eu aucun warning du manque des dépendances. (Je tourne sous elementary OS, assimilé à Ubuntu 12.04 LTS)

  • # Glances

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

    J'adore Glances, je m'en sers régulièrement depuis que je l'ai découvert. Je l'ai même mit en couverture de mon blog.

    Dyslexics have more fnu.

  • # Pas CLI

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

    Contrairement à ce qui est indiqué, je ne crois pas que Glances ait de CLI (command-line interface, interface en ligne de commande), mais simplement une interface en pleine console.

    Pour distinguer un mode ligne de commande d'un mode pleine console, imaginez ce que ça donnerait sur un afficheur à une seule ligne : si ça passe, c'est de la ligne de commande, sinon c'est de la pleine console. Par exemple :

    • un shell : ligne de commande ;
    • Vim, Emacs : pleine console ;
    • ed : ligne de commande ;
    • tcpdump : ligne de commande ;
    • Irssi : pleine console ;
    • Freetalk : ligne de commande ;
    • netcat : ligne de commande ;
    • ping : ligne de commande ;
    • mtp : pleine console.
    • [^] # Re: Pas CLI

      Posté par  . Évalué à 8.

      C'est bien la première fois que j'entends/lis "interface en pleine console"…

      "Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)

      • [^] # Re: Pas CLI

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

        En général on parle de logiciel en console tout court, ou en mode texte, ou d'interface en mode texte.

        • [^] # Re: Pas CLI

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

          Mais il y a des gens (des vrais) qui utilisent vraiment "pleine console" pour dire "mode texte" ?
          C'est sympa de vouloir franciser, mais inventer des trucs que personne n'utilise alors que, comme tu le dis, console ou interface en mode texte ça existe déjà, c'est employé.

          C'est un peu comme quand certains veulent utiliser "texte plein" comme traduction de "plain text", ça veut juste rien dire. A la rigueur texte non enrichi, là au moins ça a du sens.

          • [^] # Re: Pas CLI

            Posté par  (site web personnel) . Évalué à -2. Dernière modification le 16 juin 2014 à 17:05.

            Ce n'était pas de la francisation, mais plutôt un terme à moi, construit sur le modèle de « plein écran » pour bien expliquer la différence avec de la ligne de commande : ça utilise toute la console, plutôt que de travailler ligne après ligne.

    • [^] # Re: Pas CLI

      Posté par  . Évalué à 8. Dernière modification le 16 juin 2014 à 16:36.

      Toujours à faire le pompeux…

      imaginez ce que ça donnerait sur un afficheur à une seule ligne

      C'est pas terrible.

      Un programme en CLI est un programme sans boucle d'évènement utilisateur (il peut arriver qu'il demande des choses en plus de ses paramètres et de son entrée standard, mais ne gère pas ça sous forme d'évènements). On le lance on obtiens un résultat. apt-get search machin c'est de la CLI.

      Vim, Emacs : pleine console ;

      Vim est mixte tu peut t'en servir en CLI.
      Emacs par défaut est graphique (je crois qu'il peut aussi s'utiliser en CLI).
      aptitude est mixte aussi il a une interface CLI et une en mode texte (c'est d'ailleurs aussi le cas de less qui peut être configuré pour être CLI).

      Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

    • [^] # Re: Pas CLI

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

      Un ami m'a dit hier qu'il ne lisait plus les commentaires sur linuxfr à cause du temps perdu par beaucoup sur des détails d’orthographes ou de terme pas totalement adéquat en laissant de côté le fond.

      Et là bravo, tu es en plein dedans. Dans le genre de perds mon temps sur un point de détail digne d'une dicté de Pivot tu places la barre bien haut.

      De l'importance d'avoir deux UIs (web et "console pleine") pour plaire à un maximum? Le coût qu'un tel choix impose au projet et à sa maintenabilité? Ou alors plus simplement un choix de librairie améliorable pour une certaines partie d'une ou autre UI? Non, c'est beaucoup plus intéressant de parler forme et pinaillage de mot.

      Je commence à comprendre mon ami pour le coup.

      • [^] # Re: Pas CLI

        Posté par  . Évalué à 6.

        Je commence à comprendre mon ami pour le coup.

        Pour le coup, le commentaire est en négatif, il suffit de mettre la limite à 0 pour ne pas le voir.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

        • [^] # Re: Pas CLI

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

          C'est juste. Mais j'ai la forte impression (peut être fausse) qu'on a de plus en plus le cas. Il est possible aussi que je fasse de plus en plus attention à ces posts qui ressemblent plus à des formules de rhétoriques qui pour son auteur est un moyen d'être visible et "avoir raison" sans trop avoir à réfléchir sur le fond.

          Le système de notation aide, mais j'ai encore vu dernièrement des pavés énormes sur un point de détail sur un terme (je ne me souviens plus tellement ça ne m'intéressait pas).

          J'encourage les modérateurs a être un peu lus ferme sur ce genre dérive ou au moins ouvrir le débat car mine de rien, et là encore c'est peu être juste une impression, on a de moins en moins de débat technique dans les commentaires. Or c'est bien pour ça qu'on vient sur le site, pas pour être sur un sous domaine de bescherelle.fr :)

          Bon c'est la fin du passage vieux con qui couine, même si j'ai pas encore tout à fait l'age :)

          Et vive les débats techniques et de fonds donc :)

          • [^] # Re: Pas CLI

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

            Remarque: les réponses à un commentaires en négatifs devaient peu être être mis en cachés eux aussi? Ca éviterait l'effet pavé et qu'on perde du temps sur un échange qui part sur du vent?

            • [^] # Re: Pas CLI

              Posté par  . Évalué à 3.

              Ça vaut le coup d'ouvrir une entrée de suivi pour ça.

              « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

          • [^] # Re: Pas CLI

            Posté par  . Évalué à 6.

            Je suis d'accord, cependant, certains messages sont vraiment incompréhensibles tellement ils sont mal écrit, et le signaler à l'auteur est important je crois. Et cette limite est sans doute différente pour chacun (et dépends aussi du contexte), du coup, ça devient très difficile de mettre une limite plus ou moins objective.

            « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

            • [^] # Re: Pas CLI

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

              Oui, quand ça impacte la compréhension, et donc le fond, je suis pour un rappel, hors de question d'arriver au langage SMS également (peu d'effort pour un qui écrit, mais beaucoup pour tous ceux qui lisent).

              Mais comme tu dis la limite est pas facile à placer. Juste que là je crois que vu le nombre de commentaires autour de points de détails qui n'apportent rien au fond du sujet, un simple rappel des modérateurs sur le fait qu'aller trop loin dans ce sens est juste contre productif pour le bien de la communauté (on perds des membres, et le plus souvent les plus expérimentés qui ont autre chose à faire que passer leur temps sur un détail de forme).

              J'ouvre un ticket dans le suivi donc :)

      • [^] # Re: Pas CLI

        Posté par  . Évalué à 1.

        Justement, pour ce qui est de l'interface web j'aurais préféré une solution websocket du type : https://github.com/joewalnes/websocketd

        Je me demande d'ailleurs s'il est possible de basculer Glances en websocket. Je crois me souvenir que j'ai eu des problèmes avec les affichages multilignes :-/

        Je ne sais pas ce qu'en pense l'auteur mais ça me semble plus utile de faire du websocket qu'une "API Rest" qui ne me paraît pas vraiment correspondre au besoin.

        • [^] # Re: Pas CLI

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

          Si tu veux faire des requêtes de supervision le REST est tout à fait adapté, websocket certainement pas :)

          • [^] # Re: Pas CLI

            Posté par  . Évalué à 1.

            L'esprit du REST est d'être en mode non connecté si je me souviens bien de la thèse de Roy Fielding. C'est même l'un des principes de base. Pas de contexte, une demande, une reponse.

            Pour moi la supervision suppose exactement tout l'inverse : mode connecté, temps réel, push du serveur vers la console de supervision, etc… - tout cela correspond à ce que les websockets apportent. Pas le REST.

            Donc je persiste et signe : autant une API REST n'a pas vraiment de sens, autant l'utilisation de Websocket en a.

  • # Graphes

    Posté par  . Évalué à 1.

    Bonjour,

    c'est dommage de ne pas visualiser l'historique des valeurs du CPU, serait-il possible d'ajouter un graphe à Glances ?

    Pourquoi ?

    L'intérêt est de visualiser le passé et pas seulement une moyenne. Et ainsi voir les pics de CPU et de corréler avec un évènement.

    Implémentation :

    Le graphe dans Glances serait une option d'affichage non activée par défaut.
    Vous pourriez utiliser des caractères en braille pour afficher un graphe du CPU. Il existe un exemple d'implémentation avec l'application vtop.

    Alternatives :

    htop propose un graphe mais il est difficile (impossible ?) à lire.
    Les solutions de type Kibana sont trop lourdes par rapport à Glances.
    vtop propose un graphe sympa mais c'est une application node.js et elle propose trop peu d'options.

Suivre le flux des commentaires

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