feedburner

Lorem ipsum dolor sit amet,
consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore
et dolore magna aliqua.

Instrucción watch

Etiquetas:

Cuando montamos un sistema de alta disponibilidad siempre hay que utilizar redundancia para evitar los SPOF ( single Point Of Failure ) o dicho de otra manera: Si quieres alta disponibilidad necesitas tenerlo todo como mínimo 2 veces porque de los elementos vitales para el servicio ( tarjeta de red, discos, controladora, arquitectura fiber channel, electricidad... ) si solo dispones de uno solo, como ese elemento sufra una caída adiós disponibilidad y adiós servicio.

¿A que viene esto? pues bien, viene a que cuando montamos un sistema de alta disponibilidad antes de entregárselo al cliente hemos de verificar que los elementos redundantes que hemos aplicado funcionan correctamente y el servicio no se pierde en caso de fallo de uno de esos elementos. Para certificar el correcto funcionamiento siempre ejecutamos procedimientos que implican un corte 'a la brava' de todos los SPOF protegidos. Es decir, teniendo el cluster arrancado y dando servicio desconectamos cables de red , certificamos que el sistema es consciente de la falta de ese elemento pero que no se ve afectado, volvemos a conectar el cable y certificamos que todo está OK, ya que tan importante es sobrevivir a la caída de un elemento de un cluster como a la consiguiente recuperación y reuso de dicho elemento una vez se ha solventado la incidencia. Lo mismo hacemos con los discos, las conexiones de fibra óptica...

Cuando hago estos tests necesito una herramienta que me visualice de forma efectiva y rápida los cambios de estado de los distintos elementos. Por ejemplo, para saber el estado del link ( quitar y poner cables ) de las tarjetas de red puedo ejecutar mii-tool

root@nclserver02:~# mii-tool
eth0: negotiated 100baseTx-FD, link ok
eth1: negotiated 100baseTx-FD, link ok
root@nclserver02:~#


Que me indica que en ese momento las 2 tarjetas físicas de red están conectadas mediante cable y tienen link ( eth1: negotiated 100baseTx-FD, link ok )

En caso de quitar uno de los cables, si vuelvo a ejecutar mii-tool me aparece el cambio de estado


root@nclserver02:~# mii-tool
eth0: negotiated 100baseTx-FD, link ok
eth1: no link
root@nclserver02:~#


pero me iría mucho mejor ejecutarlo una vez y poder ver en pantalla el cambio sin tener que volver a ejecutar la instrucción. Esto es aplicable también al estado de los filesystems ( df -k ) , multipath... en fin, que preferiría que en según que casos no tener que ir ejecutando periódicamente la instrucción que me permita ver el cambio.

Para eso utilizo la aplicación watch, que viene de serie en todas las distribuciones que he usado y que francamente me parece de una gran utilidad, todo y que hasta ahora en ninguno de los clientes con los que he trabajado la conocían. Es por esto que dejo esta entrada, para dar a conocer que es esta aplicación y como se usa. Estoy seguro que una vez la empieces a usar se convertirá en una de tus herramientas imprescindibles ;)

Tal y como reza man watch, watch ejecuta periódicamente una instrucción visualizando el resultado en pantalla. Con el ejemplo anterior de mii-tool puedo ejecutar

[root@nclserver03 ~]# watch -n0,5 mii-tool


y cada medio segundo ( -n 0,5 ) watch ejecutará mii-tool y me mostrará el resultado 'full screen' con lo que cada ejecución se solapará encima de la anterior, sin reubicación del contenido. Si necesito hacer un grep para que me muestre solo datos relevantes ( imaginad un ls -l , un cat, etc... podemos entrecomillar ( con la tecla para obtener acentos 'ó' pero sin la 'o', no con la comilla simple " '" ) las sentencias para que watch lo ejecute como un todo, de otra forma las instrucciones posteriores a una tubería ( | ) se aplicarán a la ejecución de watch en sí, no a lo que tiene que ejecutar watch. Por ejemplo si quiero ver como se va llenando el filesystem /dev/sda3 podría ejecutar

root@nclserver02:~# watch -n0,5 'df -k | grep "/dev/sda3"'



Otros parámetros interesantes y no excluyente de watch son

-d pone en video inverso los cambios entre 2 tomas

-t no muestra una cabecera que pone por defecto con información sobre la instrucción que se está ejecutando, el periodo de ejecución y la fecha / hora


Fuentes: watch --help

3 comentarios:
gravatar
Alberto dijo...
viernes, 20 de abril de 2007, 15:19:00 CEST  

Muy buena esta información. La verdad, me habia surgido esta necesidad, ya que seria "semejante" a hacer una tail -f de un archivo, pero con cualquier comando.
Lo que no me ha quedado claro es lo del video inverso (¿ver lo que habia en el pasado? ¿en serio?) eso ya seria impresionate!!
Será cuestion de testearlo...

gravatar
dballester dijo...
viernes, 20 de abril de 2007, 16:20:00 CEST  

Si, el comando watch es de lo más útil ;)

En cuanto a lo del video inverso, lo que hace es resaltar ( invertir los valores de color de fondo y color de letra ) en las zonas que han cambiado entre 2 tomas

gravatar
AlbertuX dijo...
sábado, 21 de abril de 2007, 12:59:00 CEST  

No es lo que yo pensaba lo del video inverso, pero también esta muy bien!!!

Publicar un comentario