Cómo instalar y utilizar GoAccess Web Log Analyzer en Ubuntu 20.04

- 1 — Visitantes únicos por día
- 2 – Archivos solicitados (URL)
- 3 — Solicitudes estáticas
- 4 — URL no encontradas (404)
- 5 — Nombres de host y direcciones IP de los visitantes
- 6 — Sistemas operativos
- 7 — Navegadores
- 8 — Distribución del tiempo
- 9 — Hosts virtuales
- 10 — URL de referencia
- 11 — Sitios de referencia
- 12 — Frases clave
- 13 — Códigos de estado HTTP
- 14 — Usuario remoto (autenticación HTTP)
- 15 — Estado de la caché
- 16 — Ubicación geográfica
El autor seleccionó Internet Archive para recibir una donación como parte del programa Write for DOnations.
Introducción
GoAccess es una herramienta para monitorear registros de servidores web en tiempo real. Está escrita en C y utiliza la popular biblioteca ncurses para su interfaz de panel de control, a la que se puede acceder directamente desde la línea de comandos.
Esto es genial porque puedes acceder a cualquier servidor web que controles mediante SSH y ver o analizar estadísticas relevantes de forma rápida y segura. Además de la interfaz del panel de control de línea de comandos, también es capaz de mostrar las estadísticas en otros formatos, como HTML, JSON y CSV, que puedes usar en otros contextos o compartir con otros.
GoAccess también podría ser una gran alternativa a las herramientas de análisis del lado del cliente según sus necesidades. Analiza los registros de su servidor directamente, por lo que no necesita cargar ningún script adicional y sus datos están completamente bajo su control.
En este tutorial, instalará y configurará GoAccess para Apache en un servidor web Ubuntu 20.04. Accederá a los archivos de registro de Apache con GoAccess antes de revisar los módulos disponibles y los accesos directos de navegación en la interfaz de línea de comandos.
Prerrequisitos
Para este tutorial, necesitarás lo siguiente:
-
Un servidor Ubuntu 20.04. Puedes configurarlo siguiendo este tutorial de configuración inicial de servidor para Ubuntu 20.04, que incluye un usuario no root con privilegios sudo y un firewall.
-
Apache instalado siguiendo Cómo instalar Apache en Ubuntu 20.04.
Paso 1: Instalación de GoAccess
En este paso instalará la herramienta GoAccess y sus dependencias.
Comience por asegurarse de que la base de datos y el sistema del paquete estén actualizados:
- sudo apt update
- sudo apt full-upgrade
Ahora es el momento de instalar GoAccess. Hay una versión de la herramienta disponible en los repositorios de Ubuntu, pero no suele ser la última versión estable. Por ejemplo, la última versión de GoAccess en el momento de escribir este artículo es la 1.4, mientras que la versión disponible en los repositorios de Ubuntu 20.04 es la 1.3.
Para asegurarse de tener la última versión estable de GoAccess instalada en su servidor, puede compilarla desde la fuente o utilizar el repositorio oficial de GoAccess en Ubuntu.
Método 1: compilación desde el código fuente
Primero, instale las dependencias necesarias para compilar GoAccess desde la fuente:
- sudo apt install libncursesw5-dev libgeoip-dev libtokyocabinet-dev build-essential
Instala las siguientes dependencias:
build-essential
:instala muchos paquetes, que incluyengcc
compiladores para C, C+ y otros lenguajes de programación, ymake
para crear el archivo make de GoAccess.libncursesw5-dev
: instala la biblioteca ncurses que GoAccess utiliza para su interfaz de línea de comandos.libgeoip-dev
:incluye los archivos necesarios para la biblioteca GeoIP.libtokyocabinet-dev
:Proporciona dependencias de base de datos para un mayor rendimiento.
A continuación, descargue la última versión de GoAccess desde su sitio web oficial con el siguiente comando:
- wget http://tar.goaccess.io/goaccess-1.4.tar.gz
Una vez completada la descarga, extraiga el archivo con:
- tar -xzvf goaccess-1.4.tar.gz
Cambie al directorio recién descomprimido de la siguiente manera:
- cd goaccess-1.4/
Ejecute el script de configuración que se encuentra dentro de este directorio:
- ./configure --enable-utf8 --enable-geoip=legacy
La --enable-utf8
bandera garantiza que GoAccess se compile con compatibilidad con caracteres amplios, mientras que --enable-geoip
habilita la compatibilidad con GeoLocation con las bases de datos GeoIP originales. Puede reemplazar legacy
con mmdb
para utilizar las bases de datos GeoIP2 mejoradas en su lugar. Puede encontrar otras opciones de configuración en el sitio web de GoAccess.
Recibirá un resultado similar al siguiente:
Output. . .Your build configuration: Prefix : /usr/local Package : goaccess Version : 1.4 Compiler flags : -pthread Linker flags : -lnsl -lncursesw -lGeoIP -lpthread UTF-8 support : yes Dynamic buffer : no Geolocation : GeoIP Legacy Storage method : In-Memory with On-Disk Persitance Storage TLS/SSL : no Bugs : hello@goaccess.io
Ejecute el make
comando para crear el archivo makefile necesario para instalar GoAccess:
- make
Por último, instale GoAccess utilizando el makefile previamente creado en el sistema:
- sudo make install
Asegúrese de que el programa se haya instalado correctamente ejecutando:
- goaccess --version
Recibirá el siguiente resultado:
OutputGoAccess - 1.4.For more details visit: http://goaccess.ioCopyright (C) 2009-2020 by Gerardo OrellanaBuild configure arguments: --enable-utf8 --enable-geoip=legacy
Método 2: Uso de los repositorios oficiales de GoAccess
Otra forma de instalar GoAccess es mediante el repositorio oficial de Ubuntu para el programa. Este método es preferible si desea que se actualice a una versión más nueva automáticamente durante las actualizaciones del sistema sin tener que compilar desde la fuente para cada nueva versión. Primero debe agregar el repositorio a su servidor:
- echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
Primero obtienes el nombre de la versión de la distribución y luego lo envías a tee
, que se agrega al archivo /etc/apt/sources.list.d/goaccess.list
.
Con el repositorio en tu lista de fuentes, ahora puedes descargar la clave GPG para verificar la firma:
- wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -
A continuación, actualice la base de datos del paquete con el siguiente comando:
- sudo apt update
Por último, instale GoAccess:
- sudo apt install goaccess
GoAccess ya está instalado en tu servidor Ubuntu. En el siguiente paso, accederás y editarás su archivo de configuración para poder realizar cambios en la forma en que se ejecuta el programa.
Paso 2: Edición de la configuración de GoAccess
GoAccess incluye un archivo de configuración en el que puede realizar cambios permanentes en el comportamiento del programa. Edite este archivo para especificar la hora, la fecha y el formato de registro para que GoAccess sepa cómo analizar los registros del servidor.
El archivo de configuración puede estar ubicado en ~/.goaccessrc
o %sysconfdir%/goaccess.conf
donde %sysconfdir%
se encuentra /etc/,
/usr/etc/
, o /usr/local/etc/
. Para averiguar dónde se encuentra el archivo de configuración en su servidor, ejecute el siguiente comando:
- goaccess --dcf
Sample output/etc/goaccess/goaccess.conf
Edite este archivo de configuración usando nano
:
- sudo nano /etc/goaccess/goaccess.conf
Nota: Si este archivo no existe en el servidor, asegúrese de crearlo primero y completarlo con el contenido del goaccess.conf
archivo en GitHub.
Muchas de las líneas del archivo están comentadas. Para habilitar una opción, elimine el primer #
carácter que la precede. Primero, habilitemos la time-format
configuración para Apache. Esta configuración especifica la log-format
hora y permite que GoAccess analice cualquier archivo de registro de Apache en texto sin formato que cumpla con los criterios de formato admitidos.
/etc/goaccess/goaccess.conf
# The following time format works with any of the# Apache/NGINX's log formats below.#time-format %H:%M:%S
A continuación, descomentarás la date-format
configuración de Apache que especifica la log-format
fecha:
/etc/goaccess/goaccess.conf
# The following date format works with any of the# Apache/NGINX's log formats below.#date-format %d/%b/%Y
Por último, descomente la log-format
configuración. Varias líneas cambian esta configuración y la que debe descomentar depende de la forma en que esté configurado su servidor web. Si tiene una configuración de hosts no virtuales, descomente la siguiente log-format
línea:
/etc/goaccess/goaccess.conf
# NCSA Combined Log Formatlog-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
De lo contrario, si tiene hosts virtuales configurados, descomente la siguiente línea:
/etc/goaccess/goaccess.conf
# NCSA Combined Log Format with Virtual Hostlog-format %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
En este punto, puede guardar el archivo y salir del editor. Ahora está listo para ejecutar el programa GoAccess y analizar algunos archivos de registro de texto sin formato de Apache.
Paso 3: Acceder a los archivos de registro de Apache con GoAccess
El servidor Apache otorga acceso a su sitio web y mantiene un registro de acceso para todo el tráfico HTTP entrante. Estos registros, o archivos de registro, se almacenan en el sistema y pueden ser una valiosa fuente de información sobre el uso y la audiencia de su sitio web.
En Ubuntu, los archivos de registro de Apache se almacenan en el /var/log/apache2
directorio de forma predeterminada. Para inspeccionar el contenido de este directorio, ejecute el siguiente comando:
- sudo ls /var/log/apache2
Sample outputaccess.log error.log other_vhosts_access.log
Si su servidor ha estado funcionando durante mucho tiempo, es posible que encuentre .gz
archivos comprimidos en este directorio que contienen archivos de registro anteriores como resultado de la rotación de registros. Los registros más recientes se colocan en un access.log
archivo. En el caso de servidores web con hosts virtuales, es posible que deba cd
ingresar a subdirectorios dentro del /apache2
directorio para ubicar los archivos de registro de cada host.
Ejecutemos GoAccess en los registros de acceso de Apache para obtener información sobre el tipo de tráfico que maneja el servidor web. Ejecute el siguiente comando para analizar su access.log
archivo con GoAccess:
- sudo goaccess /var/log/apache2/access.log
Esto iniciará el panel de línea de comandos de GoAccess.
Nota: Si en su lugar aparece un mensaje de configuración del formato de registro, significa que los cambios que realizó en el archivo de configuración de GoAccess en el paso anterior no surten efecto. Asegúrese de que el archivo de configuración esté en el lugar correcto y de que haya quitado los comentarios de las configuraciones necesarias.
Como se mencionó anteriormente, a veces tendrá varios archivos de registro comprimidos en un servidor web de larga duración. Para ejecutar GoAccess en todos estos archivos sin extraerlos primero, puede enviar la salida del zcat
comando a goaccess
:
- zcat /var/log/apache2/access.log.*.gz | goaccess -a
A continuación, aprenderá a navegar rápidamente a través de la interfaz del panel con atajos de teclado.
En la parte superior del panel se incluye un resumen de varias métricas clave, como el total de solicitudes durante el período del informe, los visitantes únicos, el tamaño del registro, los errores 404 no encontrados, los archivos solicitados, el tamaño del archivo de registro analizado, los referentes HTTP, el nombre de la fuente del registro, el tiempo que lleva procesar el archivo de registro y más.
Debajo del panel superior, encontrará todos los módulos disponibles que brindan más detalles sobre las métricas mencionadas anteriormente y otros puntos de datos compatibles con GoAccess. Para navegar por la interfaz, utilice los siguientes atajos de teclado:
TAB
para avanzar a través de los módulos disponibles ySHIFT+TAB
para retroceder.F5
Para actualizar el tablero.g
para moverse a la parte superior de la pantalla del tablero yG
para moverse al último elemento del tablero.o
oENTER
para expandir el módulo seleccionado.j
yk
desplazarse hacia abajo y hacia arriba dentro del módulo activo.s
para mostrar las opciones de clasificación para el módulo activo./
para buscar en todos los módulos yn
pasar a la siguiente coincidencia.0-9
ySHIFT+0
activar rápidamente el módulo numerado correspondiente.?
para ver el cuadro de diálogo de ayuda rápida.q
para salir del programa.
A continuación, examinemos cada uno de los módulos disponibles en el panel de control. Cada uno tiene un número y un título, y una indicación del número total de líneas presentes. El carácter indica el panel activo, que también se refleja en la parte superior del panel de control.
A continuación se presenta una breve explicación de cada uno de los paneles. Cada sección a continuación corresponde al número y título del panel en el programa.
1 — Visitantes únicos por día
Este panel muestra los hits, visitantes únicos y ancho de banda acumulado para cada fecha informada. Se considera visitante único a aquel que tiene la misma dirección IP, fecha y agente de usuario. Incluye rastreadores web y arañas de forma predeterminada.
2 – Archivos solicitados (URL)
Este panel proporciona las estadísticas sobre los archivos no estáticos más solicitados en su servidor web. Muestra la ruta de solicitud, el protocolo y el método HTTP, los visitantes únicos, la cantidad de visitas y el ancho de banda acumulado.
3 — Solicitudes estáticas
Este panel proporciona las mismas métricas que el anterior, pero para archivos estáticos como imágenes, CSS, JavaScript u otros tipos de archivos.
4 — URL no encontradas (404)
Este panel también muestra las mismas métricas analizadas en 2 y 3, pero para rutas que no se encontraron en el servidor (404).
5 — Nombres de host y direcciones IP de los visitantes
Este panel proporciona información detallada sobre los hosts que se conectan a su servidor web. Puede encontrar su dirección IP, la cantidad de visitas y la cantidad de ancho de banda consumido. Esta es una excelente manera de identificar quién está consumiendo todo su ancho de banda y bloquearlo si es necesario.
Si expande este panel presionando o
, verá más información sobre cada host, como su país de origen, ciudad y resultado de búsqueda de DNS inversa.
6 — Sistemas operativos
Este panel muestra los diferentes sistemas operativos que utilizan los hosts para conectarse a su servidor web. Al expandir este panel, se mostrarán versiones específicas de cada sistema operativo.
Similar al panel anterior, este informa los navegadores utilizados por cada visitante único de su servidor web y enumera versiones específicas para cada navegador una vez expandido.
8 — Distribución del tiempo
Aquí encontrará un informe por horas sobre la cantidad de visitas, visitantes únicos y ancho de banda consumido. Es una excelente manera de detectar períodos de tráfico pico en su servidor.
9 — Hosts virtuales
Este panel muestra los hosts virtuales analizados a partir del archivo de registro. Se activa solo si %v
está incluido en la configuración del formato de registro.
10 — URL de referencia
Aquí se reflejan las URL que remitieron a los hosts visitantes a su servidor web. Este panel está deshabilitado de forma predeterminada y solo se puede habilitar comentando la REFERRERS
línea resaltada a continuación en el archivo de configuración de GoAccess:
/etc/goaccess/goaccess.conf
#ignore-panel VISIT_TIMES#ignore-panel VIRTUAL_HOSTS#ignore-panel REFERRERS#ignore-panel REFERRING_SITES
11 — Sitios de referencia
Este panel muestra la dirección IP de los hosts de referencia, pero no la URL completa.
12 — Frases clave
Aquí se muestran las palabras clave utilizadas en la búsqueda de Google, la memoria caché de Google y el traductor de Google que llevaron a su sitio web. Este panel también está deshabilitado de forma predeterminada y debe habilitarse en la configuración:
/etc/goaccess/goaccess.conf
#ignore-panel REFERRERS#ignore-panel REFERRING_SITES#ignore-panel KEYPHRASES#ignore-panel STATUS_CODES
13 — Códigos de estado HTTP
Este panel refleja las estadísticas generales de los códigos de estado HTTP que devuelve el servidor web al responder a una solicitud. Al expandir el panel, se mostrarán las estadísticas agregadas de cada código de estado.
14 — Usuario remoto (autenticación HTTP)
Este panel muestra el ID de usuario de la persona que solicita un documento en su servidor, según lo determina la autenticación HTTP. En el caso de los documentos que no están protegidos con contraseña, esta parte será -
. Tenga en cuenta que este panel solo está habilitado si %e
es parte de la configuración del formato de registro.
15 — Estado de la caché
Este panel le permite determinar si una solicitud se almacena en caché y se atiende desde la memoria caché. Está habilitado si %C
es parte de la variable log-format y el estado puede ser MISS
, BYPASS
, EXPIRED
, STALE
, UPDATING
, REVALIDATED
o HIT
.
16 — Ubicación geográfica
Este panel ofrece un resumen de las ubicaciones geográficas derivadas de las direcciones IP visitadas. Al expandir este panel, se mostrarán las estadísticas agregadas para cada país de origen.
Has revisado los paneles disponibles en el tablero, ahora generarás informes en diferentes formatos.
Paso 5: Generar informes
Además de mostrar los datos en la terminal, GoAccess también te permite generar informes HTML, JSON o CSV. Asegúrate de estar en el directorio de inicio antes de ejecutar cualquiera de los comandos de esta sección:
- cd ~
Para generar el informe como HTML estático, especifique un archivo HTML como argumento del -o
indicador. Este indicador también acepta nombres de archivo que terminen en .json
o .csv
.
- sudo goaccess /var/log/apache2/access.log -o stats.html
stats.html
Debería aparecer un archivo en su directorio de usuario.
- ls
Outputgoaccess-1.4 goaccess-1.4.tar.gz snap stats.html
Puede copiar este archivo al directorio de usuario de su máquina local mediante scp
. Ejecute este comando desde su máquina local, no desde el servidor remoto:
- scp user@your_server_ip:stats.html ~/stats.html
Una vez copiado el archivo, puedes abrirlo en tu navegador con el open
comando en macOS:
- open ~/stats.html
O si estás usando una distribución de Linux en tu máquina local:
- xdg-open ~/stats.html
Ha generado un informe HTML y lo ha visto en su navegador.
Conclusión
En este artículo, analizamos la herramienta de línea de comandos GoAccess y analizamos cómo usarla para analizar registros de servidores. Si bien solo consideramos cómo se puede usar GoAccess con registros de Apache, la herramienta también admite otros formatos de registro, como Nginx, Amazon S3, Elastic Load Balancing y CloudFront.
Puede consultar la documentación completa de GoAccess o ejecutarla man goaccess
en su terminal.
Deja una respuesta