Cómo instalar GoAccess Web Log Analyzer en Rocky Linux 8

Panel de control de acceso

GoAccess es un analizador de registros liviano de código abierto que puede leer y analizar archivos de registro de múltiples formatos, incluidos Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, Caddy, etc. Está escrito en lenguaje C y utiliza la biblioteca ncurses para su interfaz de tablero, a la que se puede acceder desde la línea de comandos.

Puede generar informes en formato HTML, JSON y CSV, que se pueden compartir con otros. Incluso puede generar informes HTML en tiempo real que se pueden mostrar a través de un enlace público.

En este tutorial, aprenderá a instalar GoAccess Analyzer en un servidor basado en Rocky Linux y configurarlo para leer registros de Nginx y generar informes en tiempo real.

requisitos previos

  1. Un servidor que ejecuta Rocky Linux 8.
  2. Un usuario no root que tenga privilegios sudo.
  3. Nginx ejecutándose en el servidor para acceder a los registros.
  4. Asegúrate de que todo esté actualizado.
    $ sudo dnf update
    

Paso 1: instalar dependencias para GoAccess

La última versión de GoAccess v1.5.2 no está disponible en el repositorio predeterminado. Para instalar la última versión de GoAccess, la construiremos desde la fuente. El primer paso es descargar las dependencias requeridas para construir el paquete GoAccess.

$ sudo dnf install ncurses-devel libmaxminddb-devel openssl-devel 
$ sudo dnf groupinstall 'Development Tools'

Paso 2: descarga e instala GoAccess

Descargue la última versión del archivo de GoAccess. Puede encontrar la última versión de GoAccess en el pagina oficial de descarga.

$ wget https://tar.goaccess.io/goaccess-1.5.2.tar.gz

Extraiga los archivos del archivo.

$ tar -xzvf goaccess-1.5.2.tar.gz

Configure e instale el paquete.

$ cd goaccess-1.5.2
$ autoreconf -fi
$ sudo ./configure --enable-utf8 --enable-geoip=mmdb --with-openssl
$ sudo make
$ sudo make install

Verifique que GoAccess se esté ejecutando.

$  goaccess --version
GoAccess - 1.5.2.
For more details visit: https://goaccess.io/
Copyright (C) 2009-2020 by Gerardo Orellana

Build configure arguments:
  --enable-utf8
  --enable-geoip=mmdb
  --with-openssl

Paso 3: descargue la base de datos GeoIP

Puede descargar la base de datos GeoIP desde DB-IP o maxmind. Si va a descargar desde Maxmind, deberá crear una cuenta y generar una clave de licencia gratuita. La descarga desde DB-IP se puede hacer directamente.

Descargue el archivo zip del país de cualquiera de las fuentes anteriores. Una vez descargados, extráigalos y cargue el archivo .mmdb en el servidor a una carpeta personalizada como /home//geoip.

Paso 4: configurar GoAccess

GoAccess almacena su archivo de configuración en /usr/local/etc/goaccess/goaccess.conf. Puede verificar la ubicación del archivo en su sistema usando el siguiente comando.

$ goaccess --dcf
/usr/local/etc/goaccess/goaccess.conf

Abra el archivo para editarlo.

$ sudo nano /usr/local/etc/goaccess/goaccess.conf

La mayoría de las opciones están comentadas. Puede usar estas opciones a través de la línea de comando o establecerlas en el archivo aquí. Para habilitar una opción, elimine el carácter # delante de ella.

Primero, habilitemos la opción de formato de hora. Analizaremos los archivos Nginx en nuestro tutorial, así que habilite la opción destinada a los registros de Apache/Nginx.

# The following time format works with any of the
# Apache/NGINX's log formats below.
#
time-format %H:%M:%S

A continuación, habilite la opción de formato de fecha de Nginx.

# The following date format works with any of the
# Apache/NGINX's log formats below.
#
date-format %d/%b/%Y

A continuación, habilite la opción de formato de registro. En nuestro tutorial, utilizaremos el formato de registro combinado, que es el que Nginx suele utilizar.

log-format COMBINED

Si sus archivos de registro contienen el campo Host virtual, habilite la siguiente opción en su lugar.

log-format VCOMBINED

Suponga que desea tener más control sobre el formato del registro. En ese caso, puede habilitar la siguiente línea (según el registro al que acceda) y agregar o eliminar parámetros según sus necesidades.

log-format %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

Para habilitar el módulo GeoIP, habilite la siguiente opción ingresando la ruta a la base de datos GeoIP.

# For GeoIP2 Country database:
# Download the GeoLite2-Country.mmdb.gz
# gunzip GeoLite2-Country.mmdb.gz
#
geoip-database /home/geoip/dbip-country-lite-2021-10.mmdb

Guarde el archivo presionando Control + X y entrando Y cuando se le solicite una vez que haya terminado.

Paso 5 – Ejecute GoAccess

Normalmente, si desea ejecutar GoAccess, deberá usar el siguiente comando.

$ sudo /usr/local/bin/goaccess /var/log/nginx/access.log

Necesitamos usar sudo porque los usuarios normales no pueden abrir los archivos de registro. Además, deberá usar la ruta completa para el ejecutable con el comando sudo porque el comando sudo no reconoce las aplicaciones en el directorio /usr/local/bin. Sin embargo, puede sortear la limitación creando un enlace simbólico.

Para hacer eso, ejecute el siguiente comando.

$ sudo ln -s /usr/local/bin/goaccess /usr/bin/goaccess

Ahora, puede ejecutar GoAccess directamente.

$ sudo goaccess /var/log/nginx/access.log

Los archivos de registro de Nginx mantienen un registro de todo el tráfico HTTP entrante. Si su servidor ha estado funcionando durante mucho tiempo, verá varios registros de acceso con los registros más antiguos en formato .gz comprimido. Los archivos de registro más antiguos se generan como resultado de la rotación de registros.

Una vez que ejecute el comando, será recibido con el siguiente tablero.

Panel de control de acceso

GoAccess le proporciona varios métodos abreviados de teclado para navegar por el panel.

  • TAB para avanzar por los módulos disponibles y SHIFT+TAB para retroceder.
  • F5 para actualizar el tablero.
  • g para moverse a la parte superior de la pantalla del tablero y G para moverse a la parte inferior.
  • o o ENTER para expandir el módulo seleccionado.
  • j y k para desplazarse hacia arriba y hacia abajo 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 y n para pasar a la siguiente coincidencia.
  • 0-9 y SHIFT+0 para activar rápidamente el módulo numerado respectivo.
  • ? para ver el cuadro de diálogo de ayuda rápida.
  • q para salir del programa.

Repasemos todos los paneles en breve.

  1. Visitantes únicos por día – Este panel se explica por sí mismo. Enumera visitantes únicos, visitas y ancho de banda acumulativo para cada fecha. También incluye rastreadores web y arañas por defecto.
  2. Archivos solicitados (URL) – Este panel proporciona las estadísticas sobre los archivos no estáticos más solicitados en su servidor.
  3. Solicitudes estáticas – Es similar al panel anterior excepto que maneja archivos estáticos como imágenes, CSS, JavaScript, etc.
  4. URL no encontradas (404) – Este panel registra todas las solicitudes a archivos y rutas que no se encuentran en su servidor.
  5. Nombres de host e IP de los visitantes – Este panel brinda más información sobre los visitantes de su sitio. Puede presionar o para expandir el panel y obtener información detallada, como el país de origen, la ciudad y el DNS inverso.
  6. Sistemas operativos – Este panel muestra diferentes sistemas operativos utilizados por los visitantes.
  7. navegadores – Este panel muestra los distintos navegadores utilizados por los visitantes.
  8. Distribución de tiempo – Este panel brindará un informe por hora de la cantidad de visitas, visitantes únicos y ancho de banda consumido.
  9. Servidores virtuales – Este panel muestra los hosts virtuales analizados desde el archivo de registro. Solo aparecerá si usa el formato de registro VCOMBINED en el archivo de configuración anterior o si %v es parte de la configuración del formato de registro.
  10. URL de referencia – Esto enumera las URL que remiten a los visitantes a su servidor. Este panel está deshabilitado por defecto. Para habilitarlo, comente la siguiente línea en el archivo de configuración agregando # delante de ella.
    #ignore-panel REFERRERS
    
  11. Sitios de referencia – Este panel muestra las direcciones IP de los hosts de referencia.
  12. Frases clave – Este panel muestra las palabras clave utilizadas en la Búsqueda de Google, el caché de Google o el Traductor de Google que conducen a su sitio. Este panel también está deshabilitado por defecto. Habilítelo comentando la siguiente línea en el archivo de configuración.
    #ignore-panel KEYPHRASES
    
  13. Códigos de estado HTTP – Este panel muestra las estadísticas de los códigos de estado HTTP devueltos por su servidor cuando responde a una solicitud.
  14. Usuario remoto (autenticación HTTP) – Este panel muestra el ID de usuario de la persona que accede a un documento en su servidor, protegido por autenticación HTTP. Este panel solo funciona si %e es parte de la configuración del formato de registro.
  15. Estado de caché – Este panel determina si una solicitud se almacena en caché y se atiende desde él. Este panel solo funciona si %c es parte de la configuración del formato de registro.
  16. Ubicación geográfica – Este panel proporciona una lista de ubicaciones geográficas de los visitantes que acceden a su sitio. Aparecerá solo si ha descargado y agregado su ubicación en el archivo de configuración.

Paso 6: ejecute GoAccess sin privilegios

Como buena práctica de seguridad, cuanto menos código funcione como root, mejor. Para ejecutar GoAccess sin root, necesita permisos para leer archivos de registro.

Los archivos de registro del servidor suelen formar parte del grupo adm. Puede verificar eso usando el siguiente comando.

$ ls -l /var/log/nginx
total 68
-rw-r----- 1 nginx adm 30547 Oct 10 12:47 access.log
-rw-r----- 1 nginx adm 35063 Oct 10 12:47 error.log

Como puede ver, no necesita ser un usuario root para abrir los archivos de registro. Cualquier usuario que pertenezca al grupo adm puede abrir los archivos.

La forma más sencilla de ejecutar GoAccess sin root es agregar al grupo adm al usuario que ha iniciado sesión actualmente. De esa forma, puede ejecutar GoAccess con ese usuario sin Sudo.

Ejecute el siguiente comando para agregar el usuario actual al grupo adm.

$ sudo usermod -aG adm $USER 

Ahora, cierre sesión y vuelva a iniciar sesión para aplicar el cambio. O puede ejecutar el siguiente comando sin necesidad de cerrar la sesión para implementar el cambio.

$ su $USER

Debería poder ejecutar GoAccess directamente sin necesidad de sudo.

$ goaccess /var/log/nginx/access.log

Paso 7: generar informes HTML

GoAccess se puede utilizar para generar informes HTML que puede publicar en línea. Utilice el siguiente comando para generar un informe HTML.

$ goaccess /var/log/nginx/access.log -o stats.html

Puede descargar el archivo en su PC local para usted mismo o en la carpeta de su sitio web para servirlo públicamente.

Informe HTML de GoAccess

Incluso puede generar un informe HTML en tiempo real utilizando GoAccess. Pero primero, debe abrir el puerto 7890 para que se ejecute GoAccess Websocket. Abra el puerto con el siguiente comando.

$ sudo firewall-cmd --permanent --add-port=7890/tcp

Vuelva a cargar el firewall para aplicar el cambio.

$ sudo firewall-cmd --reload

Ahora, ejecute el siguiente comando para generar un informe HTML en tiempo real.

$ goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html

Esto generaría un informe en tiempo real en la ubicación especificada. El comando anterior mantendrá a GoAccess ejecutándose en primer plano como un WebSocket escuchando conexiones.

Hay una pequeña advertencia al ejecutar el comando anterior. El comando anterior funcionará cuando GoAccess tenga permisos de usuario en el directorio /usr/share/nginx/html. Dado que estamos ejecutando GoAccess con el usuario conectado actualmente, debe otorgarle permisos de usuario en el directorio /usr/share/html. Si no puede esperar por alguna razón, deberá ejecutar GoAccess usando sudo.

$ sudo goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html

Si desea ejecutar GoAccess en segundo plano, puede ejecutarlo como un demonio utilizando el siguiente comando.

$ goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html --daemonize
Daemonized GoAccess: 78315

Para detener GoAccess Daemon, termine el proceso con el siguiente comando.

$ sudo kill -9 78315

Aquí, estamos usando el ID de proceso que obtuvimos en nuestro comando anterior. Si no recuerda la ID del proceso, también puede usar el siguiente comando para finalizar el proceso.

$ sudo kill -9 `pidof goaccess`

Tenga en cuenta que estamos usando la comilla inversa (`) en nuestro comando. El uso de comillas regulares fallará el comando.

Conclusión

Esto concluye nuestro tutorial sobre la instalación y ejecución de GoAccess Log Analyzer en el servidor Rocky Linux 8. Si tiene alguna pregunta, publíquela en los comentarios a continuación.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *