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
-
Un servidor que ejecuta Rocky Linux 8.
-
Un usuario no root con privilegios sudo.
-
Nginx ejecutándose en el servidor para acceder a los registros.
-
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 ySHIFT+TAB
para retroceder.F5
para actualizar el tablero.g
para ir a la parte superior de la pantalla del tablero yG
para ir al fondo.o
oENTER
para expandir el módulo seleccionado.j
yk
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 yn
para pasar al siguiente partido.0-9
ySHIFT+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.
-
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.
-
Archivos solicitados (URL) - Este panel proporciona las estadísticas sobre los archivos no estáticos más solicitados en su servidor.
-
Solicitudes estáticas - Es similar al panel anterior excepto que maneja archivos estáticos como imágenes, CSS, JavaScript, etc.
-
URL no encontradas (404) - Este panel registra todas las solicitudes a archivos y rutas que no se encuentran en su servidor.
-
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. -
Sistemas Operativos - Este panel muestra diferentes sistemas operativos utilizados por los visitantes.
-
Navegadores - Este panel muestra los distintos navegadores utilizados por los visitantes.
-
Distribución del tiempo - Este panel brindará un informe por hora de la cantidad de visitas, visitantes únicos y ancho de banda consumido.
-
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. -
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
-
Sitios de referencia - Este panel muestra las direcciones IP de los hosts de referencia.
-
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
-
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.
-
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. -
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. -
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.