Catégories
Open-source Systeme

Les nouveautés de Glances 2.3

Glances vient de sortir en version 2.3. Cette version propose un grand nombre de nouveautés que nous allons détailler dans cet article. Pour installer ou mettre à jour Glances dans cette dernière version, je vous conseille la lecture de la documentation officielle.

Attachez vos ceintures, c’est parti pour le tour d’horizon…

Le plugin Docker

Ce plugin est développé autour de la librairie Docker-Py et de fonctions maison pour permettre à l’utilisateur de superviser les conteneurs lancés sur la machine à superviser. Le fonctionnement est relativement simple. Glances va identifier, grâce à la librairie Docker-Py, la liste des conteneurs comme le ferait la commande ‘docker ps’. Pour chacun des conteneurs, il va ensuite aller chercher dans les répertoires /sys/fs/cgroup/cpuacct/docker et /sys/fs/cgroup/memory/docker les informations concernant leurs occupations CPU et mémoire.

Le plgin ne s’affiche que si la librairie Docker-Py est installé et si au moins un conteneur est lancé. Le résultat final est le suivant dans un interface console:

Sélection_294

Le plugin Docker est également dans l’interface Web de Glances.

Le plugin RAID

La supervision de l’état des contrôleurs RAID des machines est un point critique. Ainsi, cette nouvelle version de Glances inclus un nouveau plugin permettant de remplir cette tâche. Ce plugin ce base sur la librairie PyMdstat que j’ai créé pour l’occasion et qui est utilisable dans d’autres applications.

Le plugin ne s’affiche que si la librairie PyMdstat est installé et qu’un contrôleur RAID est détecté. Par exemple, sur un serveur avec un contrôleur RAID 5 avec 5 disques en bon état, Glances va afficher:

Par contre, dans le cas d’un contrôleur RAID 5 avec 6 disques et l’un de ces disques dans un état pas terrible:

Enfin, avec un contrôleur RAID 5 désactivé:

 

Le plugin RAID étant un extension du plugin FileSystem, il s’affichera, si nécessaire à gauche dans l’interface console/terminal ou Web de Glances.

Modules d’exports vers Statsd, InfluxDB et CSV

Une refonte complète du module d’exportation des données vers des briques externes a été codé dans cette nouvelle version. Ainsi, il est possible nativement, d’exporter les statistiques remontées par Glances dans un fichier à plat au format CSV et/ou dans des bases de données de type temps/valeurs comme Statsd ou InfluxDB.

Commençons par l’export CSV que l’on peut choisir en mode standalone, pour récupérer les statistiques de notre machine locale ou en mode client pour une machine distante. On doit utiliser l’option suivante:

glances --export-csv /tmp/glances.csv

On se retrouve avec un fichier /tmp/glances.csv qui va contenir toutes les stats disponibles (hormis les processus) parfaitement exploitable dans une bête feuille Excel ou via un script Python avec la fameuse librairie Panda:

load_cpucore,load_min1,load_min5,load_min15,memswap_used,memswap_percent,memswap_free,memswap_sout,memswap_total,memswap_sin,diskio_sda2_key,diskio_sda2_time_since_update,diskio_sda2_read_bytes,diskio_sda2_write_bytes,diskio_sda2_disk_name,diskio_sda3_key,diskio_sda3_time_since_update,diskio_sda3_read_bytes,diskio_sda3_write_bytes,diskio_sda3_disk_name,diskio_sda1_key,diskio_sda1_time_since_update,diskio_sda1_read_bytes,diskio_sda1_write_bytes,diskio_sda1_disk_name,fs_/_mnt_point,fs_/_used,fs_/_percent,fs_/_free,fs_/_device_name,fs_/_fs_type,fs_/_key,fs_/_size,fs_/boot/efi_mnt_point,fs_/boot/efi_used,fs_/boot/efi_percent,fs_/boot/efi_free,fs_/boot/efi_device_name,fs_/boot/efi_fs_type,fs_/boot/efi_key,fs_/boot/efi_size,mem_available,mem_used,mem_cached,mem_percent,mem_free,mem_inactive,mem_active,mem_total,mem_buffers,network_lo_tx,network_lo_cumulative_rx,network_lo_rx,network_lo_cumulative_cx,network_lo_time_since_update,network_lo_cx,network_lo_cumulative_tx,network_lo_key,network_lo_interface_name,network_docker0_tx,network_docker0_cumulative_rx,network_docker0_rx,network_docker0_cumulative_cx,network_docker0_time_since_update,network_docker0_cx,network_docker0_cumulative_tx,network_docker0_key,network_docker0_interface_name,network_wlan0_tx,network_wlan0_cumulative_rx,network_wlan0_rx,network_wlan0_cumulative_cx,network_wlan0_time_since_update,network_wlan0_cx,network_wlan0_cumulative_tx,network_wlan0_key,network_wlan0_interface_name,processcount_running,processcount_total,processcount_thread,processcount_sleeping,cpu_softirq,cpu_iowait,cpu_system,cpu_guest,cpu_idle,cpu_user,cpu_guest_nice,cpu_irq,cpu_total,cpu_steal,cpu_nice
4,0.18,0.2,0.23,0,0.0,8490315776,0,8490315776,0,disk_name,1,933888,413696,sda2,disk_name,1,0,0,sda3,disk_name,1,0,0,sda1,/,145566900224,59.9,97453883392,/dev/sda2,ext4,mnt_point,243020783616,/boot/efi,3510272,0.7,532295680,/dev/sda1,vfat,mnt_point,535805952,6620909568,1652637696,1202855936,20.0,6620909568,1018507264,1797070848,8273547264,204804096,200,356764,200,713528,1,400,356764,interface_name,lo,0,0,0,0,1,0,0,interface_name,docker0,0,21354827,0,26332988,1,0,4978161,interface_name,wlan0,1,200,477,199,0.0,2.2,13.3,0.0,33.3,51.1,0.0,0.0,66.7,0.0,0.0
4,0.17,0.2,0.23,disk_name,3.128045082092285,36864,1003520,sda2,disk_name,3.128045082092285,0,0,sda3,disk_name,3.128045082092285,0,0,sda1,/,145566859264,59.9,97453924352,/dev/sda2,ext4,mnt_point,243020783616,/boot/efi,3510272,0.7,532295680,/dev/sda1,vfat,mnt_point,535805952,6627594240,1645953024,1202880512,19.9,6627594240,1018691584,1789747200,8273547264,204951552,1260,358024,1260,716048,3.131376028060913,2520,358024,interface_name,lo,0,0,0,0,3.131376028060913,0,0,interface_name,docker0,10241,21367420,12593,26355822,3.131376028060913,22834,4988402,interface_name,wlan0,1,200,477,199,0.1,0.5,0.5,0.0,95.3,3.6,0.0,0.0,4.7,0.0,0.0
4,0.17,0.2,0.23,0,0.0,8490315776,0,8490315776,0,disk_name,3.1066739559173584,4096,1376256,sda2,disk_name,3.1066739559173584,0,0,sda3,disk_name,3.1066739559173584,0,0,sda1,/,145566867456,59.9,97453916160,/dev/sda2,ext4,mnt_point,243020783616,/boot/efi,3510272,0.7,532295680,/dev/sda1,vfat,mnt_point,535805952,6626533376,1647013888,1202917376,19.9,6626533376,1018888192,1790480384,8273547264,205172736,509,358533,509,717066,3.1057980060577393,1018,358533,interface_name,lo,0,0,0,0,3.1057980060577393,0,0,interface_name,docker0,4009,21383069,15649,26375480,3.1057980060577393,19658,4992411,interface_name,wlan0,1,199,476,198,0.0,0.6,0.6,0.0,93.9,4.9,0.0,0.0,6.1,0.0,0.0

Plus fun et moderne, l’export vers des bases de données NoSQL de type temps/valeurs. Pour l’instant, Glances supporte les implémentations Statsd et InfluxDB. Par exemple, pour exporter les statistiques vers un serveur InfluxDB, il faut dans un premier temps éditer le fichier de configuration de Glances.

Note: pour connaître l’emplacement du fichier de configuration de Glances utilisé, il suffit de consulter le fichier de log (par défaut /tmp/glances.log). Il est aussi possible de forcer l’utilisation d’un fichier de configuration spécifique avec l’option -C.

Par exemple, pour utiliser un serveur InfluxDB qui tourne sur la machine locale (localhost), sur le port TCP par défaut (8086) avec l’utilisateur/password (root/root) et la base de donnée nommée glances, il suffit d’ajouter la section suivante:

[influxdb]
host=localhost
port=8086
user=root
password=root
db=glances

On lance ensuite Glances avec l’option:

glances --export-influxdb

Et magie de la technologie moderne:

Déclenchement d’actions sur alerte

Réclamée depuis un certain temps par les utilisateurs, cette nouvelle fonction permet de déclencher des alertes pour n’importe quelle alarme levée par Glances. Par exemple, si vous voulez être prévenu par mail quand l’espace disque disponible devient critique, il suffit d’éditer le fichier de configuration de la manière suivante:

[fs]
careful=20
warning=70
critical=90
critical_action=mail -s "Disk almost full..." user@domain.com

Encore mieux, Glances supporte les mustaches {{…}} et permet donc d’utiliser les variables disponibles dans les API pour personnaliser les actions. Ainsi, pour préciser le nom du disque et le pourcentage utilisé, il suffit de changer la configuration de la manière suivante:

[fs]
careful=20
warning=70
critical=90
critical_action=mail -s "Disk {{mnt_point}} almost full: {{percent}}%" user@domain.com

Note: cette fonction se base sur la librairie Pystache.

Support des mots de passe dans le mode browser

La grande nouveauté de la version précédente de Glances (la 2.2) était l’apparition du mode browser permettant à partir d’un client unique de superviser plusieurs serveurs. Il est maintenant possible d’accéder à des serveurs protégés par des mots de passes.

Sélection_295

Note: il faut obligatoirement que le client (celui qui lance –browser) et les serveurs (-s) soient à minima dans la version 2.3 pour que cette fonction marche correctement.

Amélioration de l’interface Web

Enfin pour finir en beauté ce panorama des nouveautés de cette version 2.3 je voulais signaler le remarquable travail effectué par Nicolas Hart sur la refonte de l’interface Web avec notamment un optimisation de l’affichage (« responsive design »):

glances-responsive-webdesign

Nicolas travaille en ce moment avec Sylvain Mouquet sur la refonte complète de l’interface Web pour passer sur des technologies dynamiques (utilisation d’AngularJS coté client). Cela devrait normalement arriver dans la prochaine version (Glances 2.4).

J’espère que cette version de Glances répondra à vos besoins. N’hésitez pas à laisser un petit message pour partager avec nous comment vous utilisez Glances au quotidien et également proposer des améliorations.

Catégories
Blog

Glances 2.2 a besoin de vous

L’activité sur ce blog étant inversement proportionnelle à mon activité sur le logiciel Glances, vous pouvez, je l’espère, comprendre le peux d’activité sur ce site. Le développement de la future version 2.2 de Glances me prends les quelques temps libres qui me reste. Je fais donc appel à vous, chers lecteurs, pour m’aider à valider et trouver les derniers bugs dans cette version en cours de développement.

Quoi de neuf ?

La version 2.2 apportera, en plus de son lots de corrections de bugs les fonctionnalités suivantes:

  • un nouveau mode nommé « browser » (option –browser) permettant de superviser un ensemble de serveurs Glances ou SNMP à partir d’un point central
  • une vu en arbre pour les processus avec l’option –tree
  • amélioration de la fonction de tracé de graphique initialisé dans la version 2.1 de Glances
  • ajout du raccourci ‘F’ et de son option –fs-free-space pour afficher l’espace libre en lieu et place de l’espace utilisé
  • ajout du raccourci ‘2’ et de son option (–disable-left-sidebar) pour cacher la sidebar gauche et donc afficher tout l’espace du bas de l’écran avec les processus
  • ajout du raccourci ‘t’ pour trier les processus en fonction du temps CPU (« CPU times »)

C’est surtout sur la fonction « browser » que j’ai besoin de vous. En effet, je l’ai testé dans un environnement limité et je suis à la recherche d’administrateur système avec un bon petit parc de machines pour effectuer une validation plus complète.

Focus sur le mode browser

Ce nouveau mode permet donc de lancer Glances en tant que « super » client qui va afficher dans une première fenêtre la liste des serveurs Glances détectés sur son réseau ou configuré dans le fichier de configuration.

Sélection_251

Le mode de détection automatique repose sur le protocole Zeroconf qui fonctionne en client/serveur multicast. Il est nécessaire que les clients et les serveurs soit dans la version 2.2 de Glances (voir la procédure d’installation dans le chapitre suivant).

Remarque sur le protocole Zeroconf: Qui dit multicast, dit une détection uniquement sur le réseau local. En clair, votre « super » client Glances ne verra que les serveurs sur le même réseau Ethernet (à moins que vos routeurs ne soient compatibles avec le routage multicast).

En plus de ce mode dynamique (qui est bien sur désactivable à la fois coté client mais aussi coté serveur), il est possible de configurer une liste de serveurs dans le fichier de configuration de Glances (voir exemple ici).

Une fois la liste des serveurs affiché, il suffit de cliquer sur la touche ‘ENTER’ pour visualiser les statistiques de la machine (en clair, lancer le client Glances classique sur le serveur sélectionné).

Ce nouveau mode, très demandé par les utilisateur est en phase de développement et est susceptible d’évoluer dans les prochaines versions. Je suis d’ailleurs à l’écoute de vos remarques sur cette fonction.

Comment tester la version 2.2 de Glances ?

Je vous propose de simplement lire le Wiki officiel (en cliquant ici) qui va vous guider pour installer cette version de développement (bêta) sur vos machines sans « casser » le Glances existant.

D’avance merci !

PS: faite tourner le billet 🙂

Catégories
Open-source Planet-libre Systeme

Voici Glances 2.1 qui pointe son nez

La nouvelle version de Glances vient d’être publiée. En voici les nouveautés.

Comment installer Glances 2.1 ?

La première solution et la plus simple est d’utiliser le script d’autoinstall (uniquement fonctionnel pour certaines distribution GNU/Linux):

curl -L http://bit.ly/glances | /bin/bash

ou alors en consultant la documentation.

Amélioration de l’affichage des processus

Cette version de Glances apporte les fonctionnalités suivantes pour l’affichage des processus dans Glances:

  • possibilité d‘appliquer un filtre (sous la forme d’une expression régulière) sur le nom et la ligne de commande des processus à afficher. Pour cela, il suffit d’appuyer sur la touche ENTREE puis de saisir le filtre. Par exemple, le filtre firefox va afficher le ou les processus du navigateur Firefox tandis que le filtre .*firefox.* va afficher tous les programmes ou le mot clé Firefox apparaît dans la ligne de commande (à noter que cette nouvelle fonction est, pour l’instant, uniquement disponible dans le mode standalone de Glances).Sélection_229
  • informations complémentaire pour le ‘top process’ (le processus que Glances juge le plus consommateur de ressources): CPU affinity, extended memory information (shared, text, lib, datat, dirty, swap), openned threads/files and TCP/UDP network sessions, IO nice level (à noter que cette nouvelle fonction est, pour l’instant, uniquement disponible dans le mode standalone de Glances).Sélection_230
  • optimisation du nombre de processus surveillés par Glances: dans les anciennes versions, Glances recupérait l’ensemble des statisiques pour tous les processus (même ceux qui n’étaient pas affichés). Dans cette version le nombre de processus est configurable via la clé de configuration max_processes du fichier de configuration (par défaut top 10) .Cette version apporte donc un gain de footprint CPU d’environ 15% à 30%:Sélection_235Ainsi, pour augmenter à 20 le nombre de processus affiché, il suffit d’éditer le fichier de configuration de la manière suivante:
    [processlist]
    # Maximum number of processes to show in the UI
    # Note: Only limit number of showed processes (not the one returned by the API)
    # Default is 20 processes (Top 20)
    max_processes=20
    

    Note: si aucune configuration n’est faite alors Glances affichera tous les processus.

  • il est maintenant possible de basculer entre l’affichage actuel du nom du processus (qui affiche le nom court ou la ligne de commande complète selon la place disponible) et un mode ou uniquement le nom court est affiché. Pour cela, on peut utiliser le tag –process-short-name au niveau de la ligne de commande ou bien la touche ‘/’ pendant le fonctionnement de Glances.Mode shortname:
    Sélection_233 Mode standard:Sélection_232

 

Alias pour le nom des disques, interfaces réseau et sensors

Les noms des disques (sda par exemple sous Linux), des interfaces réseau (eth0, wlan0) et des sensors (temp1) n’est pas forcement très parlant pour un humain normalement constitué (!geek). Glances permet donc de configurer des alias qui seront affichés en lieu et place des noms « barbares ». La définition se fait dans le fichier de configuration:

[network]
# WLAN0 alias name
wlan0_alias=Wireless

[diskio]
# Alias for sda1
sda1_alias=IntDisk

[sensors]
# Sensors alias
temp1_alias=Motherboard 0
temp2_alias=Motherboard 1
core 0_alias=CPU Core 0
core 1_alias=CPU Core 1

Rien de bien compliqué. On doit utiliser la syntaxe: <nom barbare>_alias = <nom humain>.

Sélection_234

Cette fonction est surtout utile pour les utilisateurs de Windows ou les noms sont vraiment… comment dire… Windowsiens…

API RESTFull pour le serveur Web

Le serveur HTTP intégrant l’interface Web (option -w) disponible dans Glances depuis la version 2.0 ne disposait pas d’une API RESFull. C’est maintenant le cas. Il est donc possible à partir d’une application tierce de faire des requêtes du type suivant:

http://<serverglances>:61209/api/v2/mem

qui donnera une réponse HTTP avec un code 200 et:

{"available": 5071183872, "used": 3255848960, "cached": 1827352576, "percent": 39.1, "free": 5071183872, "inactive": 1388982272, "active": 3679604736, "total": 8327032832, "buffers": 477982720}

La documentation complète de l’API est disponible sur la page suivante dans le Wiki.

Fonction expérimentale de génération de graphes

J’ai ajouté dans cette version une fonction expérimentale (uniquement disponible dans le mode standalone de Glances) qui sera améliorée dans les prochaines versions en cas de demande de la part des utilisateurs. L’objectif de cette fonction est de générer des graphiques des statistiques (CPU, LOAD et MEM) quand l’utilisateur clique sur la touche ‘g’.  Concrètement, Glances va mémoriser les statistiques et les « grapher » en utilisant la librairy Matplotlib (qui doit être présente sur votre système).

Les graphes sont générés dans le répertoire /tmp:

ll /tmp/glances*.png
-rw-rw-r-- 1 nicolargo nicolargo 22911 août  31 16:09 /tmp/glances_cpu.png
-rw-rw-r-- 1 nicolargo nicolargo 19962 août  31 16:09 /tmp/glances_load.png
-rw-rw-r-- 1 nicolargo nicolargo 12059 août  31 16:09 /tmp/glances_mem.png

glances_mem glances_load glances_cpuEn appuyant sur la touche ‘r’, l’utilisateur peut ré-initialiser l’historique et donc repartir avec un nouveau graphe (attention pour l’instant les graphes sont écrasés à chaque appui sur le bouton ‘g’).

Des logs et un mode debug

Il manquait à Glances un vrai mode débug avec un fichier de log permettant de facilement identifier les problèmes d’utilisation et d’exécution de ce logiciel. C’est maintenant chose faite avec cette version 2.1 ou un gros travail a été fait sur la généralisation des message de logs standards et debug (en utilisant l’option -d au niveau de la ligne de commande).

Le fichier de log de Glances est disponible dans le fichier /tmp/glances.log, en voici un extrait en mode normal (sans le -d):

2014-08-31 15:52:00,312 -- INFO -- Start Glances 2.1_RC7
2014-08-31 15:52:00,312 -- INFO -- CPython 2.7.6 and PSutil 2.1.1 detected
2014-08-31 15:52:00,316 -- INFO -- Read configuration file ./conf/glances-test.conf
2014-08-31 15:52:00,316 -- INFO -- Start standalone mode
2014-08-31 15:52:10,465 -- INFO -- Set process filter to firefox
2014-08-31 15:52:15,180 -- INFO -- Stop Glances

et en mode debug (-d):

2014-08-31 15:52:47,185 -- INFO -- Start Glances 2.1_RC7
2014-08-31 15:52:47,185 -- INFO -- CPython 2.7.6 and PSutil 2.1.1 detected
2014-08-31 15:52:47,190 -- INFO -- Read configuration file ./conf/glances-test.conf
2014-08-31 15:52:47,190 -- INFO -- Start standalone mode
2014-08-31 15:52:47,218 -- DEBUG -- Available plugins list: ['load', 'core', 'uptime', 'fs', 'monitor', 'percpu', 'mem', 'cpu', 'help', 'system', 'alert', 'psutilversion', 'memswap', 'diskio', 'hddtemp', 'processcount', 'batpercent', 'now', 'processlist', 'sensors', 'network']
2014-08-31 15:52:47,219 -- DEBUG -- Monitor plugin configuration detected in the configuration file
2014-08-31 15:52:47,220 -- DEBUG -- Limit maximum displayed processes to 20
2014-08-31 15:52:47,220 -- DEBUG -- Extended stats for top process is enabled (default behavor)
2014-08-31 15:52:53,140 -- DEBUG -- User enters the following process filter patern: firefox 
2014-08-31 15:52:53,140 -- INFO -- Set process filter to firefox
2014-08-31 15:52:53,140 -- DEBUG -- Process filter regular expression compilation OK: firefox
2014-08-31 15:52:57,344 -- INFO -- Stop Glances

Cette nouvelle fonction permettra, je l’espère, de facilité les rapports de bugs remontés dans GitHub.

Et pour finir…

En plus des corrections de bugs et amélioration diverses et variés, Glances 2.1 permet un affichage optimisé pour les tordus d’entre vous utilisant un fond blanc pour leur terminal (option –theme-white) ainsi que le support des routeurs Cisco et des serveurs VMWare ESXi pour le fallback SNMP en mode client/serveur.

Comme d’habitude, les bugs/demandes de fonctions sont à remonter dans GitHub en suivant cette procédure.

Merci à vous !

Catégories
Open-source Planet-libre Systeme

Glances version 2.0 est là

Après plusieurs mois de travail, la nouvelle version majeure de Glances vient d’être publié. L’objectif de ce billet est de faire une rapide présentation des nouveautés, un article plus complet est disponible sur LinuxFR.

Pour ceux d’entre vous qui ne connaissent pas encore Glances, c’est un logiciel permettant de superviser le plus simplement possible ses machines en disposant sur une seule et unique page (terminal ou interface Web) les informations importantes (CPU, mémoire, charge, processus…).

Il peut être utilisé dans des configurations différentes:

  • standalone: superviser la machine sur laquelle on se trouve à partir d’une interface Curse
  • client/serveur: superviser une machine distante à partir d’une interface Curse
  • serveur Web: superviser une machine distante à partir d’un navigateur Internet
  • API: accès aux statistique via une API XML/RPC

screenshot-wide

Comment installer cette nouvelle version ?

Le plus simple est de passer par le gestionnaire de paquet de Python (PiPy).

Pour une installation complète avec toutes les dépendances:

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

Note: selon votre configuration, il est peut être  nécessaire d’installer certains pré-requis avant de faire cette installation. Par exemple sur un système Debian/Ubuntu:

sudo apt-get install -y python-dev python-pip lm-sensors

Pour la mise à jour d’une version existante et l’installation des dépendances:

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

Les nouveautés…

Au niveau du code

La plus grande nouveauté n’est pas visible car c’est un refactoring complet du code avec notamment l’utilisation d’un système de plugins. Toutes les statistiques collectées par Glances sont des plugins. Le principal avantage de cette architecture est une rapidité de développement accrue pour les nouvelles fonctionnalités par rapport à la version précédente. Chaque plugin hérite de méthodes communes permettant de factoriser le code.

Cette version a été développée en suivant le workfow Git Flow et les prochains correctifs et nouvelles fonctions devront respecter ce processus (j’ai ajouté une page sur le sujet dans le Wiki).

Interface Curse

L’interface standalone a été optimisée pour afficher le maximum d’informations de la manière la plus lisible et dans un minimum d’espace. L’objectif principal et le but de Glance étant que le problème de performance d’une machine saute aux yeux.

Interface Web

A la suite de pas mal de demandes, Glances v2.0 intègre maintenant un mode serveur Web qui permet d’accéder simplement au statistique depuis n’importe quel navigateur Internet à travers une page HTML5/CSS3 (plus ou moins « Responsive Web Design » mais je suis pas un pro sur le sujet).

Pour lancer le mode serveur Web:

# glances -w

Bottle v0.12.7 server starting up (using WSGIRefServer())...
Listening on http://0.0.0.0:61208/
Hit Ctrl-C to quit.

Par exemple sur ma tablette Nexus 5, cela donne cela:

screenshot-web2

Le mode fallback SNMP

Dans le cas ou il n’est pas possible de lancer un serveur Glances sur une machine (problème de droit ou « appliance »), il est maintenant possible d’accéder à certaines statistiques via le protocole SNMP (limitation actuelle au mode SNMP v2/2c).

Quand vous lancez Glances en mode client, il va d’abord essayer de détecter un serveur Glances puis essayer le protocole SNMP:

# glances -c localhost

Info: Connection to Glances server failed. Trying fallback to SNMP...

C’est pour l’instant une fonction expérimentale qui ne fonctionne pas avec tous les agents SNMP. Des évolutions sont prévues dans les prochaines version et je suis à la recherche de contributeurs sur ce point (notamment pour un accès aux statistiques des machines Cisco et autres équipementiers réseau).

Sélection_213

Amélioration du fichier de configuration

Si vous utilisiez un fichier de configuration (notamment pour fixer vos propres limites au niveau des statistiques), il va falloir l’adapter pour cette nouvelle version. Un fichier par défaut se trouve sous GNU/Linux dans  /etc/glances/glances.conf. Je vous conseille de vous inspirer de ce fichier: https://github.com/nicolargo/glances/blob/master/conf/glances-monitor.conf.

Conclusion

En attendant que vous lisiez le billet sur LinuxFr, j’espère que cette mise en bouche vous a convaincu d’essayer cette nouvelle version.

J’attends vos avis avec impatiente !

Catégories
Developpement Open-source Reseau Systeme

Glances v2.0 RC – J’ai besoin de vous !

Cela fait maintenant plusieurs mois que je délaisse mon bébé blog pour me consacrer au développement de la version 2.0 de Glances. Avec l’aide d’Alessio Sergi, nous avons effectué un refactoring complet du code et apporté de nouvelles fonctions qui, je l’espère, vous serons utiles.

Sélection_175

Cependant, avant la mise à disposition officielle, j’ai besoin de vous pour tester la première Release Candidate (RC1). Le développement ayant été fait sous Ubuntu 14.04, je recherche donc des personnes de bonne volonté pour valider cette RC1 sur d’autres système d’exploitation: autres distributions GNU/Linux, BSD, Mac OS, Windows.

Comment tester Glances v2.0 RC1 ?

Le plus simple est de suivre les instructions de la page Wiki qui va vous permettre de tester cette nouvelle version sans impacter votre système existant (utilisation d’un environnement virtuel avec virtualenv).

Il est important de bien vérifier que l’on est sur la branche DEVELOP avant de lancer les tests suivants. Pour vérifier cela:

cd ~/tmp/glances
LANGUAGE=en_US.utf8  ~/glances-venv/bin/python -m glances -V

devrait afficher comme résultat:

Glances v2.0_RC1 with psutil v2.1.0

Quoi tester?

A vrai dire un peut tout…

Le mode standalone

Le plus simple est de commencer par lancer Glances en mode standalone (supervision de son propre système):

cd ~/tmp/glances
LANGUAGE=en_US.utf8  ~/glances-venv/bin/python -m glances -C ~/tmp/glances/conf/glances-monitor.conf

Votre terminal devrait afficher les statistiques (rafraîchissement par défaut de 3 secondes). En appuyant sur la touche ‘h’, vous obtiendrez une liste des différentes fonctions.

Mode client/serveur classique

Je vous propose ensuite de passer au mode client/serveur qui peut être testé sur une unique machine (le client et le serveur étant lancé sur la même machine) ou bien sur deux machines différentes.

On commence par lancer le serveur:

cd ~/tmp/glances
LANGUAGE=en_US.utf8  ~/glances-venv/bin/python -m glances -C ~/tmp/glances/conf/glances-monitor.conf -s

Puis le client:

cd ~/tmp/glances
LANGUAGE=en_US.utf8  ~/glances-venv/bin/python -m glances -C ~/tmp/glances/conf/glances-monitor.conf -c @IPSERVER

Votre terminal va alors afficher les statistiques du serveur.

Mode client/serveur SNMP

C’est une nouveauté de la version 2.0. Ce mode permet de lancer un client vers une machine ou le serveur Glances n’est pas lancé. Il va ainsi essayé de se connecter a un serveur SNMP (si celui-ci est installé sur votre serveur). Cette fonction est encore expérimentale et ne fonctionne correctement qu’avec des agents SNMP GNU/Linux.

Pour tester, il suffit de lancer le client:

cd ~/tmp/glances
LANGUAGE=en_US.utf8  ~/glances-venv/bin/python -m glances -C ~/tmp/glances/conf/glances-monitor.conf -c @IPSERVER

Votre terminal va alors afficher les statistiques minimale du serveur (par exemple, on a pas la liste des processus).

Sélection_176

Mode Web serveur

Egalement une nouveauté de la version 2.0, ce mode permet de lancer un serveur Glances qui va proposer une interface Web. Glances utilise pour cela le framework Bootle qui a déjà fait ses preuves dans de nombreux autres projets libres.

Pour lancer le serveur en mode Web, il faut saisir la ligne de commande suivante:

cd ~/tmp/glances
LANGUAGE=en_US.utf8  ~/glances-venv/bin/python -m glances -C ~/tmp/glances/conf/glances-monitor.conf -w

Puis pointer son navigateur Web préféré sur l’adresse suivante: http://<ip serveur>:61208/

Glances - Mozilla Firefox_177

Comment remonter un bug ou une demande d’amélioration ?

Il faut disposer d’un compte Github et de cliquer sur le lien suivant: Remonter un bug dans Glances.

Dans la description, faire systématiquement apparaître:

  • la version de Glances testée ( ~/glances-venv/bin/python -m glances -V)
  • votre environnement de test (système d’exploitation, hardware, version de Python…)
  • un descriptif le plus précis du problème et de la manière de le reproduire (en Anglais de préférence)

Je compte sur vous 🙂

Catégories
Developpement Open-source Planet-libre Reseau Systeme

Glances 1.7.4 est dans les bacs !

Nouvelle version pour Glances, l’outil de supervision système que je développe avec d’autres contributeurs depuis maintenant quelques années. On commence par le traditionnel screenshot du client en mode console:

capture_154

 

Installation et mise à jour

L’installation de Glances sur votre machine (Linux, Mac ou même Windows) se fait via la ligne de commande:

pip install glances

La mise à jour n’est pas plus compliquée:

pip install --upgrade glances

 Au chapitre des nouveautés

On commence par la modification de l’affichage de la ligne résumant l’état des processus. On a séparé la notion de  ‘tasks’ et de ‘threads’:

capture_155

Une nouvelle statistique au niveau de la CPU des machines GNU/Linux est affiché et disponible via l’API: la steal qui peut être utile de surveiller notamment si votre machine est virtuelle (plus d’information sur la mémoire steal en lisant ce très bon billet sur le sujet).

capture_157

On a également ajouté l’information d’uptime (temps écoulé depuis le dernier redémarrage de la machine). Cette information est disponible en haut à droite dans l’interface et bien évidement comme toutes les statistiques via l’API (methode getUptime).

capture_156

Il est maintenant possible, via le fichier de configuration de Glances de cacher certains disques ou interfaces réseau:

[iodisk]
# Define the list of hidden disks (comma separeted)
hide=sda2,sda5

[network]
# Define the list of hidden network interfaces (comma separeted)
hide=lo

Vous serez également heureux d’apprendre que Glances 1.7.4 consomme environ 10% de moins de CPU que la version précédente. En effet, certaines statistiques qui ne nécessite pas un rafraîchissement très fréquent sont maintenant mis en cache.

Enfin, un certain nombre de bugs ont été corrigés (voir la liste exhaustive ici).

Un grand merci aux contributeurs (Alessio en tête), aux packagers (qui vont avoir un peu de boulot) et aux bêta-testeurs !

En route pour la version Glances 2.0 (re-factoring complet, gestion par plugins…) !

Catégories
Developpement Open-source Planet-libre

Tu fais quoi ?

Un premier billet en forme d’excuse pour les lecteurs de ce blog.

En effet, depuis quelques temps, je ne suis pas très actif sur ce site. Le (vrai) boulot et la (vraie) vie ne me laissent que trop peu de loisirs. J’ai donc fait le choix de privilégier mes autres activités dans le domaine des logiciels libres.

En tête de gondole, Glances va bientôt sortir en version 1.7.4. Je suis d’ailleurs à la recherche de bêta testeurs de la version RC notamment sur les systèmes d’exploitation BSD, Mac OS et Windows (suivre cette procédure pour l’installer sur votre système sans impacter la version de Glances existante).

glances-1.7.4

Ensuite, le script Python SxxExx permet de récupérer via la ligne de commande les torrents de vos séries préférés (juste les torrents hein, car télécharger les séries est interdit par Monsieur Hadopi… paix à son âme). En gros, l’idée est de pouvoir lancer des recherches (seulement sur Piracy Bay pour l’instant) en fonction du nom de la série, de la saison, de l’épisode.

Voici quelques exemples:

$ sxxexx -t homeland -s 3 -e 10

Homeland S3E10 name is "Good Night"
Title:   Homeland S03E10 HDTV x264-ASAP [eztv]
Seeders: 3567
Magnet:  magnet:?xt=urn:btih:522b99e066bf97753a9c0
$ sxxexx.py -t "Breaking bad" -s 5 -a

Breaking Bad has 16 episodes in season 5
*******************************************************************************
Title:   Breaking Bad - The Complete Season 5 [BDRip-HDTV] + EXTRAS
Seeders: 2097
Magnet:  magnet:?xt=urn:btih:82eb1fbb413038dd551eb8c5d4f6a891ff2d190f&dn=Breaking+Bad+-+The+Complete+Season+5+%5BBDRip-HDTV%5D+%2B+EXTRAS&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.publicbt.com%3A80&tr=udp%3A%2F%2Ftracker.istole.it%3A6969&tr=udp%3A%2F%2Ftracker.ccc.de%3A80&tr=udp%3A%2F%2Fopen.demonii.com%3A1337
*******************************************************************************
Title:   Breaking Bad S05E16 REPACK HDTV x264-ASAP[ettv]
Seeders: 1928
Magnet:  magnet:?xt=urn:btih:24d076e1c0f041977346e7bbf4277ceccf1086b0&dn=Breaking+Bad+S05E16+REPACK+HDTV+x264-ASAP%5Bettv%5D&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.publicbt.com%3A80&tr=udp%3A%2F%2Ftracker.istole.it%3A6969&tr=udp%3A%2F%2Ftracker.ccc.de%3A80&tr=udp%3A%2F%2Fopen.demonii.com%3A1337
*******************************************************************************
...
$ sxxexx -t "how i met your mother" -s 9 -e 9 -d

How I Met Your Mother S9E9 name is "Platonish"
Title:   How I Met Your Mother S09E09 HDTV x264-2HD [eztv]
Seeders: 3631
Magnet:  magnet:?xt=urn:btih:11633c741fe5e0a0774c2222cfa6c05

J’utilise ce script en parallèle d’un autre projet libre: Witsub. Ce dernier permet de rechercher, également en ligne de commande (« fuck the gui ») les sous-titres des séries téléchargés.

 

Je participe également à d’autre développements. Je vous invite à suivre mon activité sur Github et à consulter la liste de mes repositories.

 

 

Catégories
Open-source Planet-libre

Supervision de son PC bureautique avec Glances

D’abord orienté vers la supervision de machines distantes, Glances permet également de surveiller l’ensemble des paramètres systèmes de ses machines bureautique. De plus, depuis sa version 1.7.2 , Glances offre une interface Curses sur l’ensembles des plateformes: GNU/Linux, BSD, Mac OS et même … MS Windows.

Il est en effet fréquent d’observer un ralentissement, voir un blocage de sa machine locale. Nous allons voir comment configurer puis utiliser Glances pour en trouver les causes et ainsi prendre les actions adéquates.

Configuration de Glances

Après installation de Glances sur son système (le plus simple étant de passer par PyPI), un fichier de configuration par défaut est disponible sous /etc/glances/glances.conf sous GNU/Linux (voir ici pour les emplacements sur les autres systèmes). Je vous conseille de copier ce fichier en local dans votre répertoire de configuration standard (~/.config/glances ou $XDG_CONFIG_HOME/glances).

mkdir -p ~/.config/glances
cp /etc/glances/glances.conf ~/.config/glances/

On peut ensuite éditer son fichier selon ses besoins: ~/.config/glances/glances.conf

Voici le fichier que j’utilise sur mon PC portable:

[cpu]
# Limits values for CPU user in %
# Defaults values if not defined: 50/70/90
user_careful=50
user_warning=70
user_critical=90
# Limits values for CPU system in %
# Defaults values if not defined: 50/70/90
system_careful=50
system_warning=70
system_critical=90
# Limits values for CPU iowait in %
# Defaults values if not defined: 40/60/80
# Not easy to tweek...
# Source: http://blog.scoutapp.com/articles/2011/02/10/understanding-disk-i-o-when-should-you-be-worried
#         http://blog.logicmonitor.com/2011/04/20/troubleshooting-server-performance-and-application-monitoring-a-real-example/
#         http://blog.developpeur-neurasthenique.fr/auto-hebergement-iowait-ma-tuer-1-2-vmstat-mpstat-atop-pidstat.html (FR)
iowait_careful=40
iowait_warning=60
iowait_critical=80

[load]
# Value * Core
# Defaults values if not defined: 0.7/1.0/5.0 per Core
# Source: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages
#         http://www.linuxjournal.com/article/9001
careful=0.7
warning=1.0
critical=5.0

[memory]
# Defaults limits for free RAM memory in %
# Defaults values if not defined: 50/70/90
careful=50
warning=70
critical=90

[swap]
# Defaults limits for free swap memory in %
# Defaults values if not defined: 50/70/90
careful=50
warning=70
critical=90

[temperature]
# Temperatures in °C for sensors
# Defaults values if not defined: 60/70/80
careful=60
warning=70
critical=80

[hddtemperature]
# Temperatures in °C for hddtemp
# Defaults values if not defined: 45/52/60
careful=45
warning=52
critical=60

[filesystem]
# Defaults limits for free filesytem space in %
# Defaults values if not defined: 50/70/90
careful=50
warning=70
critical=90

[process]
# Limits values for CPU per process in %
# Defaults values if not defined: 50/70/90
cpu_careful=50
cpu_warning=70
cpu_critical=90
# Limits values for MEM per process in %
# Defaults values if not defined: 50/70/90
mem_careful=50
mem_warning=70
mem_critical=90

[monitor]
# Define the list of processes to monitor
# *** This section is optionnal ***
# The list is composed of item (list_#nb <= 10)
# An item is defined:
# * description: Description of the processes (max 16 chars)
# * regex: regular expression of the processes to monitor
# * command: (optional) full path to shell command/script for extended stat
#            Use with caution. Should return a single line string.
# * countmin: (optional) minimal number of processes
#             A warning will be displayed if number of process < count
# * countmax: (optional) maximum number of processes
#             A warning will be displayed if number of process > count
list_1_description=Chromium browser
list_1_regex=.*chromium-browse.*
list_1_countmax=50
list_2_description=OpenVPN
list_2_regex=.*openvpn.*
list_2_countmin=1
list_3_description=Dropbox
list_3_regex=.*dropbox.*
list_3_countmin=1
list_3_command=dropbox filestatus ~/Dropbox

En plus des jeux de limites pour les alertes de CPU, de charge (LOAD) et de mémoire (MEM), je souhaiterai que l’on s’attarde un peu sur la section [monitor] qui permet de mettre en avant une liste de processus jugés importants.

[monitor]
# Define the list of processes to monitor
# *** This section is optionnal ***
# The list is composed of item (list_#nb <= 10)
# An item is defined:
# * description: Description of the processes (max 16 chars)
# * regex: regular expression of the processes to monitor
# * command: (optional) full path to shell command/script for extended stat
#            Use with caution. Should return a single line string.
# * countmin: (optional) minimal number of processes
#             A warning will be displayed if number of process < count
# * countmax: (optional) maximum number of processes
#             A warning will be displayed if number of process > count
list_1_description=Chromium browser
list_1_regex=.*chromium-browse.*
list_1_countmax=50
list_2_description=OpenVPN
list_2_regex=.*openvpn.*
list_2_min=1
list_3_description=Dropbox
list_3_regex=.*dropbox.*
list_3_countmin=1
list_3_command=dropbox filestatus ~/Dropbox

Je défini donc 3 groupes de processus qui vont donner l’affichage suivant dans l’interface de Glances:

capture_142

Supervision de Chromium

Le premier groupe (list_1) permet de surveiller les processus relatifs à mon navigateur Web (Chromium).

Pour cela je lui donne un label (list_1_description) qui est une chaîne de caractères complètement arbitraire (mais limité à 15 caractères):

list_1_description=Chromium browser

Ensuite, il faut définir l’expression régulière qui va permettre de regrouper les processus:

list_1_regex=.*chromium-browse.*

Le problème avec Chromium, c’est qu’il peut être très consommateur de ressources (notamment mémoire) si l’on ouvre un grand nombre de pages. Je configure donc une surveillance du nombre maximum de processus. Glances affichera donc la ligne en rouge si ce nombre est dépassé:

list_1_countmax=50

Je ne défini pas de commande (list_1_command) associé à ce groupe. Donc par défaut Glances va calculer la consommation CPU et la mémoire globale des processus de ce groupe.

Supervision d’OpenVPN

J’utilise souvent un service VPN pour surfer (entre autre…) sur le Web. J’ai donc ajouté une supervision du processus OpenVPN:

list_2_description=OpenVPN
list_2_regex=.*openvpn.*
list_2_min=1

Contrairement à Chromium, je pose ici une alerte si le nombre de processus est inférieur à 1 (donc si OpenVPN n’est pas lancé).

Supervision de Dropbox

Avoir ces fichiers disponibles sur toutes ses machines est devenu pour moi complètement indispensable. La supervision du service Dropbox est faite par Glances de la manière suivante:

list_3_description=Dropbox
list_3_regex=.*dropbox.*
list_3_countmin=1
list_3_command=dropbox filestatus ~/Dropbox

Rien de bien nouveau sur les 3 première lignes, la dernière nécessite cependant quelques explications. La commande (shell) passée en paramètre de (list_3_command) sera exécuté à chaque « check » de Glances (donc par défaut toutes les 3 secondes). Cette commande va demander à Dropbox l’état de synchronisation mon répertoire (voir ce billet pour apprendre à  administrer Dropbox en ligne de commande).

Utilisation de Glances

Votre Glances est maintenant prêt à être utilisé. Donc si vous rencontrez un problème sur votre machine, il faudra ouvrir un terminal et saisir la commande:

glances -ey -C ~/.config/glances/glances.conf

Glances va se lancer et afficher les informations sur votre système:

capture_143

 

En plus de la section [monitor] ou l’on retrouve la supervision de nos groupes Chromium, OpenVPN et Dropbox, on a également l’ensemble des informations systèmes.

Dans le bandeau du haut, les informations sur la CPU, la charge et la mémoire. Les codes couleurs sont standards:

GREEN stat counter is "OK"
BLUE stat counter is "CAREFUL"
MAGENTA stat counter is "WARNING"
RED stat counter is "CRITICAL"

Sur le panneau de gauche, on a les informations moins critiques comme: les débits des interfaces réseau, les capteurs de température, les IO disques et l’espace disque.

Au centre, sur la section [monitor], on retrouve la liste des processus avec, par défaut, un tri « intelligent ». Par exemple, en cas de consommation mémoire excessive, le tri sera automatiquement fait sur la consommation RAM des processus.

Enfin en bas de l’écran, un rappel des dernières alertes.

Pour une description précise des fonctions de Glances, je vous conseille la lecture de la documentation officielle (lisible ici).

Conclusion

Nous arrivons à la fin de ce billet. Je n’ai pas parlé du mode client serveur qui permet de lancer Glances en tache de fond et de l’interroger à la demande mais je pense que ce mode d’utilisation est plus utilise pour la supervision de serveurs.

Si vous avez des configurations spécifiques de Glances (et surtout du [monitor]) pour surveiller vos PC, partager cela (configuration et screenshot) avec nous !

Catégories
Open-source Planet-libre

Glances 1.7.2 et son interface pour Windows

glances-white-256

Glances est maintenant disponible dans sa version 1.7.2. Au chapitre des nouveautés, une nouvelle interface cliente pour ceux d’entre vous qui ne peuvent pas se passer, par choix ou par contrainte, du système d’exploitation Microsoft Windows.  Cette interface se base sur la librairie ColorConsole et permet dans une console de commande Windows d’avoir un « look and feel » qui se rapproche de la version GNU/Linux.

Voici le résultat dans une console standard sous Windows 7:

glances-1.7.2-windows-cmd

Je vous conseille cependant de télécharger la console Console2 qui comble en partie les manques de la console par défaut (cmd).

glances-1.7.2-windows-console2

Afin de faciliter l’installation sur Windows, Frédéric Aoustin a eu la bonne idée de créer un installeur qui installe Python, les librairies nécessaires ainsi que Glances. L’installeur est disponible ici:

downloadGlances-1.7.2-win32.msi
(32-bit, MD5: dba4f6cc9f47b6806ffaeb665c093270)

Je pense que la plupart des lecteurs de ce blog ne seront jamais arrivés jusqu’ici mais si c’est le cas, ils seront heureux d’apprendre que cette version apporte également les améliorations suivantes:

  • Mise à jour de la documentation
  • Amélioration du packaging pour BSD et OpenSuse
  • Correction de nombreux bugs

Pour les Linuxiens, une mise à jour à partir de Pip est à faire avec la ligne de commande:

sudo pip install --upgrade Glances

A vos commentaires…

Catégories
Developpement Open-source Planet-libre

L’écosystème autour de Glances

Le nombre de projets gravitant autour de Glances étant devenu assez important, j’ai dessiné le schéma suivant (à partir du service en ligne Gliffy pour les plus curieux d’entre vous):

L'écosystème Glances
L’écosystème Glances

Le cœur de Glances (source disponible sur le Github officiel) est représenté en vert.

On trouve ensuite en bleu les projets composant son écosystème:

  • Glances plugin (ou CheckGlances) est un plugin pouvant de récupérer les statistiques d’un serveur Glances à partir de Nagios, Centreon ou de Shinken (ou de tout autre système compatible avec les plugins Nagios). Voir ce billet pour un exemple de mise en oeuvre.
CheckGlances
  • MetaGlances est une interface Web qui permet de centraliser les statistiques de plusieurs serveurs Glances. L’interface est « responsive » et donc compatible avec les écrans des PC, des tablettes et des smartphones (plus d’informations sur ce billet)
MetaGlances

 

  • PHPGlances est une API PHP pour s’interfacer simplement avec un serveur Glances. C’est la brique utilisé par MetaGlances. Pour un exemple de mise en oeuvre, vous pouvez lire ce billet sur le blog RootsLabs
Android Glances