Análisis simple mirando los logs del Squid
Hola, parece que siempre dejamos pasar un tiempo largo para escribir en el blog. Espero que no vuelva a pasar. Siempre tengo ganas de escribir y nunca encuentro el tiempo. Esta vez en vez de escribir algo largo, me decidi por algo mas corto y puntual.
Hablando con unos clientes sobre el consumo de su ancho de banda, nos pusimos a trabajar en varios frentes para investigar en que se estaba generando trafico. Seguramente en otro post contare que herramientas se usaron. Pero en este vamos a hablar del consumo por navegacion. Quería saber que hacen los usuarios mas alla de ver los top de paginas destino, buscaba demostrarle al cliente que sus usuarios no usaban internet para trabajar. Y que hay que reestringir mucho mas.
Por suerte usan como proxy Squid, me permite analizar de manera flexible los logs. Me puse a discutir mostrandole un análisis de los logs del proxy, para esto hace tiempo armamos unas paginas donde el cliente puede ver estadísticas del uso/abuso de la navegación de manera diaria y mensual.
Mirando otros reportes comerciales (W*bsense, etc) siempre para mejorar nuestros reportes, observe que muestran que busco la gente en Google, de esa manera uno puedo ver cuando se pierde el tiempo en cosas del negocio o en cosas “personales”. Este post no es para discutir cuestiones de privacidad, solamente para que miremos algunas estadísticas reales y como se obtuvieron.
En conclusión quería agregarle a mi reporte para los clientes, que buscan en Google. Y para mostrar una parte del mismo, hice dos pequeños scripts para analizar el log, llamados “search_string.pl” (se queda con la frase buscada) y “search_tokens.pl” (arma tokens con las palabras), más abajo van a poder ver el código. Básicamente parsean el log y busca en la URL pedida el string “q=” que usa Google para la busqueda. Uno para frases y el otro para tokens.
Ahora les voy a mostrar dos ejemplos reales para que vean en que pierde el tiempo a gente (o gana depende de donde se mire).
Empresa 1. Top 25 de busquedas.
En el listado removí items por privacidad.
Algunas cosas para notar:
- Vemos búsquedas de armas, sera bueno seguir trabajando ahi?
- Facebook (esta bloqueado para el 90% de los usuarios)
- Tienen bloqueadas algunas paginas por eso buscan proxys alternativos.
- Esta de moda alguna película de Hollywood (se puede ver en los strings y tokens).
String
~# grep google.com /var/log/squid/access.log | perl search_string.pl \
| sort | uniq -c | sort -nr | head -n25
66 winona ryder the black swan
51 winona ryder surgery
34 facebook
28 imagenes de vangelis teens
27 armas
26 mejor pagina callcenter
25 hotel san marcos de mar de ajo
18 policy logon run url win 2008
18 imagenes de enya
15 squid para windows xp
13 policy to execute logon url and logoff win 2008
13 infobae
13 hoteles en mar de ajo
13 3g netbook
12 wireless tigre
12 rock _ pop en mar de ajo
12 nickelback taringa mediafire
12 mapa de mar de ajo
11 pearl___ 9100
11 ipaq site_www_dealextreme_com
11 instalar servidor proxy windows xp
11 charm school roxette
10 windows server 2008 r2
10 script to execute url
10 proxy server taringa
Tokens
~# grep google.com /var/log/squid/access.log | perl search_tokens.pl \
| sort -nr | head -n25
122 winona
120 ryder
69 2008
67 proxy
66 swan
66 black
57 imagenes
54 avenida
51 surgery
50 windows
50 policy
50 nickelback
49 logon
46 taringa
45 como
44 hotel
41 execute
40 server
38 elcano
37 mejor
34 facebook
33 lacoste
32 marcos
30 pagina
29 vangelis
Empresa 2. Top 25 de busqueda.
En el listado removí items por privacidad.
Algunas cosas para notar:
- Este es otro cliente que se quejan siempre porque anda lento, y encima lo que mas buscan son Juegos? y Clarin!
- Fotos de chicas desnudas?
- Los sitios sexuales estan bloqueados.
- Un colegio para los chicos?
- Vacaciones
Strings
~# grep google.com /var/log/squid/access.log | perl search_strings.pl \
| sort | uniq -c | sort -nr | head -n25
133 juegos
106 clarin
95 balneario reta
88 rivera indarte
69 cintia ressel
65 omnibus chile
65 ley contrato laboral tiempo almuerzo argentina
60 clarin edicion impresa
57 cine devoto
56 hotmail
55 los viajes de gulliver cines
55 cai informatica zarate
49 manual de termostato honeywell t6570
47 ana santini
45 cursos de la uba
43 village caballito
43 magyar himnusz
43 fotos de chicas desnudas
42 colegio misericordia
42 colegio de mendoza
41 ruta 1000
41 ley de contrato de trabajo licencia por enfermedad
41 kazdan
41 casa
38 manual de telescopio reflector
Tokens
~# grep google.com /var/log/squid/access.log | perl search_tokens.pl \
| sort -nr | head -n25
409 colegio
274 argentina
243 contrato
239 trabajo
230 para
206 2011
202 juegos
186 clarin
162 hotel
161 manual
151 salon
149 mapa
149 banco
140 function
138 letra
131 between
129 performance
129 chile
126 buenos
125 viajes
114 escobar
114 capacity
113 motor
113 devoto
112 titulo
Script: search_strings.pl
# @logentry = ($datetime,$secs,$ip,$code,$bytes,$re,$url,$user,$hc,$type)
use URI::Escape;
$|=1;
$min_len = 4;
while (<STDIN>) {
chomp;
my @logentry = split /\s+/;
my $url = $logentry[6];
if ($url =~ /q=([^&]+)/) {
$match = uri_unescape($1);
$match =~ s/\+/ /g;
$match =~ tr/A-Z/a-z/;
$match =~ s/[^\w\s]/_/g;
next if length($match) < $min_len;
} else {
next;
}
print "$match\n";
}
Script: search_tokens.pl
# @logentry = ($datetime,$secs,$ip,$code,$bytes,$re,$url,$user,$hc,$type)
use URI::Escape;
$|=1;
$min_len = 4;
while (<STDIN>) {
chomp;
my @logentry = split /\s+/;
my $url = $logentry[6];
if ($url =~ /q=([^&]+)/) {
$match = uri_unescape($1);
$match =~ s/\+/ /g;
$match =~ tr/A-Z/a-z/;
$match =~ s/[^\w\s]/_/g;
while ($match =~ /(\w+)/g) {
$token = $1;
next if length($token) < $min_len;
$words{$token}++;
}
}
}
foreach $token (keys %words) {
print "$words{$token} $token\n";
}
Como yapa, saben que me gusta el tema de visualización, asi que hice un script más modificando “search_tokens.pl” para solo listar los token (no sumarizar) y generar un txt. Primero algo simple y luego usando “tagxedo.com” genero una imagen de “cloud words”.
Click en las imagenes para ampliar.
Saludos





Entries (RSS)