mirror of
https://github.com/nicolargo/glances.git
synced 2025-12-23 22:18:31 -05:00
387 lines
13 KiB
ReStructuredText
387 lines
13 KiB
ReStructuredText
Glances 🌟
|
|
==========
|
|
|
|
**Glances** is an open-source system cross-platform monitoring tool.
|
|
It allows real-time monitoring of various aspects of your system such as
|
|
CPU, memory, disk, network usage etc. It also allows monitoring of running processes,
|
|
logged in users, temperatures, voltages, fan speeds etc.
|
|
It also supports container monitoring, it supports different container management
|
|
systems such as Docker, LXC. The information is presented in an easy to read dashboard
|
|
and can also be used for remote monitoring of systems via a web interface or command
|
|
line interface. It is easy to install and use and can be customized to show only
|
|
the information that you are interested in.
|
|
|
|
In client/server mode, remote monitoring could be done via terminal,
|
|
Web interface or API (XML-RPC and RESTful).
|
|
Stats can also be exported to files or external time/value databases, CSV or direct
|
|
output to STDOUT.
|
|
|
|
Glances is written in Python and uses libraries to grab information from
|
|
your system. It is based on an open architecture where developers can
|
|
add new plugins or exports modules.
|
|
|
|
Usage 👋
|
|
========
|
|
|
|
For the standalone mode, just run:
|
|
|
|
.. code-block:: console
|
|
|
|
$ glances
|
|
|
|
.. image:: https://github.com/nicolargo/glances/raw/refs/heads/master/docs/_static/glances-responsive-webdesign.png
|
|
|
|
For the Web server mode, run:
|
|
|
|
.. code-block:: console
|
|
|
|
$ glances -w
|
|
|
|
and enter the URL ``http://<ip>:61208`` in your favorite web browser.
|
|
|
|
In this mode, a HTTP/Restful API is exposed, see document `RestfulApi`_ for more details.
|
|
|
|
.. image:: https://github.com/nicolargo/glances/raw/refs/heads/master/docs/_static/screenshot-web.png
|
|
|
|
For the client/server mode (remote monitoring through XML-RPC), run the following command on the server:
|
|
|
|
.. code-block:: console
|
|
|
|
$ glances -s
|
|
|
|
and this one on the client:
|
|
|
|
.. code-block:: console
|
|
|
|
$ glances -c <ip>
|
|
|
|
You can also detect and display all Glances servers available on your
|
|
network (or defined in the configuration file) in TUI:
|
|
|
|
.. code-block:: console
|
|
|
|
$ glances --browser
|
|
|
|
or WebUI:
|
|
|
|
.. code-block:: console
|
|
|
|
$ glances -w --browser
|
|
|
|
It possible to display raw stats on stdout:
|
|
|
|
.. code-block:: console
|
|
|
|
$ glances --stdout cpu.user,mem.used,load
|
|
cpu.user: 30.7
|
|
mem.used: 3278204928
|
|
load: {'cpucore': 4, 'min1': 0.21, 'min5': 0.4, 'min15': 0.27}
|
|
cpu.user: 3.4
|
|
mem.used: 3275251712
|
|
load: {'cpucore': 4, 'min1': 0.19, 'min5': 0.39, 'min15': 0.27}
|
|
...
|
|
|
|
or in a CSV format thanks to the stdout-csv option:
|
|
|
|
.. code-block:: console
|
|
|
|
$ glances --stdout-csv now,cpu.user,mem.used,load
|
|
now,cpu.user,mem.used,load.cpucore,load.min1,load.min5,load.min15
|
|
2018-12-08 22:04:20 CEST,7.3,5948149760,4,1.04,0.99,1.04
|
|
2018-12-08 22:04:23 CEST,5.4,5949136896,4,1.04,0.99,1.04
|
|
...
|
|
|
|
or in a JSON format thanks to the stdout-json option (attribute not supported in this mode in order to have a real JSON object in output):
|
|
|
|
.. code-block:: console
|
|
|
|
$ glances --stdout-json cpu,mem
|
|
cpu: {"total": 29.0, "user": 24.7, "nice": 0.0, "system": 3.8, "idle": 71.4, "iowait": 0.0, "irq": 0.0, "softirq": 0.0, "steal": 0.0, "guest": 0.0, "guest_nice": 0.0, "time_since_update": 1, "cpucore": 4, "ctx_switches": 0, "interrupts": 0, "soft_interrupts": 0, "syscalls": 0}
|
|
mem: {"total": 7837949952, "available": 2919079936, "percent": 62.8, "used": 4918870016, "free": 2919079936, "active": 2841214976, "inactive": 3340550144, "buffers": 546799616, "cached": 3068141568, "shared": 788156416}
|
|
...
|
|
|
|
Last but not least, you can use the fetch mode to get a quick look of a machine:
|
|
|
|
.. code-block:: console
|
|
|
|
$ glances --fetch
|
|
|
|
Results look like this:
|
|
|
|
.. image:: https://github.com/nicolargo/glances/raw/refs/heads/master/docs/_static/screenshot-fetch.png
|
|
|
|
Use Glances as a Python library 📚
|
|
==================================
|
|
|
|
You can access the Glances API by importing the `glances.api` module and creating an
|
|
instance of the `GlancesAPI` class. This instance provides access to all Glances plugins
|
|
and their fields. For example, to access the CPU plugin and its total field, you can
|
|
use the following code:
|
|
|
|
.. code-block:: python
|
|
|
|
>>> from glances import api
|
|
>>> gl = api.GlancesAPI()
|
|
>>> gl.cpu
|
|
{'cpucore': 16,
|
|
'ctx_switches': 1214157811,
|
|
'guest': 0.0,
|
|
'idle': 91.4,
|
|
'interrupts': 991768733,
|
|
'iowait': 0.3,
|
|
'irq': 0.0,
|
|
'nice': 0.0,
|
|
'soft_interrupts': 423297898,
|
|
'steal': 0.0,
|
|
'syscalls': 0,
|
|
'system': 5.4,
|
|
'total': 7.3,
|
|
'user': 3.0}
|
|
>>> gl.cpu["total"]
|
|
7.3
|
|
>>> gl.mem["used"]
|
|
12498582144
|
|
>>> gl.auto_unit(gl.mem["used"])
|
|
11.6G
|
|
|
|
If the stats return a list of items (like network interfaces or processes), you can
|
|
access them by their name:
|
|
|
|
.. code-block:: python
|
|
|
|
>>> gl.network.keys()
|
|
['wlp0s20f3', 'veth33b370c', 'veth19c7711']
|
|
>>> gl.network["wlp0s20f3"]
|
|
{'alias': None,
|
|
'bytes_all': 362,
|
|
'bytes_all_gauge': 9242285709,
|
|
'bytes_all_rate_per_sec': 1032.0,
|
|
'bytes_recv': 210,
|
|
'bytes_recv_gauge': 7420522678,
|
|
'bytes_recv_rate_per_sec': 599.0,
|
|
'bytes_sent': 152,
|
|
'bytes_sent_gauge': 1821763031,
|
|
'bytes_sent_rate_per_sec': 433.0,
|
|
'interface_name': 'wlp0s20f3',
|
|
'key': 'interface_name',
|
|
'speed': 0,
|
|
'time_since_update': 0.3504955768585205}
|
|
|
|
For a complete example of how to use Glances as a library, have a look to the `PythonApi`_.
|
|
|
|
Documentation 📜
|
|
================
|
|
|
|
For complete documentation have a look at the readthedocs_ website.
|
|
|
|
If you have any question (after RTFM! and the `FAQ`_), please post it on the official Reddit `forum`_ or in GitHub `Discussions`_.
|
|
|
|
Gateway to other services 🌐
|
|
============================
|
|
|
|
Glances can export stats to:
|
|
|
|
- ``CSV`` file
|
|
- ``JSON`` file
|
|
- ``InfluxDB`` server
|
|
- ``Cassandra`` server
|
|
- ``CouchDB`` server
|
|
- ``OpenTSDB`` server
|
|
- ``Prometheus`` server
|
|
- ``StatsD`` server
|
|
- ``ElasticSearch`` server
|
|
- ``PostgreSQL/TimeScale`` server
|
|
- ``RabbitMQ/ActiveMQ`` broker
|
|
- ``ZeroMQ`` broker
|
|
- ``Kafka`` broker
|
|
- ``Riemann`` server
|
|
- ``Graphite`` server
|
|
- ``RESTful`` endpoint
|
|
|
|
Installation 🚀
|
|
===============
|
|
|
|
There are several methods to test/install Glances on your system. Choose your weapon!
|
|
|
|
PyPI: Pip, the standard way
|
|
---------------------------
|
|
|
|
Glances is on ``PyPI``. By using PyPI, you will be using the latest stable version.
|
|
|
|
To install Glances, simply use the ``pip`` command line.
|
|
|
|
Warning: on modern Linux operating systems, you may have an externally-managed-environment
|
|
error message when you try to use ``pip``. In this case, go to the the PipX section below.
|
|
|
|
.. code-block:: console
|
|
|
|
pip install --user glances
|
|
|
|
*Note*: Python headers are required to install `psutil`_, a Glances
|
|
dependency. For example, on Debian/Ubuntu **the simplest** is
|
|
``apt install python3-psutil`` or alternatively need to install first
|
|
the *python-dev* package and gcc (*python-devel* on Fedora/CentOS/RHEL).
|
|
For Windows, just install psutil from the binary installation file.
|
|
|
|
By default, Glances is installed **without** the Web interface dependencies.
|
|
To install it, use the following command:
|
|
|
|
.. code-block:: console
|
|
|
|
pip install --user 'glances[web]'
|
|
|
|
For a full installation (with all features, see features list bellow):
|
|
|
|
.. code-block:: console
|
|
|
|
pip install --user 'glances[all]'
|
|
|
|
Features list:
|
|
|
|
- all: install dependencies for all features
|
|
- action: install dependencies for action feature
|
|
- browser: install dependencies for Glances centram browser
|
|
- cloud: install dependencies for cloud plugin
|
|
- containers: install dependencies for container plugin
|
|
- export: install dependencies for all exports modules
|
|
- gpu: install dependencies for GPU plugin
|
|
- graph: install dependencies for graph export
|
|
- ip: install dependencies for IP public option
|
|
- raid: install dependencies for RAID plugin
|
|
- sensors: install dependencies for sensors plugin
|
|
- smart: install dependencies for smart plugin
|
|
- snmp: install dependencies for SNMP
|
|
- sparklines: install dependencies for sparklines option
|
|
- web: install dependencies for Webserver (WebUI) and Web API
|
|
- wifi: install dependencies for Wifi plugin
|
|
|
|
To upgrade Glances to the latest version:
|
|
|
|
.. code-block:: console
|
|
|
|
pip install --user --upgrade glances
|
|
|
|
The current develop branch is published to the test.pypi.org package index.
|
|
If you want to test the develop version (could be instable), enter:
|
|
|
|
.. code-block:: console
|
|
|
|
pip install --user -i https://test.pypi.org/simple/ Glances
|
|
|
|
PyPI: PipX, the alternative way
|
|
-------------------------------
|
|
|
|
Install PipX on your system (apt install pipx on Ubuntu).
|
|
|
|
Install Glances (with all features):
|
|
|
|
.. code-block:: console
|
|
|
|
pipx install 'glances[all]'
|
|
|
|
The glances script will be installed in the ~/.local/bin folder.
|
|
|
|
Shell tab completion 🔍
|
|
=======================
|
|
|
|
Glances 4.3.2 and higher includes shell tab autocompletion thanks to the --print-completion option.
|
|
|
|
For example, on a Linux operating system with bash shell:
|
|
|
|
.. code-block:: console
|
|
|
|
$ mkdir -p ${XDG_DATA_HOME:="$HOME/.local/share"}/bash-completion
|
|
$ glances --print-completion bash > ${XDG_DATA_HOME:="$HOME/.local/share"}/bash-completion/glances
|
|
$ source ${XDG_DATA_HOME:="$HOME/.local/share"}/bash-completion/glances
|
|
|
|
Following shells are supported: bash, zsh and tcsh.
|
|
|
|
Requirements 🧩
|
|
===============
|
|
|
|
Glances is developed in Python. A minimal Python version 3.10 or higher
|
|
should be installed on your system.
|
|
|
|
*Note for Python 2 users*
|
|
|
|
Glances version 4 or higher do not support Python 2 (and Python 3 < 3.10).
|
|
Please uses Glances version 3.4.x if you need Python 2 support.
|
|
|
|
Dependencies:
|
|
|
|
- ``psutil`` (better with latest version)
|
|
- ``defusedxml`` (in order to monkey patch xmlrpc)
|
|
- ``packaging`` (for the version comparison)
|
|
- ``windows-curses`` (Windows Curses implementation) [Windows-only]
|
|
- ``shtab`` (Shell autocompletion) [All but Windows]
|
|
- ``jinja2`` (for fetch mode and templating)
|
|
|
|
Extra dependencies:
|
|
|
|
- ``batinfo`` (for battery monitoring)
|
|
- ``bernhard`` (for the Riemann export module)
|
|
- ``cassandra-driver`` (for the Cassandra export module)
|
|
- ``chevron`` (for the action script feature)
|
|
- ``docker`` (for the Containers Docker monitoring support)
|
|
- ``elasticsearch`` (for the Elastic Search export module)
|
|
- ``FastAPI`` and ``Uvicorn`` (for Web server mode)
|
|
- ``graphitesender`` (For the Graphite export module)
|
|
- ``hddtemp`` (for HDD temperature monitoring support) [Linux-only]
|
|
- ``influxdb`` (for the InfluxDB version 1 export module)
|
|
- ``influxdb-client`` (for the InfluxDB version 2 export module)
|
|
- ``kafka-python`` (for the Kafka export module)
|
|
- ``netifaces2`` (for the IP plugin)
|
|
- ``nvidia-ml-py`` (for the GPU plugin)
|
|
- ``pycouchdb`` (for the CouchDB export module)
|
|
- ``pika`` (for the RabbitMQ/ActiveMQ export module)
|
|
- ``podman`` (for the Containers Podman monitoring support)
|
|
- ``potsdb`` (for the OpenTSDB export module)
|
|
- ``prometheus_client`` (for the Prometheus export module)
|
|
- ``psycopg[binary]`` (for the PostgreSQL/TimeScale export module)
|
|
- ``pygal`` (for the graph export module)
|
|
- ``pymdstat`` (for RAID support) [Linux-only]
|
|
- ``pymongo`` (for the MongoDB export module)
|
|
- ``pysnmp-lextudio`` (for SNMP support)
|
|
- ``pySMART.smartx`` (for HDD Smart support) [Linux-only]
|
|
- ``pyzmq`` (for the ZeroMQ export module)
|
|
- ``requests`` (for the Ports, Cloud plugins and RESTful export module)
|
|
- ``sparklines`` (for the Quick Plugin sparklines option)
|
|
- ``statsd`` (for the StatsD export module)
|
|
- ``wifi`` (for the wifi plugin) [Linux-only]
|
|
- ``zeroconf`` (for the autodiscover mode)
|
|
|
|
Project sponsorship 🙌
|
|
======================
|
|
|
|
You can help me to achieve my goals of improving this open-source project
|
|
or just say "thank you" by:
|
|
|
|
- sponsor me using one-time or monthly tier Github sponsors_ page
|
|
- send me some pieces of bitcoin: 185KN9FCix3svJYp7JQM7hRMfSKyeaJR4X
|
|
- buy me a gift on my wishlist_ page
|
|
|
|
Any and all contributions are greatly appreciated.
|
|
|
|
Authors and Contributors 🔥
|
|
===========================
|
|
|
|
Nicolas Hennion (@nicolargo) <nicolas@nicolargo.com>
|
|
|
|
.. image:: https://img.shields.io/twitter/url/https/twitter.com/cloudposse.svg?style=social&label=Follow%20%40nicolargo
|
|
:target: https://twitter.com/nicolargo
|
|
|
|
License 📜
|
|
==========
|
|
|
|
Glances is distributed under the LGPL version 3 license. See ``COPYING`` for more details.
|
|
|
|
.. _psutil: https://github.com/giampaolo/psutil
|
|
.. _readthedocs: https://glances.readthedocs.io/
|
|
.. _forum: https://www.reddit.com/r/glances/
|
|
.. _sponsors: https://github.com/sponsors/nicolargo
|
|
.. _wishlist: https://www.amazon.fr/hz/wishlist/ls/BWAAQKWFR3FI?ref_=wl_share
|
|
.. _PythonApi: https://glances.readthedocs.io/en/develop/api/python.html
|
|
.. _RestfulApi: https://glances.readthedocs.io/en/develop/api/restful.html
|
|
.. _FAQ: https://github.com/nicolargo/glances/blob/develop/docs/faq.rst
|
|
.. _Discussions: https://github.com/nicolargo/glances/discussions
|