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



GoAccess es un analizador de registros mudable y de código libre que puede interpretar y analizar archivos de registro de múltiples formatos, incluyendo Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, Caddy, etc. Está escrito en jerga C y utiliza la biblioteca ncurses para su interfaz de panel de control, a la que se puede conseguir desde la linde de comandos.

Puede producir informes en formato HTML, JSON y CSV, que pueden compartirse con otros. Incluso puede producir informes HTML en tiempo vivo que pueden mostrarse a través de un enlace manifiesto.

En este tutorial, aprenderás a instalar GoAccess Analyzer en un servidor Rocky basado en Linux y a configurarlo para que lea los registros de Nginx y genere informes en tiempo vivo.

Requisitos previos

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

Paso 1 – Instala las dependencias para GoAccess

La última interpretación de GoAccess v1.5.2 no está adecuado en el repositorio por defecto. Para instalar la última interpretación de GoAccess, vamos a compilarla desde el código fuente. El primer paso es descargar las dependencias necesarias para construir el paquete GoAccess.

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

Paso 2 – Descargar e instalar GoAccess

Descarga la última interpretación del archivo de GoAccess. Puedes encontrar la última interpretación de GoAccess en la página oficial de descargas.

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

Extrae los ficheros del archivo.

$ tar -xzvf goaccess-1.5.2.tar.gz

Configura e instala el paquete.

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

Comprueba 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 – Descarga la Saco de Datos GeoIP

Puedes descargar la Saco de Datos GeoIP desde DB-IP o desde Maxmind. Si vas a descargarla desde Maxmind, tendrás que crear una cuenta y producir una esencia de osadía gratuita. La descarga desde DB-IP puede hacerse directamente.

Descarga el archivo zip del país desde cualquiera de las fuentes anteriores. Una vez descargados, extráelos y sube el archivo .mmdb al servidor a una carpeta personalizada como /home/<user>/geoip.

Paso 4 – Configurar GoAccess

GoAccess almacena su archivo de configuración en /usr/nave/etc/goaccess/goaccess.conf. Puedes comprobar la ubicación del archivo en tu sistema utilizando el próximo comando.

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

Abre el archivo para editarlo.

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

La mayoría de las opciones están comentadas. Puedes utilizar estas opciones a través de la linde de comandos o establecerlas aquí en el archivo. Para activar una opción, elimina el carácter # que aparece delante de ella.

En primer superficie, vamos a activar la opción time-format. En nuestro tutorial analizaremos archivos de Nginx, así que activa 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, activa la opción date-format 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, activa la opción log-format. En nuestro tutorial, utilizaremos el formato de registro combined, que es el que suele utilizar Nginx.

log-format COMBINED

Si tus archivos de registro contienen el campo Host imaginario, activa en su superficie la próximo opción.

log-format VCOMBINED

Supongamos que deseas un anciano control sobre el formato de registro. En ese caso, puedes habilitar la próximo linde en su superficie (dependiendo del registro al que accedas) y añadir o quitar parámetros según tus micción.

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

Para activar el módulo GeoIP, activa la próximo opción introduciendo la ruta a la saco 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

Cumplimiento el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida una vez hayas terminado.

Paso 5 – Ejecutar GoAccess

Normalmente, si quieres ejecutar GoAccess, tendrás que utilizar el próximo comando.

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

Necesitamos utilizar sudo porque los usuarios normales no pueden desobstruir los archivos de registro. Por otra parte, tendrás que utilizar la ruta completa para el ejecutable con el comando sudo porque éste no reconoce las aplicaciones del directorio /usr/nave/bin. Sin bloqueo, puedes evitar esta muro creando un enlace simbólico.

Para ello, ejecuta el próximo comando.

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

Ahora puedes ejecutar GoAccess directamente.

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

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

Una vez que ejecutes el comando, te aparecerá el próximo panel de control.

Panel GoAccess

GoAccess te proporciona varios atajos de teclado para navegar por el panel de control.

  • TAB para avanzar por los módulos disponibles y SHIFT+TAB para retroceder.
  • F5 para modernizar el panel de control.
  • g para ir a la parte superior de la pantalla del panel de control y G para ir a la parte inferior.
  • o o ENTER para expandir el módulo seleccionado.
  • j y k para desplazarte en torno a debajo y en torno a en lo alto en el interior del módulo activo.
  • s para mostrar las opciones de distribución del módulo activo.
  • / para averiguar en todos los módulos y n para acaecer a la próximo coincidencia.
  • 0-9 y SHIFT+0 para activar rápidamente el módulo numerado correspondiente.
  • ? para ver el diálogo de ayuda rápida.
  • q para salir del software.

Veamos brevemente todos los paneles.

  1. Visitantes únicospor día – Este panel se explica por sí mismo. Enumera los visitantes únicos, las visitas y el orondo de bandada acumulado para cada época. Asimismo incluye por defecto los rastreadores y arañas web.
  2. Archivos solicitados (URLs ) – Este panel proporciona las estadísticas relativas a los archivos no estáticos más solicitados en tu servidor.
  3. Peticionesestáticas – Es similar al panel precursor, indemne que gestiona archivos estáticos como imágenes, CSS, JavaScript, etc.
  4. URLs no encontradas (404s ) – Este panel registra todas las peticiones a archivos y rutas no encontradas en tu servidor.
  5. Nombres de host e IP de visitantes – Este panel ofrece más información sobre los visitantes de tu sitio. Puedes pulsar o para ampliar 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 los distintos sistemas operativos utilizados por los visitantes.
  7. Navegadores – Este panel muestra los distintos navegadores utilizados por los visitantes.
  8. Distribución Horaria – Este panel ofrece un documentación horario del número de visitas, visitantes únicos y orondo de bandada consumido.
  9. Anfitriones virtuales – Este panel muestra los anfitriones virtuales analizados a partir del archivo de registro. Sólo se mostrará si utilizas el formato de registro VCOMBINED en el archivo de configuración precursor o si %v forma parte de la configuración del formato de registro.
  10. URL de narración – Enumera las URL que remiten a los visitantes a tu servidor. Este panel está desactivado por defecto. Para activarlo, comenta la próximo linde en el archivo de configuración añadiendo # delante de ella.
    #ignore-panel REFERRERS
    
  11. Sitios de narración – Este panel muestra las direcciones IP de los hosts de narración.
  12. Frases esencia – Este panel muestra las palabras esencia utilizadas en la Búsqueda de Google, la personalidad de Google o Google Translate que llevan a tu sitio. Este panel igualmente está desactivado por defecto. Actívalo comentando la próximo linde 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 tu servidor cuando replica a una petición.
  14. Beneficiario Remoto (Autenticación HTTP) – Este panel muestra el ID de adjudicatario de la persona que accede a un documento en tu servidor, protegido por autenticación HTTP. Este panel sólo funciona si %e forma parte de la configuración del formato de registro.
  15. Estado de la cach é – Este panel determina si una petición está siendo almacenada en personalidad y servida desde ella. Este panel sólo funciona si %c forma parte de la configuración del formato de registro.
  16. Ubicación geográfica – Este panel proporciona una directorio de ubicaciones geográficas de los visitantes que acceden a tu sitio. Sólo aparecerá si has descargado y añadido su ubicación en el archivo de configuración.

Paso 6 – Ejecutar GoAccess sin privilegios

Como buena destreza de seguridad, cuanto menos código funcione como root, mejor. Para ejecutar GoAccess sin ser root, necesita permisos para interpretar los archivos de registro.

Los archivos de registro del servidor suelen formar parte del camarilla adm. Puedes comprobarlo utilizando el próximo 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 puedes ver, no necesitas ser adjudicatario root para desobstruir los archivos de registro. Cualquier adjudicatario perteneciente al camarilla adm puede desobstruir los archivos.

La forma más sencilla de ejecutar GoAccess sin ser root es añadir al adjudicatario actualmente conectado al camarilla adm. De ese modo, podrás ejecutar GoAccess con ese adjudicatario sin sudo.

Ejecuta el próximo comando para añadir el adjudicatario presente al camarilla adm.

$ sudo usermod -aG adm $USER 

Ahora, cierra la sesión y vuelve a entrar para aplicar el cambio. O puedes ejecutar el próximo comando sin indigencia de cerrar la sesión para aplicar el cambio.

$ su $USER

Deberías poder ejecutar GoAccess directamente sin indigencia de sudo.

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

Paso 7 – Ocasionar Informes HTML

GoAccess puede utilizarse para producir informes HTML que puedes servir en linde. Utiliza el próximo comando para producir un documentación HTML.

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

Puedes descargar el archivo en tu PC nave para ti o en la carpeta de tu sitio web para servirlo públicamente.

Informe HTML de GoAccess

Incluso puedes producir un documentación HTML en tiempo vivo utilizando GoAccess. Pero primero, necesitas desobstruir el puerto 7890 para que se ejecute el Websocket de GoAccess. Abre el puerto utilizando el próximo comando.

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

Recarga el cortafuegos para aplicar el cambio.

$ sudo firewall-cmd --reload

Ahora, ejecuta el próximo comando para producir un documentación HTML en tiempo vivo.

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

Esto generaría un documentación en tiempo vivo en la ubicación especificada. El comando precursor mantendrá GoAccess ejecutándose en primer plano como un WebSocket a la audición de conexiones.

Hay una pequeña advertencia al ejecutar el comando precursor. El comando precursor funcionará cuando GoAccess tenga permisos de adjudicatario en el directorio /usr/share/nginx/html. Como estamos ejecutando GoAccess con el adjudicatario que ha iniciado la sesión, tienes que darle permisos sobre el directorio /usr/share/html. Si por alguna razón no puedes esperar, tendrás que ejecutar GoAccess utilizando sudo.

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

Si quieres ejecutar GoAccess en segundo plano, puedes hacerlo como demonio utilizando el próximo comando.

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

Para detener el demonio GoAccess, mata el proceso con el próximo comando.

$ sudo kill -9 78315

Aquí estamos utilizando el ID del proceso que obtuvimos en nuestro comando precursor. Si no recuerdas el ID del proceso, igualmente puedes utilizar el próximo comando para matarlo.

$ sudo kill -9 `pidof goaccess`

Fíjate en que estamos utilizando el entrecomillado (`) en nuestro comando. Si utilizas comillas normales, el comando fallará.

Conclusión

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