Instalar y configurar Glances en linux.
Si como yo, eres de HTOP; la herramienta de monitoreo Glances te va a encantar. Con una estructura visual similar a HTOP, esta aplicación basada en Python te cautivará.
Aprovechándose de las bondades de Python, Glances nos proporciona mucha información del sistema de forma amena y fácilmente comprensible. Procesos de ejecución E / S, memoria, etc. Todo tiene cabida en Glances.
Glances no solo permite monitorizar nuestro sistema a través de la terminal, también podemos usarlo en remoto a través de su potente API o incluso en otras interfaces como Grafana o Prometheus. En este artículo, veremos cómo instalar y usar Glances para monitorear sistemas locales y remotos.
Instalar y configurar Glances en linux
Glances viene en los repositorios de la mayoría de distribuciones linux actuales, por ejemplo en Ubuntu y derivados lo puedes instalar con…
sudo apt install glances
También puedes ejecutar su propio instalador.
wget -O- https://bit.ly/glances | bash o curl -L https://bit.ly/glances | bash
Una vez instalado ejecuta el siguiente comando para iniciar la herramienta.
glances
Te mostrara información sobre tu sistema, en un formato similar al de la imagen que tienes a continuación.
Monitorizar linux con Glances
Puedes cambiar la visualización con las teclas 1 y 3, con la tecla 2 ocultas el apartado de la izquierda. También puedes filtrar procesos de una forma tan simple como pulsar la tecla enter, y escribir el proceso.
Filtrar procesos en Glances
Glances nos ofrece varias opciones con un solo comando, para verlos todos pulsa la techa h.
Opciones de Glances
Modo cliente / servidor
Para monitorizar un sistema linux en modo remoto debes instalar Glances en los dos sistemas, local y remoto. Una vez instalado en los dos puntos, ejecuta en el sitio remoto el siguiente comando.
glances -s
En el sistema local…
glances -c ip-remota #<<<---ip del sistema remoto
Glances es tan potente que también nos ofrece un sistema de monitorización si tener que instalar nada en nuestra maquina local. El mismo nos brinda su propio servidor web para poder acceder desde cualquier navegador. Para ejecutar esta opción lanza en el sistema remoto el siguiente comando.
glances -w
Ahora en tu navegador local preferido insertamos la ip remota, el puerto definido (61208), y los segundos de actualización.
ejemplo…
http://192.168.100.101:61208/5
Configurar Glances
Puedes configurar la herramienta a través del archivo glances.conf. Los nuevos archivos de configuración los debes crear de forma manual, por ejemplo.
nano /etc/glances
Copia y pega lo siguiente.
[cpu] user_careful=50 user_warning=70 user_critical=90 iowait_careful=50 iowait_warning=70 iowait_critical=90 system_careful=50 system_warning=70 system_critical=90 steal_careful=50 steal_warning=70 steal_critical=90
Puede modificar los valores según tus preferencias, o personalizar otras secciones. Te dejo una plantilla de configuración completa para que puedas trabajar con ella.
############################################################################## # Globals Glances parameters ############################################################################## [global] # Does Glances should check if a newer version is available on PyPI ? check_update=true # History size (maximum number of values) # Default is 28800: 1 day with 1 point every 3 seconds history_size=28800 ############################################################################## # User interface ############################################################################## [outputs] # Theme name for the Curses interface: black or white curse_theme=black # Limit the number of processes to display in the WebUI max_processes_display=30 ############################################################################## # plugins ############################################################################## [quicklook] # Set to true to disable a plugin # Note: you can also disable it from the command line (see --disable-plugin <plugin_name>) disable=False # Graphical percentage char used in the terminal user interface (default is |) percentage_char=| # Define CPU, MEM and SWAP thresholds in % cpu_careful=50 cpu_warning=70 cpu_critical=90 mem_careful=50 mem_warning=70 mem_critical=90 swap_careful=50 swap_warning=70 swap_critical=90 [cpu] disable=False # Default values if not defined: 50/70/90 (except for iowait) user_careful=50 user_warning=70 user_critical=90 #user_log=False #user_critical_action=echo {{user}} {{value}} {{max}} > /tmp/cpu.alert system_careful=50 system_warning=70 system_critical=90 steal_careful=50 steal_warning=70 steal_critical=90 #steal_log=True # I/O wait percentage should be lower than 1/# (Logical CPU cores) # Leave commented to just use the default config (1/#-20% / 1/#-10% / 1/#) #iowait_careful=30 #iowait_warning=40 #iowait_critical=50 # Context switch limit (core / second) # Leave commented to just use the default config (critical is 50000*# (Logical CPU cores) #ctx_switches_careful=10000 #ctx_switches_warning=12000 #ctx_switches_critical=14000 [percpu] disable=False # Define CPU thresholds in % # Default values if not defined: 50/70/90 user_careful=50 user_warning=70 user_critical=90 iowait_careful=50 iowait_warning=70 iowait_critical=90 system_careful=50 system_warning=70 system_critical=90 [gpu] disable=False # Default processor values if not defined: 50/70/90 proc_careful=50 proc_warning=70 proc_critical=90 # Default memory values if not defined: 50/70/90 mem_careful=50 mem_warning=70 mem_critical=90 [mem] disable=False # Define RAM thresholds in % # Default values if not defined: 50/70/90 careful=50 #careful_action_repeat=echo {{percent}} >> /tmp/memory.alert warning=70 critical=90 [memswap] disable=False # Define SWAP thresholds in % # Default values if not defined: 50/70/90 careful=50 warning=70 critical=90 [load] disable=False # Define LOAD thresholds # Value * number of cores # Default values if not defined: 0.7/1.0/5.0 per number of cores # 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 #log=False [network] disable=False # Default bitrate thresholds in % of the network interface speed # Default values if not defined: 70/80/90 rx_careful=70 rx_warning=80 rx_critical=90 tx_careful=70 tx_warning=80 tx_critical=90 # Define the list of hidden network interfaces (comma-separated regexp) #hide=docker.*,lo # WLAN 0 alias #wlan0_alias=Wireless IF # It is possible to overwrite the bitrate thresholds per interface # WLAN 0 Default limits (in bits per second aka bps) for interface bitrate #wlan0_rx_careful=4000000 #wlan0_rx_warning=5000000 #wlan0_rx_critical=6000000 #wlan0_rx_log=True #wlan0_tx_careful=700000 #wlan0_tx_warning=900000 #wlan0_tx_critical=1000000 #wlan0_tx_log=True [connections] # Display additional information about TCP connections # This plugin is disabled by default disable=True # nf_conntrack thresholds in % nf_conntrack_percent_careful=70 nf_conntrack_percent_warning=80 nf_conntrack_percent_critical=90 [wifi] disable=False # Define the list of hidden wireless network interfaces (comma-separated regexp) hide=lo,docker.* # Define SIGNAL thresholds in db (lower is better...) # Based on: http://serverfault.com/questions/501025/industry-standard-for-minimum-wifi-signal-strength careful=-65 warning=-75 critical=-85 [diskio] disable=False # Define the list of hidden disks (comma-separated regexp) #hide=sda2,sda5,loop.* hide=loop.*,/dev/loop* # Alias for sda1 #sda1_alias=IntDisk [fs] disable=False # Define the list of hidden file system (comma-separated regexp) hide=/boot.*,/snap.* # Define filesystem space thresholds in % # Default values if not defined: 50/70/90 # It is also possible to define per mount point value # Example: /_careful=40 careful=50 warning=70 critical=90 # Allow additional file system types (comma-separated FS type) #allow=zfs [folders] disable=False # Define a folder list to monitor # The list is composed of items (list_#nb <= 10) # An item is defined by: # * path: absolute path # * careful: optional careful threshold (in MB) # * warning: optional warning threshold (in MB) # * critical: optional critical threshold (in MB) # * refresh: interval in second between two refreshs #folder_1_path=/tmp #folder_1_careful=2500 #folder_1_warning=3000 #folder_1_critical=3500 #folder_1_refresh=60 #folder_2_path=/home/nicolargo/Videos #folder_2_warning=17000 #folder_2_critical=20000 #folder_3_path=/nonexisting #folder_4_path=/root [irq] # This plugin is disabled by default # Documentation: https://glances.readthedocs.io/en/stable/aoa/irq.html disable=False [hddtemp] disable=False # Define hddtemp server IP and port (default is 127.0.0.1 and 7634 (TCP)) host=127.0.0.1 port=7634 [sensors] # This plugin is disable by default because on some system, the PsUtil # consume a lot of CPU to grab the stats... disable=True # Sensors core thresholds (in Celsius...) # Default values if not defined: 60/70/80 temperature_core_careful=60 temperature_core_warning=70 temperature_core_critical=80 # Temperatures threshold in °C for hddtemp # Default values if not defined: 45/52/60 temperature_hdd_careful=45 temperature_hdd_warning=52 temperature_hdd_critical=60 # Battery threshold in % battery_careful=80 battery_warning=90 battery_critical=95 # Sensors alias #temp1_alias=Motherboard 0 #temp2_alias=Motherboard 1 #core 0_alias=CPU Core 0 #core 1_alias=CPU Core 1 [processlist] disable=False # Define CPU/MEM (per process) thresholds in % # Default values if not defined: 50/70/90 cpu_careful=50 cpu_warning=70 cpu_critical=90 mem_careful=50 mem_warning=70 mem_critical=90 # # Nice priorities range from -20 to 19. # Configure nice levels using a comma separated list. # # Nice: Example 1, non-zero is warning (default behavior) nice_warning=-20,-19,-18,-17,-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 # # Nice: Example 2, low priority processes escalate from careful to critical #nice_careful=1,2,3,4,5,6,7,8,9 #nice_warning=10,11,12,13,14 #nice_critical=15,16,17,18,19 [ports] disable=False # Interval in second between two scans # Ports scanner plugin configuration refresh=30 # Set the default timeout (in second) for a scan (can be overwritten in the scan list) timeout=3 # If port_default_gateway is True, add the default gateway on top of the scan list port_default_gateway=True # # Define the scan list (1 < x < 255) # port_x_host (name or IP) is mandatory # port_x_port (TCP port number) is optional (if not set, use ICMP) # port_x_description is optional (if not set, define to host:port) # port_x_timeout is optional and overwrite the default timeout value # port_x_rtt_warning is optional and defines the warning threshold in ms # #port_1_host=192.168.0.1 #port_1_port=80 #port_1_description=Home Box #port_1_timeout=1 #port_2_host=www.free.fr #port_2_description=My ISP #port_3_host=www.google.com #port_3_description=Internet ICMP #port_3_rtt_warning=1000 #port_4_description=Internet Web #port_4_host=www.google.com #port_4_port=80 #port_4_rtt_warning=1000 # # Define Web (URL) monitoring list (1 < x < 255) # web_x_url is the URL to monitor (example: http://my.site.com/folder) # web_x_description is optional (if not set, define to URL) # web_x_timeout is optional and overwrite the default timeout value # web_x_rtt_warning is optional and defines the warning respond time in ms (approximatively) # #web_1_url=https://blog.nicolargo.com #web_1_description=My Blog #web_1_rtt_warning=3000 #web_2_url=https://github.com #web_3_url=http://www.google.fr #web_3_description=Google Fr #web_4_url=https://blog.nicolargo.com/nonexist #web_4_description=Intranet [docker] disable=False #cpu_careful=50 # Thresholds for CPU and MEM (in %) #cpu_warning=70 #cpu_critical=90 #mem_careful=20 #mem_warning=50 #mem_critical=70 # # Per container thresholds #containername_cpu_careful=10 #containername_cpu_warning=20 #containername_cpu_critical=30 # # By default, Glances only display running containers # Set the following key to True to display all containers all=False ############################################################################## # Client/server ############################################################################## [serverlist] # Define the static servers list #server_1_name=localhost #server_1_alias=My local PC #server_1_port=61209 #server_2_name=localhost #server_2_port=61235 #server_3_name=192.168.0.17 #server_3_alias=Another PC on my network #server_3_port=61209 #server_4_name=pasbon #server_4_port=61237 [passwords] # Define the passwords list # Syntax: host=password # Where: host is the hostname # password is the clear password # Additionally (and optionally) a default password could be defined #localhost=abc #default=defaultpassword ############################################################################## # Exports ############################################################################## [graph] # Configuration for the --export graph option # Set the path where the graph (.svg files) will be created # Can be overwrite by the --graph-path command line option path=/tmp # It is possible to generate the graphs automatically by setting the # generate_every to a non zero value corresponding to the seconds between # two generation. Set it to 0 to disable graph auto generation. generate_every=60 # See followings configuration keys definitions in the Pygal lib documentation # http://pygal.org/en/stable/documentation/index.html width=800 height=600 style=DarkStyle [influxdb] # Configuration for the --export influxdb option # https://influxdb.com/ host=localhost port=8086 protocol=http user=root password=root db=glances # Prefix will be added for all measurement name # Ex: prefix=foo # => foo.cpu # => foo.mem # You can also use dynamic values #prefix=`hostname` prefix=localhost # Tags will be added for all measurements #tags=foo:bar,spam:eggs # You can also use dynamic values #tags=system:`uname -s` [cassandra] # Configuration for the --export cassandra option # Also works for the ScyllaDB # https://influxdb.com/ or http://www.scylladb.com/ host=localhost port=9042 protocol_version=3 keyspace=glances replication_factor=2 # If not define, table name is set to host key table=localhost # If not define, username and password will not be used #username=cassandra #password=password [opentsdb] # Configuration for the --export opentsdb option # http://opentsdb.net/ host=localhost port=4242 #prefix=glances #tags=foo:bar,spam:eggs [statsd] # Configuration for the --export statsd option # https://github.com/etsy/statsd host=localhost port=8125 #prefix=glances [elasticsearch] # Configuration for the --export elasticsearch option # Data are available via the ES RESTful API. ex: URL/<index>/cpu/system # https://www.elastic.co host=localhost port=9200 index=glances [riemann] # Configuration for the --export riemann option # http://riemann.io host=localhost port=5555 [rabbitmq] # Configuration for the --export rabbitmq option host=localhost port=5672 user=guest password=guest queue=glances_queue [mqtt] # Configuration for the --export mqtt option host=localhost port=8883 user=guest password=guest topic=glances tls=true [couchdb] # Configuration for the --export couchdb option # https://www.couchdb.org host=localhost port=5984 db=glances # user and password are optional (comment if not configured on the server side) #user=root #password=root [kafka] # Configuration for the --export kafka option # http://kafka.apache.org/ host=localhost port=9092 topic=glances #compression=gzip [zeromq] # Configuration for the --export zeromq option # http://www.zeromq.org # Use * to bind on all interfaces host=* port=5678 # Glances envelopes the stats in a publish message with two frames: # - First frame containing the following prefix (STRING) # - Second frame with the Glances plugin name (STRING) # - Third frame with the Glances plugin stats (JSON) prefix=G [prometheus] # Configuration for the --export prometheus option # https://prometheus.io # Create a Prometheus exporter listening on localhost:9091 (default configuration) # Metric are exporter using the following name: # <prefix>_<plugin>_<stats>{labelkey:labelvalue} # Note: You should add this exporter to your Prometheus server configuration: # scrape_configs: # - job_name: 'glances_exporter' # scrape_interval: 5s # static_configs: # - targets: ['localhost:9091'] # # Labels will be added for all measurements (default is src:glances) # labels=foo:bar,spam:eggs # You can also use dynamic values # labels=system:`uname -s` # host=localhost port=9091 #prefix=glances labels=src:glances [restful] # Configuration for the --export RESTful option # Example, export to http://localhost:6789/ host=localhost port=6789 protocol=http path=/ ############################################################################## # AMPS # * enable: Enable (true) or disable (false) the AMP # * regex: Regular expression to filter the process(es) # * refresh: The AMP is executed every refresh seconds # * one_line: (optional) Force (if true) the AMP to be displayed in one line # * command: (optional) command to execute when the process is detected (thk to the regex) # * 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 # * <foo>: Others variables can be defined and used in the AMP script ############################################################################## [amp_dropbox] # Use the default AMP (no dedicated AMP Python script) # Check if the Dropbox daemon is running # Every 3 seconds, display the 'dropbox status' command line enable=false regex=.*dropbox.* refresh=3 one_line=false command=dropbox status countmin=1 [amp_python] # Use the default AMP (no dedicated AMP Python script) # Monitor all the Python scripts # Alert if more than 20 Python scripts are running enable=false regex=.*python.* refresh=3 countmax=20 [amp_conntrack] # Use comma separated for multiple commands (no space around the comma) enable=false regex=\/sbin\/init refresh=30 one_line=false command=sysctl net.netfilter.nf_conntrack_count;sysctl net.netfilter.nf_conntrack_max [amp_nginx] # Use the NGinx AMP # Nginx status page should be enable (https://easyengine.io/tutorials/nginx/status-page/) enable=false regex=\/usr\/sbin\/nginx refresh=60 one_line=false status_url=http://localhost/nginx_status [amp_systemd] # Use the Systemd AMP enable=false regex=\/lib\/systemd\/systemd refresh=30 one_line=true systemctl_cmd=/bin/systemctl --plain [amp_systemv] # Use the Systemv AMP enable=false regex=\/sbin\/init refresh=30 one_line=true service_cmd=/usr/bin/service --status-all
Conclusión final
Glances nos ofrece más características y una mejor interfaz htop. Sin embargo, consume más recursos. Su punto fuerte es el montón de opciones que nos ofrece, y en excelente manual que puedes consultar aquí.
Canales de Telegram: Canal SoloLinux – Canal SoloWordpress
Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.