Catégories
Developpement Open-source Planet-libre Systeme

Présentation des nouveautés de Glances 1.7

De retour de congés avec dans ma besace une nouvelle version de Glances qui sera la dernière version majeure de la série 1.x. La prochaine version sera donc une 2.x avec notamment un gros travail initial de refactoring/découpage du code en modules car le script initial atteint une taille critique (plus de 4400 lignes) qui commence à le rendre difficilement évolutif.

Mais revenons donc à nos moutons pour parler de cette version de Glances 1.7:

screenshot Glances 1.7

Un peu d’histoire

Pour ceux d’entre vous qui découvrent Glances dans ce billet, c’est un projet que j’ai lancé maintenant il y a 2 ans pour palier à 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 permettait une visualisation simple (via un terminal par une connexion SSH) et rapide (sur un seul écran) des statistiques nécessaires. Glances était née.

Cette version apporte, en plus de son lot de corrections de bugs, d’améliorations des performances et de la documentation de nouvelles fonctionnalité que nous allons détailler ensemble

Les « Monitored Processes List »

L’objectif qui se cache derrière cette nouvelle fonction est de pouvoir, en un clin d’oeil, 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 Nginx: processus NGinx
  • Serveur PHP: processus PHP-FPM
  • Serveur de caching des pages: processus Varnish
  • Serveur de base de données: processus MySQL
  • Serveur de caching des objets: processus Memcached

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 executé par Glances à chaque rafraichissement (donc toutes les 3 secondes par défaut) et qui devra retourner une chaine 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 d’augmenter le temps de rafraichissement (option -t <secondes>)
  • 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.

Note: par défaut, Glances par sur le principe ou le groupe ne contient qu’un seul processus (donc countmin = countmax = 1)

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

Dans Glances, l’affichage des objets se fait de la manière suivante:

monitored

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éfini 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 certain système, notamment les NAS, la température des disques est un critére important à surveiller. En partant de ce postulat, MendelGusmao 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 (voir ici les instructions d’installation de HDDTemp sur Debian/Ubuntu).

Sur ma machine (qui ne comporte qu’un seul disque dur), j’obtiens l’affichage suivant:

hddtemp

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 ° celcus).

Information sur l’état de charge de la batterie

J’ai reçu plusieurs demandes d’utilisateur de Glances souhaitant superviser la capacité de la batterie (notamment dans le cas d’utilisation de nano PC autonomes). Premier problème, PsUtil ne remonte pas ce genre de statistiques (du moins dans la version actuelle 1.0). Après une rapide et non exhaustive recherche sur le net d’une bibliothéque Python permettant d’obtenir simplement les informations disponibles sur les systèmes Linux j’ai du me résoudre à coder moi même quelque chose. C’est donc ainsi que Batinfo est apparu il y a quelques semaines.

L’intégration de la librairie Batinfo a été ensuite une formalité et Glances propose donc, si une ou plusieurs batteries sont détectés, l’affichage du pourcentage de capacité restante au milieu du footer:

battery

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 facteur principaux de la consommation CPU de Glances. Sur certain système (notamment les nanos PC comme les Raspberry Pi), il est conseillé de réduire le taux de rafraichissement des statistiques pour faire baisser cette consommation CPU. Cependant, si vous avez besoin d’un taux de rafraichissement important sans avoir besoin du détail des processus alors l’option -r codé par J.Renner est faite pour vous. En lançant Glances avec l’option -r, vous allez désactiver tout 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 de la CPU au lancement de Glances

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

per-cpu

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

Et puis…

Quelques autre petites nouveautés:

  • Platform/architecture is more specific now
  • Add support for local conf file
  • Add a uninstall script
  • Add getNetTimeSinceLastUpdate() getDiskTimeSinceLastUpdate() and getProcessDiskTimeSinceLastUpdate() in the API
  • Add more translation: Italien, Chinese

Conclusion

Tout d’abord un grand merci aux principaux contributeurs de cette nouvelle version:

Ensuite, je compte sur vous pour tester cette nouvelle version qui est dès à présent disponible sous Pypi (les packages Debian, BSD, Windows et Mac ne devrait pas trop tarder).

Installation et mise à jour de Glances 1.7

Si vous avez installé Glances via Pypi (ce que je conseille), 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

ou la commande équivalente pour une installation locale (pour les nouveaux venus sans les droits root):

pip install --user Glances

Si vous préférerez utiliser les packages Debian/Ubuntu, Windows et Mac OS, il va falloir attendre un peu que mes « packagers » attitrés bossent un peu.

J’attend vos retours sur les commentaires suivants ou vos retour de bug/demande d’amélioration sur le site du dépôt officiel.

Catégories
Open-source Planet-libre Systeme

Glances a son application Android

Jon Renner est un des contributeur actif du projet Glances. Il vient de mettre en ligne sur Google Play la première version de son client Glances pour Android (cliquer ici pour télécharger Android Glances).

 

Glances 4 Android

 

Ce client permet d’aller directement consulter les statistique d’un serveur Glances à partir d’un smartphone ou d’une tablette Android.

Contrairement au projet MetaGlances (dont j’ai parlé la semaine dernière), il ne necessite pas de machine intermédiaire et utilise une connection directe (via XML RPC) entre un device Android et votre serveur (qui doit bien sûr pésenter une interface publique). Pour cela, Jon a développé une API Glances en Java qui peut être récupéré et utilisé pour d’autres besoins.

Encore un grand bravo/merci pour son travail sur le coeur de Glances et pour le développement de l’ecosystème qui est en train de ce construire autour de Glances.

Quelques liens:

Catégories
Open-source Planet-libre Systeme Web

MetaGlances, une interface pour les gouverner tous…

Depuis la version 1.5 de Glances et la mise à disposition d’une API au format JSON XML/RPC, l’écosystème autour de Glances grandit petit à petit. Un des premier projet à avoir vu le jour est MetaGlances, une interface Web « responsive » permettant de centraliser la gestion de ses serveurs Glances.

metaglances

Développée par Laurent Spinelli (aka spin0us) et distribuée sous licence GPL version 3, cette interface s’installe en quelques commandes sur un serveur Web et permet grâce à un mélange de scripts PHP (pour l’interface JSON XML/RPC avec les serveurs Glances) et HTML/JavaScript/JQuery (pour l’UI):

  • d’ajouter un nombre illimité de machines à surveiller (ces machines n’ayant comme seul pré-requis d’avoir le Glances serveur lancé et accessible et peut donc surveiller de machines GNU/Linux, BSD, Mac OS ou Windows)
  • de visualiser les statistiques (pour l’instant limités à la CPU, mémoire, charge, débits des interfaces réseau, entrées/sorties disques et espaces disponibles sur les systèmes de fichiers)
  • de sauvegarder votre liste de serveurs à surveiller sur un compte « cloud » (enfin de pouvoir retrouver sa configuration d’une machine à l’autre) 
  • de disposer d’une interface « responsive » donc qui s’adapte à votre navigateur (par exemple un screenshot de MetaGlances dans un navigateur Chromium sous Ubuntu puis dans un même navigateur Chromium sur un iPhone 4)

capture_069
mg-ihone

 

Installer son propre serveur MetaGlances

Si vous disposez d’un serveur Web opérationnel (sinon vous pouvez toujours utiliser ce script d’installation automatique de Nginx) avec par exemple pour racine /var/www alors l’installation nécessite la saisie des commandes suivantes:

cd /var/www
sudo git clone https://github.com/spin0us/MetaGlances
sudo mkdir -p /var/www/MetaGlances/cache/config /var/www/MetaGlances/cache/data
sudo chown -R www-data:www-data /var/www/MetaGlances

Puis saisir l’URL de votre serveur MetaGlances: http://nomdevotreserveur/MetaGlances

La configuration de MetaGlances est centralisé dans le fichier /var/www/MetaGlances/config.php.

MetaGlances est en cours de développement. Pour mettre à jour votre serveur avec la dernière version, il faudra saisir les commandes:

cd /var/www/MetaGlances
sudo git pull
sudo chown -R www-data:www-data /var/www/MetaGlances

Ou tester directement en ligne !

J’ai installé MetaGlances sur un de mes serveurs. Vous pouvez donc directement superviser vos machines disposant d’une interface IP publique et sur lesquelles Glances serveur est lancé (je vous conseille de lancer Glances en configurant un mot de passe et si possible en filtrant à l’aide d’un Firewall les accès entrant venant de mon serveur).

Pour tester MetaGlances cliquez sur le lien suivant: http://metaglances.nicolargo.com

Attention: ce serveur MetaGlances est uniquement mis à disposition pour tester MetaGlances. Ne pas s’en servir pour en production, il peut être arrêté  mis à jour ou déplacé sans préavis.

Utilisation de MetaGlances

Grâce au travail de Laurent, l’utilisation est assez intuitive. Je vous la laisse découvrir dans cette série de screenshots:

capture_070Ajout d’un serveur à superviser

capture_071Saisie des informations sur le serveur Glances

capture_072Affichage de la liste des serveurs

capture_073Affichage des statistiques d’un serveur Glances

capture_074Accès au cloud MetaGlances

capture_075Création d’un compte MetaGlances

capture_076Sauvegarde ou restauration de la liste des serveurs Glances

Nous avons besoin de VOUS !

MetaGlances est en cours de développement et Laurent Spinelli, le créateur à besoin de bêta testeurs pour améliorer ce logiciel. Si vous rencontrez un bug ou que vous trouvez qu’il manque des fonctions, n’hésitez pas à le dire directement via la page suivante sur le GitHub officiel.

Perso, je suis fan de MetaGlances, il y a un bon potentiel pour en faire un outil simple de supervision système.

Vous en pensez quoi ?

Catégories
Open-source Planet-libre Systeme

Glances 1.6.1 est dans les bacs

glances-white-256Evolution pas si mineure que cela pour Glances, l’outil de supervision système, que je viens de publier en version 1.6.1. Cette version est sûrement la plus stable et la plus facile à faire évoluer (en prévision des futures raodmaps 1.7 puis 2.0). Un grand merci à Alessio Sergi, contributeur depuis maintenant pas mal de temps sur Glances et surtout Jon Renner pour cette version qui a effectué un gros et bon boulot.

Quoi de neuf ?

La liste complète est disponible dans le ChangeLog, mais on peut retenir:

  • le support multi utilisateur du fichier de configuration (il suffit pour cela de créer un fichier de configuration dans votre répertoire $HOME/.config/glances/)
  • Ajout de la touche ‘t’ pour afficher le trafic réseau sous la forme upload + download
  • Ajout de la touche ‘u’ pour afficher le trafic réseau non pas en débit mais en cumulé
  • Ajout de l’option -z (ou –nobold) pour améliorer l’affichage de Glances dans un terminal avec un style solarized
  • Amélioration de la précision d’affichage des statistiques
  • Prise en compte du nombre de CPU dans le calcul de la limite CPU des process
  • Amélioration de l’API pour y intégrer le temps depuis la dernière mise à jour des stats afin de pouvoir calculer des débits cotés clients
  • Amélioration de l’affichage de l’aide
  • Reprise totale du code pour ignorer les versions de PsUtil inférieure à la 0.4.1 (gros boulot d’Alessio !)
  • Ajout d’un script d’init (Debian) pour le serveur Glances
  • et bien sûr un bon nombre de correction de bug…

Glances 1.6.1

 

Comment mettre à jour | installer Glances

Toutes les informations sont disponibles sur la page officielle de Glances mais pour ceux qui ont installé une ancienne version via Pypi, il suffit de saisir la commande:

sudo pip install --upgrade Glances

D’autres nouvelles de l’écosystème Glances

Ce que j’aime avec Glances, c’est l’écosystème qui est en train de se construire autour de ce projet. J’ai d’ailleurs en préparation un billet pour parler de tous les projets gravitant dans cette sphère. Mais dès aujourd’hui je voudrais en mentionner deux:

Pour finir

Je suis bien sûr preneur de vos remarques/avis sur cette nouvelles version de Glances.

Les commentaires ci-dessous sont fait pour cela 🙂

Catégories
Developpement Open-source Planet-libre Systeme

Package d’installation pour Glances sous Windows

Grâce au travail de Nicolas Bourges, Glances dispose désormais d’un installeur pour sa version Windows. Vous pouvez donc installer Glances 1.6.1 en version 32 ou 64 bits sans avoir à installer les pré-requis (Python, librairie PsUtil…) puisque tout est « packagé » dans le binaire.

On commence par télécharger le programme d’installation:

download
Télécharger Glances 1.6.1 en version 64 bits
(ou en version 32 bits)

MD5sum

glances-1.6.0-x64.exe                         a347ec5097d6d4d5039c7233872757a8

glances-1.6.0-x86.exe                         13d5be664599f80152f8f1ae47400576

Puis on se laisse guider dans le wizard d’installation qui va mettre, par défaut, le binaire Glances.exe dans le répertoire C:\Program Files\Glances puis créer un raccourci sur votre bureau.

En cliquant sur ce raccourci, Glances va se lancer automatiquement en mode serveur. Pour ajouter d’autres paramètres (comme le mot de passe) il suffit de modifier ce raccourci pour y ajouter les options voulues (par exemple -P <motdepasse>).

Il ne vous reste plus qu’à revenir sur un vrai OS (ndlr: Nicolargo, tu me copieras 100 fois « Je ne trollerai plus. ») puis à lancer la commande:

glances -c <addresse IP machine Windows>

glancesonwin7

Et hop, vous pouvez maintenant surveiller vos machines Windows en une ligne de commande !

Catégories
Open-source Planet-libre Systeme

Glances 1.6: Les nouveautés

Ce week-end, j’ai mis en ligne la dernière version de Glances. Cette version 1.6 apporte son lot de correction de bugs et de nouveautés que nous allons détailler dans ce billet.

On commence par un aperçu de l’interface de Glances 1.6 dans un terminal:

Glances 1.6

Mise en place d’un fichier de configuration

Jusqu’à la version précédente, il était impossible pour l’utilisateur de fixer lui même les limites déclenchant les alertes. La version 1.6 introduit donc un fichier de configuration permettant de répondre à ce besoin. Sur un système GNU/Linux, le fichier de configuration par défaut se trouve dans dans le répertoire /etc/glances et se  nomme glances.conf.

C’est un fichier au format texte de la forme: https://gist.github.com/4647457

Comme vous pouvez le voir il défini pour chaque section de statistique (CPU, LOAD, MEM…) les limites de type Careful (à surveiller), Warning (à traiter), Critical (à traiter en urgence). Les limites utilisées sont maintenant accessibles dans la fenêtre d’aide sous la forme d’un tableau:

capture_015

Je pense dans les prochaines versions utiliser ce même fichier pour configurer d’autres aspects de Glances, comme les couleurs ou l’emplacement des statistiques.

Amélioration du mode client/serveur

La version 1.5 de Glances introduisait un mode client/serveur basée sur XMLRPC pour surveiller à parti d’un client local une machine distante (GNU/Linux, BSD, MAC OS X et même Windows).

En rapport avec l’ajout d’un fichier de configuration, j’ai modifié le mode client/serveur  pour que le serveur envoie son jeu de limite au client. Ainsi, il est possible à partir d’une même machine cliente de superviser plusieurs serveurs ayant des limites différentes.

Autre nouveauté attendue par pas mal d’utilisateurs: l’ajout « d’un peu » de sécurité pour l’accès à un serveur Glances. J’ai ainsi ajouté le tag -P password (notez le P majuscule) permettant de définir un mot de passe à partager entre le client et le serveur. Ce n’est bien sûr pas une sécurité totale car le client de communication TCP/JSON n’est pas chiffré. Pour encore plus de sécurité le mieux est de passer par un tunnel SSH (il existe pas mal de tutos sur le sujet sur la toile).

Débits d’Entrées/Sorties (IO Rate) par processus

Lorsque que la taille de votre fenêtre le permet, Glances permet d’afficher les débits (en octets/seconde) des processus. Ainsi, si une alerte est détectée sur la valeur CPU iowait alors les processus seront automatiquement classé par débit d’entrée/sortie.

capture_012

Attention, ces valeurs sont uniquement accessible sous GNU/Linux et par un utilisateur disposant des droits administrateurs.

Modification de l’affichage par CPU

Lors de l’activation de l’affichage par CPU (touche ‘1‘) et si l’information est disponible sur votre système d’exploitation, alors Glances affiche les statistiques de CPU iowait en lieu et place de CPU nice:

capture_016

Cette information peut être utile si des processus perdent du temps lors des accès disques. C’est un indicateur trsè important pour la supervision des serveurs (lire le très bon billet de ScoutApp sur le sujet).

Amélioration de l’affichage du type de tri des processus

Je trouvais que l’affichage du type de tri sur les processus (automatique vs manuel) n’était pas clair. J’ai donc modifié celui-ci pour afficher clairement si:

on est en tri automatique ou manuel:

capture_018

capture_017

puis de voir quel est le critère de tri dans le colonne (souligné en mode automatique, en gras pour le mode manuel):

capture_020
capture_019

Mise à jour de l’API

Dernier point pour cette version, j’ai ajouté une nouvelle interface à l’API pour récupérer les limites du serveur via getAllLimits (méthode RCP).

Installation et mise à jour de Glances

Convaincu par cette nouvelle version ?

Il est donc temps de mettre à jour votre installation. Deux solutions:

  • attendre que les packets managers fassent leur boulot pour votre distribution favorite
  • lire la documentation officielle pour mettre à jour vous même votre Glances

J’attend vous retours 🙂

Quelques liens pour finir:

Catégories
Developpement Open-source Planet-libre

Besoin de bêta testeurs pour Glances 1.6

Glances 1.6 est en plein développement. Une version bêta vient d’être mise à disposition sur le GitHub officiel. J’ai donc besoin de VOUS pour tester, trifouiller, charger cette version avant sa publication. Je prend en charge de mon coté les tests sous Ubuntu et Debian mais je n’ai pas le temps de mener tous les tests sur les autres distributions et OS.

ineedyou

Comment tester ?

Le plus simple pour tester cette version sans casser son installation existante est de suivre la procédure donnée dans cette page du Wiki pour GNU/Linux (sous Windows, il faut au préalable installer quelques logiciels).

Si vous rencontrez un bug, merci de suivre cette procédure pour me le remonter.

Quoi tester ?

Un peu tout… C’est à dire dans un premier temps un lancement de Glances en mode standalone:

~/tmp/glances/glances/glances.py

En mode standalone avec le module sensor actif (si vous avez lm-sensors sur votre OS):

~/tmp/glances/glances/glances.py -e

En chargeant le nouveau fichier de configuration qui permet de changer les limites des alertes (c’est une des grosses nouveauté de cette version):

~/tmp/glances/glances/glances.py -C ~/tmp/glances/glances/conf/glances.conf

Note: vous pouvez bien-sur modifier le fichier de configuration (glances.conf) pour l’adapter à vos besoins.

Puis en mode client/serveur en lançant d’abord le serveur:

~/tmp/glances/glances/glances.py -s

Puis le client (sur la même machine):

~/tmp/glances/glances/glances.py -c localhost

Besoin de qui ?

Une liste non exhaustive de bêta-testeurs dont j’ai besoin et qui utilisent les systèmes suivants:

  • Arch Linux
  • Centos
  • Redhat
  • Gentoo
  • FreeBSD
  • NetBSD
  • OpenBSD
  • Mac OS
  • Windows 7
  • Windows 8
  • n’importe quel OS sous Python 3.x

Merci d’avance à vous !

Catégories
Developpement Open-source Planet-libre Systeme

Glances 1.5.2: Les nouveautés

Il y a quelques jours, j’ai mis en ligne la dernière version stable de Glances, mon outil de supervision système, dont nous allons, dans ce billet, découvrir les nouveautés de cette version 1.5.2.

Screenshots

On commence par l’aperçu général de Glances 1.5.2 dans une console (80×24):

screenshot-console

et dans un terminal (terminator):

screenshot-wide

Les nouveautés

CPU

J’ai repris la zone de statistique CPU pour afficher les attributs suivants: IDLE, IOWait et IRQ. Ces informations sont affichés si l’espace est disponible.

cpu-wide

En cliquant sur la touche ‘1’, Glances va switcher vers l’affichage des statistiques CPU par « core ».

percpu

Mémoire

Grâce au travail d’Alessio Sergi, les statistiques concernant la mémoire sont agrémentés, si la place sur l’écran est disponible, des informations suivantes:

  • active: RAM actuellement utilisée
  • inactive: RAM non utilisée actuellement
  • buffers: zone mémoire pour les informations systèmes (par exemple metadata des systèmes de fichiers)
  • cached: zone mémoire de cache

Processus

Egalement avec la particition d’Alessio, nous avons repris la zone de processus qui affiche maintenant le résumé sur une seule ligne ainsi qu’une optimisation de l’espace.

capture_082

Sensors

Suite à une demande récurrente, j’ai également ajouté un module optionnel pour afficher les températures remontées par les capteurs. Pour cela Glances utilise la librairie Python nommé PySensors qu’il faut installer sur son système et qui va chercher les informations via LM-Sensors (qui doit bien sûr être installé et configuré sur votre système). A ma connaissance, seul les OS Linux sont compatibles.

Pour utiliser ce module, on doit commencer par installer PySensors:

sudo pip install pysensors

Puis on lance Glances avec l’option -e:

glances -e

Et voilà le résultat sur une machine avec 4 capteurs:

capture_083

Amélioration de l’interface RPC

L’interface RPC/JSON est la base du mode client serveur permettant de surveiller à distance une machine. Par exemple pour surveiller depuis la machine B l’état du système de la machine A, il faut:

A> glances -s

Puis

B> glances -c <@IP ou Nom de A>

On peut facilement voir que l’on regarde les statistiques d’une machine distante grâce au message en bas à gauche de l’écran:

capture_084

La liste exhaustive des méthodes RPC disponible est:

getSystem
{"linux_distro": "debian 6.0.6", "platform": "64bit", "os_name": "Linux", "hostname": "frodo", "os_version": "2.6.32-5-amd64"}

getCore
4

getCpu
{"iowait": 0.32641336989226583, "system": 0.26113069591476262, "idle": 97.401749576581707, "user": 1.9845932889502962, "irq": 0.0, "nice": 0.0}

getLoad
{"min1": 0.0, "min5": 0.059999999999999998, "min15": 0.01}

getMem
{"inactive": 1631744000, "cached": 1974865920, "used": 1384603648, "buffers": 585797632, "active": 1932537856, "total": 4080373760, "percent": 33.899999999999999, "free": 2695770112}

getMemSwap
{"total": 1069277184, "percent": 12.800000000000001, "free": 932536320, "used": 136740864}

getSensors
[]

getNetwork
[{"interface_name": "eth0", "rx": 169437, "tx": 2082677}, {"interface_name": "eth1", "rx": 0, "tx": 0}, {"interface_name": "lo", "rx": 385562, "tx": 385562}]

getDiskIO
[{"read_bytes": 0, "write_bytes": 0, "disk_name": "sda1"}, {"read_bytes": 24576, "write_bytes": 458752, "disk_name": "sda2"}, {"read_bytes": 0, "write_bytes": 0, "disk_name": "sda3"}]

getFs
[{"mnt_point": "/", "used": 22333382656, "device_name": "/dev/sda2", "avail": 910442115072, "fs_type": "ext4", "size": 982693486592}, {"mnt_point": "/boot", "used": 24039424, "device_name": "/dev/sda1", "avail": 164789248, "fs_type": "ext4", "size": 199108608}, {"mnt_point": "/dev", "used": 94208, "device_name": "udev", "avail": 2034892800, "fs_type": "tmpfs", "size": 2034987008}, {"mnt_point": "/lib/init/rw", "used": 0, "device_name": "tmpfs", "avail": 2040184832, "fs_type": "tmpfs", "size": 2040184832}]

getProcessCount
{"running": 1, "total": 143, "sleeping": 142}

getNow
"2012-12-30 12:13:45"

Installation et mise à jour

Le mieux est de suivre la procédure adaptée à votre système en consultant le site officiel de Glances ou vous pourrez également consulter la documentation complète.

Contributeurs ? J’ai besoin de vous !

En plus de toutes les remontées de bug / demandes d’améliorations que vous pouvez effectué via cette interface Web sur le GitHub officiel du projet, j’aurai également besoin de contributeurs pour:

  • maintenir le PPA officiel du site et proposer des versions packagées de Glances pour Ubuntu et ses forks (juste pendant une période temporaire vu que Glances est maintenu officiellement dans Debian Sid et devrait donc être intégré de base dans la prochaine version d’Ubuntu)
  • maintenir un packaging « all in one » de Glances pour Windows 32 bits et 64 bits (c’est à dire en suivant la procédure d’installation sur le site officiel et en utilisant le module PyInstaller pour générer un binaire). Je pourrai ensuite héberger ces binaires sur mon espace Amazon S3.
  • participer au développement de la prochaine version de Glances, j’ai nommé la 1.6 dont la roadmap, en cours de conception, est disponible ici.

Il ne me reste plus qu’à vous souhaitez une bonne fin d’année 2012 !

See you soon on the moon.

Catégories
Nagios Open-source Systeme

CheckGlances ou la rencontre de Glances et de Nagios

Ce billet a comme objectif de présenter mon dernier développement qui est un plugin Nagios|Shinken pour récupérer des informations systèmes sur des machines hôtes faisant tourner Glances.

Je vous présente donc CheckGlances.py.

Quoi ?

CheckGlances est un plugin compatible avec Nagios et ses forks (Icinga, Centreon…) / ré-implémentations (Shinken). Il respecte au maximum les spécifications données par Nagios.

Développé en Python, il permet d’aller récupérer les statistiques d’un serveur Glances (c’est à dire un glances lancée avec l’option -s) via un lien XML RCP sur HTTP.

Pourquoi ?

Le principal avantage de cette solution est que Glances se base sur une librairie Python nommé PsUtil (pour la récupération des statistiques) et qui a le bon goût d’être multi-plateforme. On a donc un plugin permettant de manière unique de récupérer les statistiques sur des hôtes GNU/Linux, BSD, Mac OS ou Windows.

Un autre avantage est l’ouverture de ce système à des statistiques plus fines. Bien que cette première version se limite à CPU, charge, mémoire et swap. CheckGlances, pourra à terme remonter vers votre serveur de supervision toutes les données traitées par Glances (débit des interfaces réseaux, disk IO, processus, température…).

Comment ?

Je ne vais pas copier/coller la documentation qui se trouve sur le site officiel mais l’installation se fait comme pour n’importe quel autre plugin et dépend donc de votre serveur de supervision et de sa configuration.

Il est également possible de tester le plugin en ligne de commande.

Voici quelques exemples (en partant sur Glances server est lancé sur votre machine locale):

CPU

./checkglances.py -H localhost -s cpu
CPU consumption: 2.96% | 'percent'=2.96 'kernel'=0.73 'iowait'=0.20 'idle'=97.04 'user'=1.89 'irq'=0.00 'nice'=0.00

 LOAD

./checkglances.py -H localhost -s load
LOAD last 5 minutes: 0.22% | 'min1'=0.13 'min5'=0.22 'min15'=0.29

MEM

./checkglances.py -H localhost -s mem
MEM consumption: 59.50% | 'used'=3411509248.00 'cache'=1071792128.00 'total'=3934547968.00 'percent'=59.50 'free'=523038720.00

SWAP 

./checkglances.py -H localhost -s swap
SWAP consumption: 3.70% | 'used'=150159360.00 'total'=4080005120.00 'percent'=3.70 'free'=3929845760.00

Le futur…

Il reste encore pas mal de travail du coté de Glances pour proposer une interface XML RCP industrialisable. En effet, outre le fait que seules quelques statistiques sont remontées, il n’y a pour l’instant pas de sécurité. C’est donc une solution qui est utilisable sur un réseau local mais pas dans une architecture Internet. Mais promis, l’authentification client / server est prévue dans la prochaine version de Glances.

Comme toujours, je suis preneur de toutes les remarques, questions et retour de test sur ce nouvel outil.

 

Catégories
Open-source Planet-libre Systeme

Glances 1.5 est arrivé

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:

# apt-get install python-pip build-essential python-dev
# pip install glances

Mise à jour:

# pip install -- upgrade glances

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:

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

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:

$ glances -v
Glances version 1.5

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

$ glances

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:

server$ glances -s
Glances server is running on 0.0.0.0:61209

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

client$ glances -c server
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).