提交 c135f39c 编写于 作者: N Nicolas Hennion

In client/server mode Glances grabs limits from the server side

上级 d767f717
......@@ -2,6 +2,7 @@ Version 1.6
===========
* Configuration file: user can defines limits
* In client/server mode, limits are set by the server side
* Display limits in the help screen
* Add per process IO (read and write) rate in B per second
IO rate only available on Linux from a root account
......
......@@ -44,7 +44,7 @@ Check if the version is the latest one.
PyPi is an official Python package manager.
You first need to install pypi on your system. For example on Debian/Ubuntu:
You first need to install PyPi on your system. For example on Debian/Ubuntu:
$ sudo apt-get update
$ sudo apt-get install python-pip build-essential python-dev
......@@ -53,11 +53,11 @@ Then install the latest Glances version:
$ sudo pip install Glances
Note: if you are behind an HTTP Proxy, you should use
Note: if you are behind an HTTP Proxy, you should use instead:
$ sudo pip install --proxy=user:password@url:port Glances
### From [Homebrew](http://mxcl.github.com/homebrew/) via PyPi (OS X)
### From [Homebrew](http://mxcl.github.com/homebrew/) for Mac OS X
$ brew install brew-pip
$ export PYTHONPATH=$(brew --prefix)/lib/python2.7/site-packages
......@@ -66,10 +66,8 @@ Note: if you are behind an HTTP Proxy, you should use
If you have the following error:
Error: Failed executing: pip install glances==1.X --install-option=--prefix=/usr/local/XXX/glances/1.X (.rb:)
This link will help resolve the above errors:
https://github.com/mxcl/homebrew/wiki/bug-fixing-checklist
Try to runs:
then try to run:
$ pip install glances==1.X --install-option=--prefix=/usr/local/XXX/glances/1.X
$ brew link Glances
......@@ -84,7 +82,7 @@ To install Glances on you system:
* Install the [PsUtil lib](https://code.google.com/p/psutil/downloads/list)
* Download the latest [Glances version](https://raw.github.com/nicolargo/glances/master/glances/glances.py)
I need contributors to package Glances for Windows (for exemple using [PyInstaller](http://www.pyinstaller.org/)).
I am looking for a contributor to package Glances for Windows (for exemple using [PyInstaller](http://www.pyinstaller.org/)).
### From source
......@@ -102,6 +100,14 @@ Glances use a standard GNU style installer (for a Debian like system):
$ cd nicolargo-glances-*
$ sudo python setup.py install
## Configuration
No configuration is needed to use Glances.
Furthermore, the release 1.6 introduces a configuration file to setup limits.
The default configuration file is under the /etc/glances/glances.conf file.
## Running
### In standalone mode
......@@ -126,6 +132,15 @@ where @server is the IP address or hostname of the server
Glances uses a [XML/RPC](http://docs.python.org/2/library/simplexmlrpcserver.html) server and can be used by another client software.
In server mode, you can set the bind address (-B ADDRESS) and listenning TCP port (-p PORT).
In client mode, you can set the TCP port of the server (-p port).
Default binding address is 0.0.0.0 (Glances will listen on all the networks interfaces).
TCP port is 61209.
In client/server mode, limits are set by the server.
## User guide
By default, stats are refreshed every second, to change this setting, you can
......@@ -142,9 +157,10 @@ Importants stats are colored:
When Glances is running, you can press:
* 'h' to display a help message with the keys you can press
* 'a' to set the automatic mode. The processes are sorted automatically
IF CPU IoWait > 60% sort by process "IO read and write"
If CPU > 70%, sort by process "CPU consumption"
If MEM > 70%, sort by process "memory size"
......@@ -154,6 +170,8 @@ When Glances is running, you can press:
* 'd' disable or enable the disk IO stats
* 'e' enable the sensors module (PySensors library is needed; Linux-only)
* 'f' disable or enable the file system stats
* 'h' to display a help message with the keys you can press and the limits
* 'i' sort the processes list by CPU IO (need root account on some OS)
* 'l' disable or enable the logs
* 'm' sort the processes list by process MEM
* 'n' disable or enable the network interfaces stats
......@@ -164,13 +182,6 @@ When Glances is running, you can press:
* '1' switch between global CPU and per core stats
* 'q' Exit
In server mode, you can set the bind address (-B ADDRESS) and listenning TCP port (-p PORT).
In client mode, you can set the TCP port of the server (-p port).
Default binding address is 0.0.0.0 (Glancess will listen on all the networks interfaces).
TCP port is 61209.
### Header
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/header.png)
......
[![Flattr this git repo](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/thing/484466/nicolargoglances-on-GitHub)
===========================================
Glances -- Votre système en un coups d'oeil
===========================================
## Description
Glances est un logiciel libre (licence LGPL) permettant de surveiller votre
système d'exploitation GNU/Linux ou BSD à partir d'une interface texte (CLI).
Glances utilise la librairie PsUtil pour récupérer les informations de
votre système. Il est développé en Python.
Copie d'écran sur une console:
![screenshot](https://github.com/nicolargo/glances/raw/master/screenshot.png)
Copie d'écran sur un terminal avec une taille importante:
![screenshot](https://github.com/nicolargo/glances/raw/master/screenshot-wide.png)
## Installation
Glances a besoin des dépendances suivantes:
* Python 2.6+ (non testé avec Python 3+)
* build-essential (pour installation depuis Pypi et setup.py)
* python-dev (pour installation depuis Pypi)
* python-setuptools (pour l'installation via setup.py)
* python-psutil 0.4.1+ (remplace la librairie libstatgrab)
* python-jinja2 2.0+ (optionnel seulement pour le module export HTML)
* pysensors (librairie optionnelle pour les capteurs)
### Depuis le gestionnaire de paquet de votre système
Des paquets existent pour plusieurs distributions: Debian (SID) Arch, Fedora/Redhat...
Le processus de packaging est actuellement en cours sur d'autres distribs, je
vous conseille donc de rechercher Glances sur votre gestionnaire de package
avant de faire une installation depuis les sources.
### Depuis PyPi
PyPi est un gestionnaire officiel des paquets Python.
Il est disponible sous la plupart des distibutions GNU/Linux.
On commence par installer PyPi sur son système (par exemple Debian/Ubuntu):
$ sudo apt-get update
$ sudo apt-get install python-pip build-essential python-dev
Puis on installe la dernière version de Glances:
$ sudo pip install Glances
Note: si vous êtes derrière un Proxy alors il faut utiliser
$ sudo pip install --proxy=user:password@url:port Glances
### Depuis [Homebrew](http://mxcl.github.com/homebrew/) et pat PyPi (pour OS X)
$ brew install brew-pip
$ export PYTHONPATH=$(brew --prefix)/lib/python2.7/site-packages
$ brew pip Glances
Si vous rencontrez l'erreur suivante:
Error: Failed executing: pip install glances==1.X --install-option=--prefix=/usr/local/XXX/glances/1.X (.rb:)
This link will help resolve the above errors:
https://github.com/mxcl/homebrew/wiki/bug-fixing-checklist
Essayez de finaliser l'installation avec les commandes:
$ pip install glances==1.X --install-option=--prefix=/usr/local/XXX/glances/1.X
$ brew link Glances
### Egalement sur les système Windows
Les systèmes Windows sont uniquement supportés en mode serveur. Donc si vous lancez Glances sur une machine Windows, il sera automatiquement lancé en mode serveur.
Pour installer Glances sous Windows:
* Installer [Python pour Windows](http://www.python.org/getit/)
* Installer la librairie [PsUtil](https://code.google.com/p/psutil/downloads/list)
* Télécharger la dernière version de [Glances](https://raw.github.com/nicolargo/glances/master/glances/glances.py)
Je cherche des contributeurs pouvant packager Glances pour Windows. Notamment à l'aide de [PyInstaller](http://www.pyinstaller.org/).
### Depuis les sources
Le projet Glances est hébergé sur [GitHub](https://github.com/nicolargo/glances)
Pour l'installer, il suffit de suivre les instructions suivantes depuis un
terminal.
Récupération de la dernière version:
$ rm -rf /tm/nicolargo-glances-*
$ wget -O /tmp/glances-last.tgz https://github.com/nicolargo/glances/tarball/master
Procédez ensuite à l'installation (exemple pour un system Debian):
$ sudo apt-get update
$ sudo apt-get install python-setuptools build-essential python-dev
$ cd /tmp
$ tar zxvf glances-last.tgz
$ cd nicolargo-glances-*
$ sudo python setup.py install
## Lancement de Glances
Il suffit de saisir la commande suivante dans une console ou un terminal:
$ glances
Note: sur certaines distributions, il faut saisir glances.py en lieu et place
de glances.
### En mode client/server mode
Si vous souhaitez surveiller à distance une machine depuis une autre machine.
Il suffit de commencer par lancer Glances en mode serveur sur la machine distante:
server$ glances -s
Puis de lancer la commande suivante sur votre autre machine:
client$ glances -c @server
ou @server est l'adresse IP ou le nom d'hôte de la machine distante.
Glances utilise un serveur de type [XML/RPC](http://docs.python.org/2/library/simplexmlrpcserver.html) et peut donc être interrogé par des applications tierces.
## Guide d'utilisation
Par défaut, l'affichage des statistiques est rafraichi toute les secondes.
Il est possible de changer cette valeur en utilisant l'option -t.
Par exemple pour fixer un taux de rafraichissement à 5 secondes:
$ glances -t 5
Les statistiques jugées importantes sont affichées en couleur:
* VERT: la statistique est "OK"
* BLEU: la statistique est "CAREFUL" (à surveiller)
* VIOLET: la statistique est "WARNING" (en alerte)
* ROUGE: la statistique est "CRITICAL" (critique)
Quand Glances est lancé, il est possible d'utiliser les touches suivantes:
* 'h' afficher l'aide en ligne
* 'a' trier la liste des processus de manière automatique:
Si la CPU totale > 70% alors le tri se fait pas consommation CPU
si la mémoire total > 70% alors le tri se fait pas consommation MEMOIRE
* 'b' passer le débit des interfaces réseaux de bit par sec à octet par sec
* 'c' forcer le tri par consommation CPU
* 'd' desactiver ou activer l'affichage des entrées/sorties disques
* 'e' activer ou desactiver l'affichage des capteurs
* 'f' desactiver ou activer l'affichage de l'occupation des FS
* 'l' desactiver ou activer l'affichage des logs
* 'm' forcer le tri par consommation MEMOIRE
* 'n' desactiver ou activer l'affichage des interfaces réseau
* 'p' forcer le tri par nom de processus
* 's' desactiver ou activer l'affichage des temperatures (si option -e)
* 'w' supprimer les alertes finies de type WARNING
* 'x' supprimer les alertes finies de type WARNING et CRITICAL
* '1' passer des stats CPU globale à CPU détaillé
* 'q' sortir de Glances (il est également possible d'utiliser CTRL-C)
Passons ensuite à la description de la fenêtre de Glances:
### En-tête
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/header.png)
L'en-tête montre la version de Glances, le nom de la machine (FQND) ainsi
qu'une information sur le système d'exploitation (nom, version).
### CPU
Vue par défaut:
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/cpu.png)
Vue si la taille du terminal est suffisante:
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/cpu-wide.png)
Si la taille de la fenêtre est suffisante et que l'utilisateur clique sur,
la touche '1' alors Glances affiche les informations de CPU par coeur.
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/percpu.png)
L'état de la CPU est affiché par un pourcentage de l'utilisation globale.
Les codes couleurs suivant sont utilisés:
Si user|kernel|nice CPU est < 50%, alors le status est "OK".
Si user|kernel|nice CPU est > 50%, alors le status est "CAREFUL".
Si user|kernel|nice CPU est > 70%, alors le status est "WARNING".
Si user|kernel|nice CPU est > 90%, alors le status est "CRITICAL".
### Charge (Load)
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/load.png)
Il est assez difficile de donner une définition claire de la charge d'une
machine (load average). Sur le blog Nosheep, Zach en donne la définition
suivante: " C'est la somme moyenne du nombre de processus en attente dans
la queue d'execution plus le nombre de processus actuellement en train
d'être executés sur une période de temps de 1, 5 et 15 minutes."
Glances permet d'afficher les alertes en tenant compte du nombre de coeurs de
votre processeur. Par exemple, le seuil WARNING sera de 2 pour un processeur
Bi-Core alors qu'il sera de 4 sur un Quad-Core.
Si la charge moyenne est < O.7*Core, alors le status est "OK".
Si la charge moyenne est > O.7*Core, alors le status est "CAREFUL".
Si la charge moyenne est > 1*Core, alors le status est "WARNING".
Si la charge moyenne est > 5*Core, alors le status est "CRITICAL".
### Mémoire
Glances affiche 2 type d'information pour la mémoire: RAM et SWAP.
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/mem.png)
Si l'espace est disponible, alors Glances affiche aussi:
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/mem-wide.png)
Les alertes utilisent les seuils suivants:
Si la mémoire est < 50%, alors le status "OK".
Si la mémoire est > 50%, alors le status "CAREFUL".
Si la mémoire est > 70%, alors le status "WARNING".
Si la mémoire est > 90%, alors le status "CRITICAL".
### Débits des interfaces réseau
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/network.png)
Glances affiche les débits des interfaces réseau en adaptant dynamiquement
l'unité à utiliser (bits par seconde).
Les alertes ne sont affichées que pour les interfaces dont les informations
sur la vitesse maximale sont disponibles (cela dépend des distributions):
Si le débit < 50%, alors le status est "OK".
Si le débit > 50%, alors le status est "CAREFUL".
Si le débit > 70%, alors le status est "WARNING".
Si le débit > 90%, alors le status est "CRITICAL".
Par exemple, sur une interface Ethernet Fast Ethernet (100 Mbps), le status
passera à WARNING si le débit dépasse les 70 Mbps.
### Capteur (en option)
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/sensors.png)
Glances peut afficher les informations sur les capteurs (lm-sensors).
Un filtre est appliqué pour afficher uniquement les températures.
Ce module est optionnel et doit être activé avec l'option:
glances -e
IL nécessite l'installation de la librairie Python pysensors.
### Entrées/Sorties disque
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/diskio.png)
Glances permet d'afficher les débits en lecture et écriture sur les disques
en adaptant dynamiquement l'unité à utiliser (octets par seconde).
Il n'y a pas d'alerte remontée pour ce type d'information.
### Espace sur les systèmes de fichiers
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/fs.png)
Glances affiche par système de fichiers l'espace disque total et utilisé.
L'unité est automatiquement adaptée (octets par seconde).
Les alertes sont remontées sur l'espace disque utilisé:
Si l'espace disque utilisé est < 50%, alors le status est "OK".
Si l'espace disque utilisé est > 50%, alors le status est "CAREFUL".
Si l'espace disque utilisé est > 70%, alors le status est "WARNING".
Si l'espace disque utilisé est > 90%, alors le status est "CRITICAL".
### Les processus
Vue par défaut:
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/processlist.png)
Vue sur grand écran:
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/processlist-wide.png)
Glances affiche un résumé sur l'état des processus ainsi qu'une liste
détaillée.
Le nombre des processus affichés est adapté à la taille de la fenêtre.
### Logs
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/logs.png)
Une liste des dernières alertes relevées par Glances est affichée si:
* au moins une alerte de type WARNING ou CRITICAL est arrivée
* la console/fenêtre dispose de la place nécessaire
Glances affiche une ligne par alerte:
* date de début
* date de fin
* description de l'alerte
* valeur (min/moyenne/max) lors de l'alerte
### Pied de page
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/footer.png)
Glances y affiche la légende (rappel des codes des couleurs) ainsi que la
date et l'heure courante.
## Traduction
Glances existe en Anglais, Francais, Espagnol, Portugais.
......@@ -38,11 +38,13 @@ Pre-requisites (information for packagers):
Packages exist for Debian (SID), Arch, Fedora, Redhat, FreeBSD...
Check if the version is the latest one.
### From PyPi (easy and cross platform way)
PyPi is an official Python package manager.
You first need to install pypi on your system. For example on Debian/Ubuntu:
You first need to install PyPi on your system. For example on Debian/Ubuntu:
$ sudo apt-get update
$ sudo apt-get install python-pip build-essential python-dev
......@@ -51,26 +53,11 @@ Then install the latest Glances version:
$ sudo pip install Glances
Note: if you are behind an HTTP Proxy, you should use
Note: if you are behind an HTTP Proxy, you should use instead:
$ sudo pip install --proxy=user:password@url:port Glances
### From PPA (easy way for Ubuntu/Mint...)
Arnaud Hartmann (thanks to him !) maintains a PPA with the latest Glances version:
The PPA is available for Ubuntu version 9.10 to 12.04.
To install the PPA just enter:
$ sudo add-apt-repository ppa:arnaud-hartmann/glances-stable
$ sudo apt-get update
Then install Glances:
$ sudo apt-get install glances
### From [Homebrew](http://mxcl.github.com/homebrew/) via PyPi (OS X)
### From [Homebrew](http://mxcl.github.com/homebrew/) for Mac OS X
$ brew install brew-pip
$ export PYTHONPATH=$(brew --prefix)/lib/python2.7/site-packages
......@@ -79,10 +66,8 @@ Then install Glances:
If you have the following error:
Error: Failed executing: pip install glances==1.X --install-option=--prefix=/usr/local/XXX/glances/1.X (.rb:)
This link will help resolve the above errors:
https://github.com/mxcl/homebrew/wiki/bug-fixing-checklist
Try to runs:
then try to run:
$ pip install glances==1.X --install-option=--prefix=/usr/local/XXX/glances/1.X
$ brew link Glances
......@@ -97,7 +82,7 @@ To install Glances on you system:
* Install the [PsUtil lib](https://code.google.com/p/psutil/downloads/list)
* Download the latest [Glances version](https://raw.github.com/nicolargo/glances/master/glances/glances.py)
I need contributors to package Glances for Windows (for exemple using [PyInstaller](http://www.pyinstaller.org/)).
I am looking for a contributor to package Glances for Windows (for exemple using [PyInstaller](http://www.pyinstaller.org/)).
### From source
......@@ -115,6 +100,14 @@ Glances use a standard GNU style installer (for a Debian like system):
$ cd nicolargo-glances-*
$ sudo python setup.py install
## Configuration
No configuration is needed to use Glances.
Furthermore, the release 1.6 introduces a configuration file to setup limits.
The default configuration file is under the /etc/glances/glances.conf file.
## Running
### In standalone mode
......@@ -139,6 +132,13 @@ where @server is the IP address or hostname of the server
Glances uses a [XML/RPC](http://docs.python.org/2/library/simplexmlrpcserver.html) server and can be used by another client software.
In server mode, you can set the bind address (-B ADDRESS) and listenning TCP port (-p PORT).
In client mode, you can set the TCP port of the server (-p port).
Default binding address is 0.0.0.0 (Glancess will listen on all the networks interfaces).
TCP port is 61209.
## User guide
By default, stats are refreshed every second, to change this setting, you can
......@@ -155,9 +155,10 @@ Importants stats are colored:
When Glances is running, you can press:
* 'h' to display a help message with the keys you can press
* 'a' to set the automatic mode. The processes are sorted automatically
IF CPU IoWait > 60% sort by process "IO read and write"
If CPU > 70%, sort by process "CPU consumption"
If MEM > 70%, sort by process "memory size"
......@@ -167,6 +168,8 @@ When Glances is running, you can press:
* 'd' disable or enable the disk IO stats
* 'e' enable the sensors module (PySensors library is needed; Linux-only)
* 'f' disable or enable the file system stats
* 'h' to display a help message with the keys you can press and the limits
* 'i' sort the processes list by CPU IO (need root account on some OS)
* 'l' disable or enable the logs
* 'm' sort the processes list by process MEM
* 'n' disable or enable the network interfaces stats
......@@ -177,13 +180,6 @@ When Glances is running, you can press:
* '1' switch between global CPU and per core stats
* 'q' Exit
In server mode, you can set the bind address (-B ADDRESS) and listenning TCP port (-p PORT).
In client mode, you can set the TCP port of the server (-p port).
Default binding address is 0.0.0.0 (Glancess will listen on all the networks interfaces).
TCP port is 61209.
### Header
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/header.png)
......
[cpu]
# Limits values for CPU user in %
# Defaults values if not defined: 50/70/90
user_careful=50
user_careful=30
user_warning=70
user_critical=90
# Limits values for CPU system in %
......
......@@ -314,6 +314,13 @@ class glancesLimits:
elif (alert.endswith('critical')):
self.__limits_list[stat][2] = value
def setAll(self, newlimits):
self.__limits_list = newlimits
return True
def getAll(self):
return self.__limits_list
def getCareful(self, stat):
return self.__limits_list[stat][0]
......@@ -2671,7 +2678,8 @@ class glancesScreen:
format(dtime, '>8'), 8)
# IO
if tag_io:
if ((processlist[processes]['io_counters'] == {})
if ((processlist[processes]['io_counters'] == {})
or (len(processlist[processes]['io_counters']) < 5)
or (processlist[processes]['io_counters'][4] == 0)):
# If Nodata or io_tag == 0 (['io_counters'][4])
# then do not diplay IO rate
......@@ -3214,6 +3222,10 @@ class GlancesInstance():
self.__update__()
return json.dumps(stats.getAll())
def getAllLimits(self):
# Return all the limits
return json.dumps(limits.getAll())
def getSystem(self):
# Return operating system info
# No need to update...
......@@ -3322,8 +3334,15 @@ class GlancesClient():
print(_("Error: Connection to server failed"))
sys.exit(-1)
else:
# !!! TO DO FOR VERSION 1.5.x and 1.6
return __version__[:3] == client_version
return __version__[:2] == client_version[:2]
def client_get_limits(self):
try:
serverlimits = json.loads(self.client.getAllLimits())
except:
return {}
else:
return serverlimits
def client_get(self):
try:
......@@ -3416,6 +3435,7 @@ def main():
# Default configuration file (if exist)
conf_file = DEFAULT_CONF_FILE
conf_file_tag = False
# Set the default refresh time
refresh_time = 3
......@@ -3496,6 +3516,7 @@ def main():
network_bytepersec_tag = True
elif opt in ("-C", "--config"):
conf_file = arg
conf_file_tag = True
else:
printSyntax()
sys.exit(0)
......@@ -3513,6 +3534,10 @@ def main():
if html_tag or csv_tag:
print(_("Error: Can not use both -c and -o flag"))
sys.exit(2)
if conf_file_tag:
print(_("Error: Can not use both -c and -C flag"))
print(_(" Limits are set based on the server ones"))
sys.exit(2)
if html_tag:
if not html_lib_tag:
......@@ -3558,12 +3583,14 @@ def main():
print(_("Glances server is running on") + " %s:%s" % (bind_ip, server_port))
server = GlancesServer(bind_ip, server_port, GlancesHandler, refresh_time)
# Init Limits
limits = glancesLimits(conf_file)
# Init stats
stats = GlancesStatsServer()
stats.update({})
elif client_tag:
# Init the client (displaying server stat in the CLI)
client = GlancesClient(server_ip, server_port)
# Test if client and server are in the same major version
......@@ -3614,6 +3641,11 @@ def main():
# Start the server loop
server.serve_forever()
elif client_tag:
# Set the limits to the server ones
server_limits = client.client_get_limits()
if (server_limits != {}):
limits.setAll(server_limits)
# Start the client (CLI) loop
while True:
# Get server system informations
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册