Monitorización

June 26th, 2009 | Tags:

Es una tarea básica de administración de sistemas, tener monitorizados los servicios que ofrecemos a los clientes. Existen muchas herramientas para esta tarea, más sofisticadas, una de mis favoritas es Cacti. Pero voy a comentar algunas herramientas de línea de comandos para monitorizar ficheros y la salida de comandos.

Para monitorizar un fichero, por ejemplo un log, podemos usar el comando tail -f o su versión en implantación en alto nivel tailf. El comando tail sin argumentos muestra las 10 últimas líneas de un fichero. tailf muestra siempre las 10 últimas líneas de un fichero y con cada nueva línea que se incorpora la va mostrando. Con el parámetro -n N mostramos N líneas.

La diferencia principal entre usar tail -f y tailf es que este último no accede al fichero mientras este no cambie. Esto significa que el tiempo de acceso no cambia, lo que se traduce en menos accesos al disco duro.

Si queremos controlar varios archivos en una sola consola, podemos usar multitail. Este comando dividirá la pantalla y mostrará en cada una de ellas la monitorización de un archivo, con una barra informativa de la última actualización. Este comando merece un post aparte.

¿Pero qué pasa si lo que queremos es monitorizar la salida de un comando? Podemos hacerlo de tres maneras.

La primera es colocar el comando en un tarea Cron, por ejemplo de 5 minutos, redirigir la salida a un archivo, y con tailf ir monitorizando los cambios. WTF!??

La segunda, es más artesanal, podemos hacer un script como este:

$ while true; do ; sleep TIME; done;

Es un poco más elegante, pero no deja de ser una chapuza. Hay que añadir que comando ejecutar y el intervalo de tiempo entre ejecuciones.

Pero es obvio que este problema es antiguo, así que alguien ya le ha dado solución y creó el comando watch. watch ejecuta un programa periódicamente y muestra la salida a pantalla completa. Que es lo que veníamos haciendo en las soluciones anteriores pero con simplemente.

watch comando

Lo cual no da pie a discusiones de cual es la mejor.

Algunos parámetros interesantes son:

  • -d –differences: Que muestra los cambios entre cada actualización.
  • -n –interval: El intervalo de tiempo entre actualizaciones, por defecto, 2 segundos.
  • -t –no-title: Ocultara la cabecera en la presentación de los datos.

En la página de manual, encontramos algunos ejemplos del uso:

  1. Detectar cambios en un directorio:
  2. watch -d ls -l
  3. Detectar cambios en un directorio hecho por joe:
  4. watch -d 'ls -l | fgrep joe'
  5. Controlar si tu administrador ha instalado el último kernel:
  6. watch uname -r

Seguimos observando la capacidad que tiene GNU/Linux para resolver problemas de muchas maneras y como las cuestiones más elementales se han ido incorporando a la larga lista de comandos.

No comments yet.