GARBAGE COLLECTION LOG ANALYSIS API

gceasy.io is introducing a RESTful API to analyze garbage collection logs. Here are a couple of use cases where this API can be used.

Origen: GARBAGE COLLECTION LOG ANALYSIS API

Anuncios

Magia con AWK

Hoy traigo a estos apuntes para que no se nos olvide un truco de magia con AWK. Para los que conocemos este lenguaje en bash, la mayoría lo hacemos para filtrar alguna columna dentro de algún log. Yo lo uso mucho sobre los logs de apache para sacar las IP’s las peticiones, los códigos de respuesta….

Me ocurrió hace muy poco que analizando el log de la recolección de basura de una máquina virtual de java el tiempo de las recolecciones venía reflejado en milisegundos a contar desde el último reinicio del servidor Tomcat. Me interesaba en ese momento medir la frecuencia entre una recolección y otra puesto que podía medir el incremento en milisegundos, pero no se me ocurría un modo ágil de hacerlo y tampoco quería ponerme a hacer un script para una información que no estaba seguro de que fuera a servirme. Por suerte y tras buscar un poco me encontré con esta información que cito como fuente:

http://www.unix.com/shell-programming-and-scripting/130727-how-subtract-adjacent-lines-single-column.html

La propuesta es usar el propio AWK como un almacén de variables que van siendo tratadas línea tras línea:

awk 'p{print $0-p}{p=$0}' file

Con esto conseguiremos ir viendo la resta que hay entre cada valor y el anterior. Lo fascinante de esto es que opera sobre la misma columna y usa un resultado que el propio script ha generado durante su ejecución sin tener que realizar bucles for ni operaciones más costosas.

 

Bucear en el log de apache I

Muchas veces tenemos que bucear en el log de apache para filtrar la información que nos es necesaria en un momento determinado. Con la siguiente línea, extraemos la IP de todo el log de apache de un día determinado, la ordenamos y obligamos a que se cuenten sus ocurrencias, y luego volvemos a ordenar interpretando la columna 1, como números y no como strings, por último sacamos sólo la cabecera que es lo que nos interesa. ¡Ojo! Con el comando awk vamos sacando los elementos de cada una de las líneas $1, $2, $3… En este caso previamente le echamos un vistazo al log y vemos que la IP de las peticiones se inicia al principio de cada línea, por eso es la primera variables que detecta awk.

 
cat access_log-20160414 | awk '{print $1}' | sort | uniq -c | sort -gr | head

Una vez aplicado esto, obtendremos un resultado tal que:

 45911 XX.126.XX.120
 29396 XXX.104.XXX.61
 29296 XXX.68.5.2X9
 29042 XXX.238.1X2.156
 28554 XXX.54.36.213
 23404 XXX.247.X6.239
 21417 XXX.96.6X.108
 17821 XXX.163.0.154
 16371 XXX.247.52.14
 14938 XXX.67.5X.66

He maquillado con X las IP’s dado que es un ejemplo real. El siguiente paso podría ser  identificar alguna ip como sospechosa y bannearla en nuestro iptables, o en nuestro servidor apache.

Aunque pueda parecer una consecución de comandos algo ingenua, considero que la clave de todo está en el  “sort -gr” .  Con -g interpretamos como números las ocurrencias detectadas, y con -r las ordenamos al revés para que nos muestre las más numerosas al principio.

doctor-tux

Esto os va a ahorrar tiempo.

 

Medir la velocidad de nuestro servidor con distintos ISP

Es posible que durante nuestras labores cotidianas de administración de sistemas nos veamos en la necesidad de testear la velocidad de nuestro ancho de banda de Internet. Existen páginas que nos permiten hacer esto desde el navegador, pero por lo general, los servidores con los que trabajamos no poseen una interfaz gráfica y la mayoría de las veces nos conectamos a ellos de modo remoto mediante una conexión ssh

En el siguiente enlace tenemos el modo de uso de un script en python que no sólo nos permite testear nuestra velocidad de Internet, sino que nos permite además hacerlo contra varios ISP o proveedores de servicio de modo que podemos testear el ancho de banda del que disfrutamos según el país al que queramos servir los recursos o reclamarlos.

Fuente Original