GNU/Linux >> Tutoriales Linux >  >> Rocky Linux

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

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

  1. Un servidor que ejecuta Rocky Linux 8.

  2. Un usuario no root con 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:descargue e instale GoAccess

Descargue la última versión del archivo de GoAccess. Puede encontrar la última versión de GoAccess en la página de descarga oficial.

$ 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

Verifica 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 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 suba el .mmdb archivo en el servidor a una carpeta personalizada como /home/<user>/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 él.

Primero, habilitemos el time-format opción. 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 el date-format de Nginx opción.

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

A continuación, habilite el log-format opción. En nuestro tutorial, usaremos el combined formato de registro, que es el que Nginx utiliza normalmente.

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 Ctrl + X e ingresando Y cuando se le solicite una vez terminado.

Paso 5:ejecutar 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 /usr/local/bin directorio. 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 comprimidos .gz formato. 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.

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

  • TAB para avanzar a través de los módulos disponibles y SHIFT+TAB para retroceder.
  • F5 para actualizar el tablero.
  • g para ir a la parte superior de la pantalla del tablero y G para ir al fondo.
  • o o ENTER para expandir el módulo seleccionado.
  • j y k para 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 y n para pasar al siguiente partido.
  • 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 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.

  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 visitantes - Este panel brinda más información sobre los visitantes de su sitio. Puedes presionar o para expandir el panel para 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 del tiempo - Este panel brindará un informe por hora de la cantidad de visitas, visitantes únicos y ancho de banda consumido.

  9. Alojamientos virtuales - Este panel muestra los hosts virtuales analizados desde el archivo de registro. Solo aparecerá si usa el VCOMBINED formato de registro 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 # frente a él.

    #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. Solo aparecerá 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 de adm grupo. 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 adm el grupo puede abrir los archivos.

La forma más fácil de ejecutar GoAccess sin root es agregar el usuario conectado actualmente a adm grupo. De esa forma, puede ejecutar GoAccess con ese usuario sin sudo.

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

$ 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 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.

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 cortafuegos 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 /usr/share/nginx/html directorio. Dado que estamos ejecutando GoAccess con el usuario conectado actualmente, debe otorgarle permisos de usuario en el /usr/share/html directorio. Si no puede esperar por algún motivo, deberá ejecutar GoAccess con 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 usando 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 el 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.


Rocky Linux
  1. Cómo instalar GoAccess Web Log Analyzer en Ubuntu 20.04

  2. Cómo instalar Python 3.9 en Rocky Linux 8

  3. Cómo instalar Rocky Linux 8.4

  4. Cómo instalar GoAccess Web Log Analyzer en Ubuntu 20.04

  5. Cómo instalar Redis en Rocky Linux 8

Cómo instalar PHP 7.4 en Rocky Linux 8

Cómo instalar Python 3.9 en Rocky Linux

Cómo instalar PHP 8 en Rocky Linux 8

Cómo instalar Nginx en Rocky Linux 8

Cómo instalar Node.js en Rocky Linux 8

Cómo instalar Rust en Rocky Linux 8