Tratando logs con awk

Hoy en el trabajo me he encontrado con una problemática bastante común cuando tratamos de filtrar logs: mucha información que no nos interesa.

Para solventar este problema, habitualmente, la primera aproximación sería con grep y cut pero habitualmente se quedan cortos ya que es complicado usarlos para filtrar por fecha/hora.

En este ejemplo se usará un archivo de log del estilo

2016/06/29 17:10:35.838:Fatal error core dumped
2016/06/29 17:15:35.838:Fatal error core dumped
2016/06/29 17:20:35.838:Fatal error core dumped
2016/06/29 17:30:35.838:Fatal error core dumped

Para poder filtrar por hora, podemos usar awk, en el siguiente script contaremos el numero de líneas que hay en un intervalo de tiempo determinado (por defecto, los últimos 15 min).

#!/bin/awk -f

BEGIN {

if(minutos==""){minutos=15 }
    umbral = minutos *60  # Miramos los ultimos N segundos del log 
    now = strftime("%H:%M:%S",systime())
    counter=0;
    debug=0
 }
{ 
    split($2,chunks,".");
    hour=chunks[1];
    m=split(hour,w,":")
    n=split(now,t,":")
    FIRSTTIME= (t[1]*3600) + (t[2]*60) + t[3]
    SECONDTIME= (w[1]*3600) + (w[2]*60) + w[3]
    DIFFTIME=(FIRSTTIME - SECONDTIME)
    if (debug == 1){
        printf("%s|%s|%s\n",FIRSTTIME,SECONDTIME,DIFFTIME)
    }
    if(DIFFTIME < umbral ){
        counter++;
    }
}
END { print  counter }

Para ejecutarlo bastaría con ejecutar:

cat mylog.log | awk -f script.awk -v minutos=8

Y el resultado sería

echo '2016/06/29 17:10:35.838:Fatal error core dumped
2016/06/29 17:15:35.838:Fatal error core dumped
2016/06/29 17:20:35.838:Fatal error core dumped
2016/06/29 17:30:35.838:Fatal error core dumped' | awk -f /var/www/scripts/countSuperacionesAma.awk -v minutos=8
1

Pues de este modo tan sencillo podemos tratar logs en función del tiempo.

Compilar un Kernel en Debian, Ubuntu y derivados.

IMG_0291-1.PNG
1. Conceptos básicos

Si posees conocimientos de GNU/Linux y sistemas operativos puedes aventurarte a la próxima sección; en la presente discutiremos conceptos básicos.

Cuando hablamos de «Linux» es frecuente referirnos al sistema operativo y sus aplicaciones y no al núcleo del sistema. La realidad es que Linux es solamente el núcleo del sistema (también denominado kernel): componente de gran envergadura que hace operar nuestra computadora. Entre las funciones más importantes del kernel: Sigue leyendo

Jugando con Arduino — Parte III (Domando la fonera)

En la última entrada de esta sección, se explicó como montar una VPN para acceder desde cualquier dispositivo a la Fonera,..

Esta noche intentaremos generar una pequeña interfaz de control para nuestro arduino, para ello utilizaremos la tecnología llamada CGI (Common Gateway Interface) esta tecnología permite incrustar en
una página web un binario, habitualmente estos CGI se utilizan para tareas que requieren acceso a hardware específico de la máquina, como el puerto de serie, webcams,… Habitualmente se sitúan en carpetas especiales en el servidor, suelen tener el nombre de cgi-bin.

CGI Process

Sigue leyendo

Preparando la integración : montando una VPN

Buenas noches a todos, con esta entrada os propongo una serie de pasos para poder tener una Fonera con una VPN montada.

Esto nos será de especial utilidad cuando integremos un gestor para la el Arduino dentro de nuestra Fonera. Recordemos que en la entrada Jugando con Arduino — Primera Parte tenía el Arduino conectado al puerto de serie de una Fonera 2200. Seguramente si se hubiera hecho con una FON 2.0 y su USB me hubiera ahorrado muchos dolores de cabeza a la hora de programar la integración… pero ese es otro tema.

El esquema de nuestra red será algo similar a esto:

Mapa Red VPN

Mapa Red VPN

Sigue leyendo

Jugando con Arduino — Segunda Parte

En esta segunda parte del tutorial, mostraré como capturar una señal infrarroja para después poderla replicar contra el dispositivo que elijamos, en mi caso un Aire Acondicionado.

Para ello utilizaremos un sensor TSOP1738 y un led infrarrojo que tiene su frecuencia de trabajo centrada en 38 kHz (Esta frecuencia es la más usada en dispositivos domésticos). Este tipo de sensor actualmente no se fabrica, aunque hay otros modelos TSOPXXXX que son igualmente válidos para nuestro propósito.

Para realizar la parte de captura de datos necesitaremos:

  • Un sensor infrarrojo TSOP1738
  • Un condensador de 4.7uF
  • Una resistencia de 10K Ohm
  • Una resistencia de 100 Ohm

Sigue leyendo

Jugando con arduino — Primera Parte

Buenos días a todo el mundo,

Como siempre en verano se suele tener un poco más de tiempo para cacharrear que cuando llega el invierno y las clases, el curro, y cientos de tareas rutinarias más…

Hoy toca jugar con arduino: como montar un sensor de temperatura y transmitir los datos a través del puerto de serie a través de una fonera.

Para quien no lo sepa un arduino sirve de placa entrenadora pero de bajo coste, es un hardware muy asequible para lo que se puede llegar a hacer con él.

Un arduino duelmilanove

Arduino Duelmilanove 328

La Fonera simplemente es uno de los primeros routers que salieron que llevaban un sistema OpenWrt de fábrica. Al igual que pasa con arduino las foneras tenían una relación calidad precio muy buena cuando salieron al mercado.

foneralogoth1 Sigue leyendo