Herramientas de línea de comando para analizar archivos de registro de Apache [cerrado]


16

Tengo un montón de archivos de registro de Apache que me gustaría analizar. Estoy buscando una herramienta que no requiera mucha configuración; algo que puedo ejecutar un registro a través de la línea de comandos, sin perder el tiempo en nuestros servidores web en vivo.

¿Alguna recomendación?


Y el sistema operativo que vas a utilizar es ...
Izzy

Linux o MacOSX ...
mmattax

1
"Analizar" no dice mucho. ¿Que estás tratando de hacer? ¿Buscar una cadena, números crujientes?
David

Respuestas:


7

Si bien las herramientas anteriores son geniales, creo que sé lo que preguntaba el interrogador. A menudo me duele que no pueda extraer la información de un registro de acceso de la misma manera que puedo con otros archivos.

Se debe al formato de registro de acceso tonto:

127.0.0.1 - - [16/Aug/2014:20:47:29 +0100] "GET /manual/elisp/index.html HTTP/1.1" 200 37230 "http://testlocalhost/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0"

¿Por qué usaron [] para la fecha y "" para otras cosas? ¿Pensaron que no sabríamos que había una cita en el campo 4? Es increíblemente frustrante.

La mejor herramienta en este momento para esto es gawk:

gawk 'BEGIN { FPAT="([^ ]+)|(\"[^\"]+\")|(\\[[^\\]]+\\])" } { print $5 }'

en los datos anteriores esto te daría:

"GET /manual/elisp/index.html HTTP/1.1"

En otras palabras, el FPAT le brinda la capacidad de extraer los campos del registro de apache como si fueran campos reales en lugar de solo entidades separadas por espacios. Esto es siempre lo que quiero. Entonces puedo analizar eso un poco más con una tubería.

El funcionamiento del FSPAT se define aquí: http://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.html

Por lo tanto, puede configurar un alias para crear un gawk que pueda analizar registros de apache:

alias apacheawk="gawk -vFPAT='([^ ]+)|(\"[^\"]+\")|(\\\\[[^\\\\]]+\\\\])' " apacheawk '$6 ~ /200/ { print $5 } | sort | uniq

hizo esto para mí:

"GET / HTTP/1.1"
"GET /manual/elisp/index.html HTTP/1.1"
"GET /manual/elisp/Index.html HTTP/1.1"
"GET /scripts/app.js HTTP/1.1"
"GET /style.css HTTP/1.1"

y, por supuesto, casi cualquier otra cosa ahora es posible.

¡Disfrutar!


1
2 comentarios: La fecha no está realmente en el campo 4 sino en los campos 4 + 5 ^^ (sin el cambio de GMT, la fecha tiene poco valor). Y un access_log tiene la mayoría de las veces 12 campos (en realidad, podría haber más de 12 campos, ya que el 12 es el agente http, que también puede contener muchos espacios en su nombre ... los primeros 11 campos son fáciles de analizar, y el duodécimo campo (y quizás más) restante debería ser el agente http). Entonces puede simplemente: awk '($9 == 200) {print $6,$7,$8}'mostrar lo mismo que en su ejemplo. No es necesario usar FPAT allí (aunque este método puede ser útil en otros casos)
Olivier Dulac

Creo que estás sobre criticando. La fecha está en el campo 4 si considera que el campo está delimitado por []. La mayoría de las veces un archivo de registro está en una zona horaria, por lo que la zona no es necesaria. El punto de mostrar el ejemplo no era mostrar que algo era exclusivamente posible de esta manera, sino mostrar el truco general.
nic ferrier

1
Estoy muy sorprendido ... No "critiqué" en absoluto, solo señalé 2 comentarios (y dije que, de hecho, el método que usaste puede ser útil en otros casos, pero aquí simplemente no es necesario) ...
Olivier Dulac

6

Wtop es genial. También hay otras utilidades. A menudo, analizaré los registros usando bash, sed y awk.


wtop, y especialmente su analizador de registros logrep son geniales, una vez que adapte .conf a su formato de registro, proporcionará una forma rápida de obtener lo que necesita (url superior, tráfico, etc.)
aseques


1

¿Qué tipo de salida quieres?

Si solo está buscando contar cosas, haga grep algo logfile.txt | wc -l funciona muy bien. Si quieres gráficos bonitos ... no tanto.


Para Windows, el comando find imita grep hasta cierto punto.
Chris Nava

0

si tiene una estación de trabajo de Windows que puede usar, entonces logparser es la herramienta de elección


0

analógico funciona bien de fábrica y no requiere mucha configuración. logwrangler es un paquete que funciona con analógico para generar una salida más agradable y también requiere poca configuración.


0

En lugar de usar una herramienta de línea de comandos, sugiero que pruebe Apache Logs Viewer. Es una herramienta gratuita que puede monitorear y analizar el archivo de registro de Apache. Puede generar algunos gráficos e informes geniales sobre la marcha.

Más información de http://www.apacheviewer.com

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.