Monitor de sistema para Ubuntu, GNU/Linux: Conky

Conky es un monitor del sistema local totalmente configurable, está hecho para trabajar gráficamente sobre el fondo de escritorio (estando de este modo siempre presente sin "estorbar"). Escogí probar este monitor por comentarios agradables a su favor en varios blogs

Instalación
En Ubuntu 7.04 su instalación se efectua simplemente poniendo en consola:
sudo apt-get install conky

Desde este momento se puede ejecutar con su configuración predeterminada:
conky
(ejecutar con la opción -o en caso de que queramos que aparezca en una ventana)

Configuración
Como ya hemos dicho es un monitor "altamente configurable" y es que toda su interfaz se configura en base a un fichero de texto en el que describimos lo que queremos que aparezca y cómo queremos que aparezca, este fichero admite variables propias del programa y scripts del usuario (que puede programarse uno en caso de que las funciones propias no cubran nuestras necesidades). De este modo el usuario puede diseñar el monitor del sistema a su medida sin que necesariamente tenga que ser un "experto".

Desde la página del proyecto podemos descargar ejemplos de configuración. En mi caso he construido la siguiente interfaz a partir de uno de los ejemplos:

En el que se han usado, entre otras, las siguientes variables propias de conky:
  • $nodename: Nombre del equipo
  • $kernel: Versión del Kernel
  • $uptime: Tiempo UP
  • $loadavg: Cargas del sistema
  • $cpu%: Porcentaje de uso de la CPU
  • ${cpubar}: Muestra gráfica en una barra del uso de CPU
  • ${cpugraph cpu0 32,309 000000 7f8ed3}: Muestra gráfica en linea del tiempo del uso de la CPU0
  • $mem/$memmax: Memoria RAM usada/Memoria RAM total
  • $processes: Procesos
  • $running_processes: Procesos en ejecución
  • ${downspeed eth0}: Velocidad de descarga del dispositivo eth0
  • ${upspeed eth0}: Velocidad de subida del dispositivo eth0
  • ${tcp_portmon 1 65535 count}: Conexiones TCP
  • ${fs_free /mnt/fat32/}: Capacidad libre en el dispositivo de almacenamiento /mnt/fat32
  • ${fs_size /mnt/fat32/}: Capacidad total en el dispositivo de almacenamiento /mnt/fat32
  • ${fs_bar /mnt/fat32/}: Representación en una barra de la capacidad en el dispositivo de almacenamiento /mnt/fat32
  • ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}: Nombre, PID, Uso de CPU y uso de memoria del proceso que está usando más CPU
  • ${top_mem name 1} ${top_mem pid 1} ${top_mem cpu 1} ${top_mem mem 1}: Nombre, PID, Uso de CPU y uso de memoria del proceso que está usando más Memoria
  • $diskio: Uso de la Entrada/Salida
  • ${diskiograph 32,309 000000 7f8ed3 5000}: Muestra gráfica de la Entrada/Salida
  • ${tail /var/log/apache2/access.log 15}: Muestra las últimas 15 lineas del log de accesos de Apache


A lo que hay que agregar la funcionalidad proveniente de los scripts que podemos construir e integrar en el programa.


Adjunto el fichero de configuración:
background yes
font 7x13
use_xft no
on_bottom yes

mpd_host 192.168.150.2
mpd_port 6600

update_interval 1.0

total_run_times 0

own_window no

own_window_transparent no

double_buffer yes

minimum_size 280 5

draw_shades yes
draw_outline no
draw_borders no
stippled_borders 8
border_margin 4
border_width 1

default_color black
default_shade_color black
default_outline_color black

alignment top_right

maximum_width 500

gap_x 12
gap_y 12

no_buffers yes

uppercase no

cpu_avg_samples 2
net_avg_samples 2

override_utf8_locale no

use_spacer no

# stuff after 'TEXT' will be formatted on screen

TEXT
${color #5b6dad}$nodename linux-$kernel${alignr}${time %T}

${color #5b6dad}System:
${color #5b6dad} Uptime:${color #7f8ed3} $uptime ${color #5b6dad}- Load:${color #7f8ed3} $loadavg
${color #5b6dad} CPU Frequency:${color #7f8ed3} $freq_dyn_g ${color #5b6dad} Maximum:${color #7f8ed3} $freq_g
${color #5b6dad} CPU Usage:${color #7f8ed3} $cpu% ${cpubar}
${color #000000}${cpugraph cpu0 32,495 000000 7f8ed3}
${color #000000}${cpugraph cpu1 32,495 000000 7f8ed3}
${color #5b6dad} RAM Usage:${color #7f8ed3} $mem/$memmax - $memperc% ${membar}
${color #5b6dad} Swap Usage:${color #7f8ed3} $swap/$swapmax - $swapperc% ${swapbar}
${color #5b6dad} Processes:${color #7f8ed3} $processes ${color #5b6dad}Running:${color #7f8ed3} $running_processes

${color #5b6dad}Networking:
${color #5b6dad}Down:${color #7f8ed3} ${downspeed eth0} k/s${color #5b6dad}${offset 160}Up:${color #7f8ed3} ${upspeed eth0} k/s
${color #000000}${downspeedgraph eth0 32,245 000000 7f8ed3} ${color #000000}${upspeedgraph eth0 32,245 000000 7f8ed3}
${color #5b6dad}Address: ${color #7f8ed3}${addr eth0}${alignr}${color #5b6dad}TCP Connections: ${color #7f8ed3}${tcp_portmon 1 65535 count}

${color #5b6dad}File Systems:
${color #5b6dad}/ ${color #7f8ed3}${fs_free /}/${fs_size /} ${color #7f8ed3}${fs_bar /}
${color #5b6dad}FAT32 ${color #7f8ed3}${fs_free /mnt/fat32/}/${fs_size /mnt/fat32/} ${color #7f8ed3}${fs_bar /mnt/fat32/}
${color #5b6dad}Archivos ${color #7f8ed3}${fs_free /mnt/archivos/}/${fs_size /mnt/archivos/} ${color #7f8ed3}${fs_bar /mnt/archivos/}
${color #5b6dad}SAExt3 ${color #7f8ed3}${fs_free /mnt/saext3/}/${fs_used /mnt/saext3/} ${color #7f8ed3}${fs_bar /mnt/saext3/}

${color #5b6dad}Name PID CPU% MEM%
${color #7f8ed3} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color #7f8ed3} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color #7f8ed3} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color #5b6dad}Mem usage
${color #7f8ed3} ${top_mem name 1} ${top_mem pid 1} ${top_mem cpu 1} ${top_mem mem 1}
${color #7f8ed3} ${top_mem name 2} ${top_mem pid 2} ${top_mem cpu 2} ${top_mem mem 2}
${color #7f8ed3} ${top_mem name 3} ${top_mem pid 3} ${top_mem cpu 3} ${top_mem mem 3}

Disk IO: $diskio
${diskiograph 32,495 000000 7f8ed3 5000}

${tail /var/log/apache2/access.log 15}

Este fichero debe ser llamado a la ejecución del programa del siguiente modo:
conky -c fichero

Siendo fichero la ruta al fichero Archivo de configuración
En este blog hay también un fichero de configuración interesante para conky.


Valoración
Conky es muy util y muy adaptable para su uso en el sistema local, su funcionamiento es simple (tan simple que no existe iteracción con el usuario), consume unos recursos aceptables (alrededor de 4% en mi equipo) y admite scripts que hayamos programado nosotros extendiendo así su utilidad a nuestra capacidad de programación, tiene la desventaja de que la configuración se establece a través de un fichero de texto plano y de que pega parpadeos cuando tiene que cargar mucha información.