/ prog

Goaccess

esta “bitacora” no incluye galletas, ni js (de mierda) y aunque tiene casi dos añitos de existir, hasta hace poco no tenia idea de cuantas personas (o cosas) se pasan por aqui o para que

uno de los cambios que vino tras (parte de) el exilio de github fue que ahora los logs del servidor son mios, para como todos los demas, “recoger estadisticas”. Sin embargo las consultas se limitaban a ver un conteo de visitas

> cat /var/log/nginx/access.log | awk '{ print $1 }' | sort | uniq -c | sort -n | perl -lane 'print $F[1], "\t", $F[0], "\t", "▄" x ($F[0] / 15)' | awk '{ tot+=$2 }; END { print "TOTAL " tot }'
TOTAL 16352

o graficar las ip mas frecuentes

> cat /var/log/nginx/access.log | awk '{ print $1 }' | sort | uniq -c | sort -n | tail | perl -lane 'print $F[1], "\t", $F[0], "\t", "▄" x ($F[0] / 20)'
188.40.107.254  228     ▄▄▄▄▄▄▄▄▄▄
192.3.177.102   231     ▄▄▄▄▄▄▄▄▄▄
23.237.4.26     301     ▄▄▄▄▄▄▄▄▄▄▄▄▄▄
92.185.168.114  315     ▄▄▄▄▄▄▄▄▄▄▄▄▄▄
5.45.207.58     346     ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
78.46.161.81    355     ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
216.244.66.228  693     ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
94.130.18.77    697     ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
104.248.193.105 724     ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
187.225.125.52  1234    ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

hasta que una nueva busqueda llevo a conocer un programito que puede hacer mas cosas con los logs de acceso de nginx (de apache y otros). No solo eso, ademas viene en los repositorios de debian 9, esta escrito en C, no requiere procesos en segundo plano, demonios, js o ninguna mierda extrabagante y nos hara sentir mejor persona

> apt install goaccess

si lo lanzamos de la siguiente manera

> goaccess -f /var/log/nginx/access.log

se abrira un menu para indicar el formato de log, fecha y tiempo que vamos a utilizar, porque, aunque el programa sea eficaz, no es magico

basta con presionar Espacio en una de las opciones y lugo dar un Enter

Si la opcion que hemos elegido no es valida para el log, nos lo informara y podremos probar otra hasta que funcione

con la informacion de esta pantalla, mas tarde podriamos configurar el programa para ingresar directamente en la interfaz de texto. Dentro de las opcciones que he podido probar y funcionan para mi servidor (nginx) con una sola pagina sin “Virtual Host”

las opcciones que son invalidas

con estos datos ya podemos acceder a la configuracion

> emacs /etc/goaccess.conf

y descomentar las siguientes lineas

...
time-format %H:%M:%S
...
date-format %d/%b/%Y
...
# NCSA Combined Log Format
#
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
...

tras esto, ejecutando de nuevo

> goaccess -f /var/log/nginx/access.log

entrariamos directamente en la interfaz de texto (q para salir)

podriamos ademas indicar cual es exactamente el fichero que vamos a utilizar como datos de entrada

# Specify the path to the input log file. If set, it will take
# priority over -f from the command line.
#
#log-file /var/log/apache2/access.log
log-file /var/log/nginx/access.log

de esta manera solo bastaria ejecutar goaccess sin ningun argumento extra. Pero y basado en mis pruebas, algunos parametros de linea de comandos, cuando se establecen en la configuracion (como log-file o log-format) parecen ser totalmente ignorados si se utiliza goaccess luego de una tuberia. Me explico, si tras la configuracion lanzamos

> goaccess -f /var/log/nginx/access.log -c

nos permite cambiar el fichero de entrada, tambien modificar el formato de log, fecha y hora. Sin embargo, utilizado en una tuberia

> zcat -f /var/log/nginx/access.log* | goaccess -c

goaccess se pasara por el forro los datos de la tuberia y tambien los parametros que agreguemos (-c). Solamente hace caso del contenido en su fichero de configuracion. Por esta razon, para hacer una metrica de un “bulto de logs” (como en el comando anterior) o de logs distintos, recomiendo no configurar log-file

adicionalmente he incluido las siguientes lineas para indicar que algunas extensiones se consideren como ficheros estaticos

static-file .mkv
static-file .webm
static-file .mp4
static-file .xz
static-file .zip

veamos ahora el uso de este programito, haciendo un

> zcat -f /var/log/nginx/access.log* | goaccess

veremos que tiene unos datos principales (como peticiones totales, visitantes unicos, ficheros estaticos, etc) y (moviendo las frechas arriba y abajo) las “secciones”

de las cuales una es la seccion “activa”. Esto se indica ademas de por un resaltado, por iniciar con el signo >.

Para entrar en dicha seccion, presionamos bien Espacio, o bien Enter

ya dentro, podemos movernos por “las filas” mediante j (abajo) y k (arriba), g inicio y G fin. Tambien, (de una manera un poco rara) ajustar lo que aparece en pantalla con arriba y abajo

para salir de “la seccion” precionamos q. Para saltar a la siguiente seccion TAB para saltar a la seccion anterior Shift-TAB y para ir a una seccion especifica mediante su numero del 1-9. (No me pregunten como ir a la seccion 1X). Para saltar a la ultima seccion G y a la primera g.

podemos alterar el tema de colores con c

y ver el resto de la ayuda con F1 o h

otra manera menos “rudimentaria” de ver las metricas seria crear un fichero html, Waaalaa!

Para eso, solamente es necesario rediriguir la salida de la siguiente forma

> zcat -f /var/log/nginx/access.log* | goaccess > mis-metricas.html

en la documentacion mencionan un parametro para hacer que las metricas en formato web funcionen en tiempo real

> goaccess /var/log/nginx/access.log -o /var/www/html/report.html --real-time-html

aunque en la vercion incluida en debian, dicho parametro no esta disponible. Por lo demas, consultar la pagina web del proyecto, su man y darles ★★★★★ en github

logrotate

y ahora veamos que con el buen log de nginx.

en debian cuando instalamos nginx desde los repos, misteriozamente comienzan a brotar ficheros access.log.1, access.log.2, access.log.3, …, a razon de uno por dia. Este comportamiento se debe a un programa que corre una vez por dia de nombre logrotate, que rota los ficheros access y error todos los dias… bien podria considerarse una copia de seguridad de los sucesos del servidor, o bien una molestia innecesaria, segun cada quien.

En un post de linuxito el nos comentaba como instalar y configurar logrotate, pero como ya en debian funciona por defecto sin que hagamos nada, me he limitado a modificar el comportamiento, de forma que los registros roten solo una vez por mes

mediante nuestro editor faborito

> emacs /etc/logrotate.d/nginx

aparece lo siguiente

/var/log/nginx/*.log {
        daily
        missingok
        rotate 14
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
        sharedscripts
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                        run-parts /etc/logrotate.d/httpd-prerotate; \
                fi \
        endscript
        postrotate
                invoke-rc.d nginx rotate >/dev/null 2>&1
        endscript
}

lo he dejado asi

/var/log/nginx/*.log {
	monthly
	missingok
	rotate 14
	compress
	notifempty
	create 0640 www-data adm
	sharedscripts
	prerotate
		if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
			run-parts /etc/logrotate.d/httpd-prerotate; \
		fi \
	endscript
	postrotate
		invoke-rc.d nginx rotate >/dev/null 2>&1
	endscript
}

nascii-results

y bueno, ya que estoy por que no hacer un analisis de los logs y optener informacion que no influira de ninguna manera el futuro de este diario… amenos no de momento y solo contemplando la posivilidad de colocar anuncios de hardware y de porno. A todo mundo le gusta el porno y el harware, no?

si quieren acompañarme con sus propias deducciones coloco el resultado aqui

El servidor inicio con los resgistros hace 17 dias con un total de 17XXX visitas, que serian una media aproximada de 1k por dia y segun la seccion Browsers el 27% se identifica con el genero no binario grissexual Crawlers. Otro buen habido 26% son firefoxxexual y el resto, las minorias oprimidas que no importan. 47% prefiere no informar que OS utiliza, 23% procede de las ventanas y los demas votan como Unix Like

aunque el sitio no esta contemplado para verse desde un movil

casi un 5% lo hace asi. Puede que no incluya mierdas web, pero las imagenes si las incluyo en sus resoluciones originales y aveces en png! Mmm, si se preguntaban yo la veo asi en el navegador

La hora preferida por los huespedes son las 05. El trafico en su mayoria proviene de

la mayoria de trafico se genera internamente (8%) una vez que vienen al sitio y el resto esta lidereado por planet.emacs-es.org, mi anterior blog en github-pages cuyo contenido apunta aca, unas pocas busquedas en google, bing, duckduck y alguna que otra de redit y “sitios raros”.

La mayoria solo ve la pagina de inicio. Otros tantos se sienten atraidos por las cosas de emacs y/o su curiosadad por los titulos compactos y poco intiutivos puede haceles creer que estan escritos en english. Tambien hay numerosas consultas al servidor por cosas que terminan en .php

una ves dentro del sitio, poco interesa por que no todos las entradas tienen trafico (o por que ya son habituales del sitio que consultan la novedad). Las novedades rondan 30 visitas, siendo lo mas consultado el feed (imagino que por mi mismo)

En resumen, deberia hacer caso a los crawlers y poner cosas en php!

/ prog