monitoreo en status bar de tmux

index | OSiUX | blog | docs | charlas | rss

qmhandle-status-bar-tmux-spark.png

…anda lento… mmm… que raro!

Hace un par de meses que heredé un par de servidores con varios servicios que deben estar operativos 24x7 y entre ellos me tocó manter un qmail y como no podía ser de otra manera de tanto en tanto hay algo de SPAM y por ello la cola de mails se eleva. :S

A fin de tener alguna métrica de qué está sucediendo era necesario visualizar constantemente el estado de la cola y si bien hay muchísimas herramientas disponibles opté por el principio KISS 1 (Keep it simple, stupid), de momento sólo lo vería yo y posiblemente alguién más en mi ausencia, no quería instalar nada en ese servidor, tampoco tenía muchas posibilidades de conectarme a otros servidores por reglas de firewall y quería tenerlo visible en mi tmux ya que paso ahí gran parte del día (y a veces las noches)

bash para generar y spark para graficar

Abusando una vez más de bash hice un script en el server que envía un timestamp y metricas básicas, entre ellas la cantidad de mails encolados a un log y ese log se copia un una vps donde esta este blog, asi de esta manera el qmail envía a osiux.com el log y luego un script debería descargar de osiux.com para "graficar" localmente.

El contenido del script qmhandle:

#!/bin/sh
export http_proxy=""
log=/tmp/qmhandle.log
wget -q -O $log http://pub.osiux.com/qmhandle.log
q=`tail -20 $log | awk '{print $5}'`

a=`echo $q | awk '{print \$1}'`
b=`echo $q | awk '{print \$5}'`
c=`echo $q | awk '{print \$10}'`
d=`echo $q | awk '{print \$15}'`
e=`echo $q | awk '{print \$20}'`

echo $a `echo $a $b $c $d $e | spark` $e

Si ejecutamos qmhandle vemos:

441 ████▁ 440

Para entender qué estamos visualizando, miremos el log:

tail /tmp/qmhandle.log
2016-02-03 02:53 441 0 441 2 0
2016-02-03 02:54 441 0 441 2 0
2016-02-03 02:55 441 0 441 2 0
2016-02-03 02:56 441 0 441 2 0
2016-02-03 02:57 441 0 441 2 0
2016-02-03 02:58 441 0 441 2 0
2016-02-03 02:59 441 0 441 2 0
2016-02-03 03:00 440 0 440 2 0
2016-02-03 03:01 440 0 440 2 0
2016-02-03 03:02 440 0 440 2 0

El resultado es un timestamp con una serie de números, la columna 5 es la que importa y hay una línea nueva cada 1 minuto.

Al procesar el log, me quedo con la cantidad de mails encolados cada 1, 5, 10, 15 y 20 minutos, asi tengo una tendencia con unas bonitas barras (gracias a spark 2) y el mínimo y máximo, esta información se actualiza en la barra de tmux cada 1 minuto, agregando al ~/.tmux.conf el comando qmhandle:

set -g status-right '#[fg=red,bg=default]#(qmhandle) #[fg=colour231,bg=colour232] #(bateria) #[fg=colour11,bg=colour232] %d/%m %H:%M'

Básico pero efectivo! :)

Nota al pie de página:

Fecha: 2014-11-14

Autor: Osiris Alejandro Gómez

Emacs 24.3.1 (Org mode 8.3.3)

Validate