Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Apache HTTP y Nginx Última actualización: 24 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Supervise y analice los registros del servidor web con el analizador de registros en tiempo real de código abierto – GoAccess

La solución de problemas web es divertida y puede ser frustrante si no está equipado con las herramientas adecuadas

Si está dando soporte a un sitio web con mucho tráfico, entonces a menudo necesita analizar y monitorizar los registros de los servidores web para planificar el rendimiento y la capacidad. Esto es esencial para un ingeniero web

Comprobación de menor tamaño de registro de forma manual está bien, pero si usted tiene el archivo grande, entonces no sería divertido ir a través de millones de líneas para encontrar las métricas

Por eso necesita herramientas que faciliten el trabajo de administrador y lo hagan más productivo

GoAccess es un ligero analizador de registros de código abierto que soporta múltiples formatos de registro y que puede utilizarse con

  • Nginx
  • Apache HTTP
  • AWS ELB, S3, CloudFront
  • Almacenamiento en la nube de Google

¿Qué métricas puede analizar con GoAccess?

Casi todo lo que capture en los registros. Para que se haga una idea

  • Tiempo que se tarda en servir la petición
  • IP del visitante, DNS, host
  • Detalles del navegador y del sistema operativo del visitante
  • detalles de 404 no encontrado
  • Top peticiones/visitante
  • Ancho de banda
  • Archivos estáticos
  • Ubicación geográfica
  • Código de estado
  • y más..

¿Busca monitorizar estas métricas de su sitio?

Bien

¿En qué sistema operativo se puede instalar?

GoAccess sólo tiene una dependencia: ncurses. Si puede instalarlo, puede utilizarlo en cualquier SO

Está disponible en paquete de distribución para

  • Ubuntu
  • Debian
  • Fedora
  • CentOS
  • FreeBSD/OpenBSD
  • Slackware
  • Arch Linux
  • Gentoo
  • MacOS
  • Windows a través de Cygwin

Sin embargo, también puede construir desde la fuente o utilizar con Docker

Si usted es nuevo en Docker, le recomendaría tomar este curso Docker Mastery

docker

Instalación de GoAccess en Ubuntu

  • Inicie sesión en el servidor Ubuntu con el privilegio de root
  • Utilice apt-get para instalar como se indica a continuación
apt-get install goaccess

Fácil

Instalación en CentOS

Inicie sesión en el servidor y ejecute yumcommand

yum

install goaccess

Instalación utilizando el código fuente en CentOS/Ubuntu

¿Le gusta compilar desde el código fuente?

Aquí tiene los pasos

  • Instale las siguientes dependencias si utiliza CentOS
yum install gcc ncurses-devel glib2-devel geoip-devel tokyocabinet-devel
  • Si utiliza Ubuntu
apt-get install libncursesw5-dev libgeoip-dev make
  • Descargue el último paquete utilizando wget
wget http://tar.goaccess.io/goaccess-1.2.tar.gz
  • Extraiga el archivo descargado
gunzip -c goaccess-1.2.tar.gz | tar xvf -
  • Vaya a la carpeta recién creada, que obtuvo después de extraer
cd goaccess-1.2
  • Compile con el siguiente comando
./configure --enable-geoip=legacy --enable-utf8
make
make install

Bien hecho, ya tiene instalado GoAccess y todo listo para analizar los registros

Verifique la instalación

Una vez instalado, simplemente ejecute goaccess en el símbolo del sistema y debería imprimir el uso como se muestra a continuación

[root@instance-2 goaccess-1.2]# goaccess 
GoAccess - 1.2
Uso: goaccess [filename] [ options ... ] [-c][-M][-H][-q][-d][...]
También se pueden suministrar las siguientes opciones al comando:
Opciones de formato de registro y fecha
   --date-format=<dateformat>      -Especifique el formato de fecha del registro. por ejemplo,%d/%b/%Y
   --log-format=<logformat>        - Especifique el formato de registro.Lascomillas interiores deben estar
                                     escapadas, o utilice comillas simples.
   --time-format=<timeformat>      - Especifique el formato de hora del registro.por ejemplo,%H:%M:%S
Opciones de la interfaz de usuario
   -c--config-dialog              - Ventana de configuración del registro/fecha/hora.
   -i--hl-header                  - Resaltar con color el panel activo.
   -m--with-mouse                 - Activar el soporte del ratón en el panel principal.
   --color=<fg:bg[attrs, PANEL]>   - Especificar colores personalizados.Consulte la página de manual para más
                                     detalles y opciones.
   --color-scheme=<1|2|3>          - Esquemas: 1 => Gris, 2 => Verde, 3 => Monokai.
   --html-custom-css=<path.css>    -Especifique un archivo CSS personalizado en el informe HTML.
   --html-custom-js=<ruta.js>      - Especifique un archivo JS personalizado en el informe HTML.

-html-prefs=<json_obj>         - Establece las preferencias predeterminadas del informe HTML.
   --html-report-title=<title>     - Establece el título y la cabecera de la página del informe HTML.
   --json-pretty-print             - Formatea la salida JSON con tabuladores y nuevas líneas.
   --max-items                     - Número máximo de elementos a mostrar por panel.
                                    Consulte la página del manual para conocer los límites.
   --no-color                      - Desactiva la salida coloreada.
   --no-column-names               - No escribe los nombres de las columnas en la salida de términos.

-no-csv-summary                - Desactiva las métricas de resumen en la salida CSV.
   --no-progress                   - Desactiva las métricas de progreso.
   --no-tab-scroll                 - Desactiva el desplazamiento por los paneles en TAB.

-no-html-last-updated          - Ocultar el campo HTML de última actualización.
Opciones del servidor
   --addr=<addr>                   - Especificar la dirección IP a la que se enlazará el servidor.
   --daemonize                     - Ejecutar como demonio (si --real-time-html está activado).
   --fifo-in=<path>                - Ruta para leer la tubería con nombre (FIFO).

-fifo-out=<ruta>               - Ruta para escribir named pipe (FIFO).
   --origin=<addr>                 - Asegúrese de que los clientes envían la cabecera de origen especificada
                                     en el handshake WebSocket.
   --port=<puerto>                   - Especifique el puerto a utilizar.
   --real-time-html                - Habilite la salida HTML en tiempo real.

-ssl-cert=<cert.crt>           -Rutaal certificadoTLS/SSL.
   --ssl-key=<priv.key>            - Ruta a la clave privada TLS/SSL.

-ws-url=<url>                  - URL a la que responde el servidor WebSocket.
Opciones dearchivo
   -                               - El archivo de registro a analizar se lee de stdin.

f--log-file=<filename>        - Ruta al archivo de registro de entrada.
   -l--debug-file=<filename>      - Envía todos los mensajes de depuración alarchivo
                                     especificado.

p --config-file=<filename>     - Archivo de configuración personalizado.
   --invalid-requests=<filename>   - Registrar las peticiones no válidas en el archivo especificado.

-no-global-config              - No cargar el archivo de configuración global.
Opciones de análisis
   -a--agent-list                 -Habilitaruna lista de usuarios-agentes por host.
   -d--with-output-resolver       - Habilitar el resolver IP en la salida HTML|JSON.
   -e--exclude-ip=<IP>            - Excluir uno o varios IPv4/6.Permiterangos de IP
                                     porejemplo 192.168.0.1-192.168.0.10
   -H--http-protocol=<yes|no>     -Configurar/desconfigurarelprotocolodepetición HTTP si se encuentra.
   -M--http-method=<yes|no>       -Configurar/desconfigurarelmétodo de petición HTTP si se encuentra.

o --output=archivo.html|json|csv  - Dar salida a un archivo HTML, JSON o CSV.
   -q--no-query-string            - Ignorar la cadena de consulta de la petición.Eliminar lacadena de consulta
                                     puede disminuir en gran medidael consumo dememoria
                                     .
   -r--no-resolver-término           - Desactivar el resolver IP en la salida del terminal.
   --444-as-404                    - Tratar el código de estado no estándar 444 como 404.

-4xx-to-unique-count           - Añadir errores de cliente 4xx alrecuento devisitantes únicos
                                     .
   --all-static-files              - Incluir archivos estáticos con una cadena de consulta.
   --crawlers-only                 - Analizar y mostrar sólo los rastreadores.
   --date-spec=<date|hr>           - Especificidad de fecha. Valores posibles:`date`
                                     (por defecto), o `hr`.
   --double-decode                 - Descodificar valores con doble codificación.
   --enable-panel=<PANEL>          - Habilitar el análisis/visualización del panel dado.
   --hour-spec=<hr|min>            - Especificidad de hora. Valores posibles:`hr`
                                     (por defecto), o `min` (décima de min).
   --ignore-crawlers               - Ignorar crawlers.
   --ignore-panel=<PANEL>          - Ignorar el análisis/visualización del panel dado.
   --ignore-referer=<NEEDLE>       - Ignorar un referer para que no sea contabilizado.Loscomodines
                                     están permitidos, es decir,*.bing.com
   --ignore-status=<CODE>          - Ignora el análisis del código de estado dado.
   --num-tests=<number>            - Número de líneas a comprobar.>= 0 (10 por defecto)
   --process-and-exit              - Analiza el registro y sale sin mostrar datos.
   --real-os                       - Muestra nombres de SO reales. por ejemplo, Windows XP, Snow
                                     Leopard.
   --sort-panel=PANEL,METRIC,ORDER - Ordena el panel en la carga inicial.Por ejemplo:
                                     --sort-panel=VISITANTES,POR_HITS,ASC.Consultelapágina de manual
                                     para obtener una lista de paneles/campos.
   --static-file=<extension>       - Añade la extensión del archivo estático. por ejemplo: .mp3.
                                     Las extensiones distinguen entre mayúsculas y minúsculas.
Opciones GeoIP
   -g--std-geoip                  - Base de datos GeoIP estándar para un menorconsumo dememoria
                                    .
   --geoip-database=<ruta>         - Especifique la ruta al archivo de base de datos GeoIP.ej.:,
                                    GeoLiteCity.dat, GeoIPv6.dat ...
Otras opciones
   -h--help                       - Esta ayuda.
   -V--version                    - Mostrar información de la versión y salir.
   -s--storage                    - Mostrar el método de almacenamiento actual. p.ej, B 
                                     Árbol, Hash.
   --dcf
                           - Mostrar la ruta delarchivo deconfiguración por defecto
                                     cuando no se utiliza `-p`.
Se pueden encontrar ejemplos ejecutando `man goaccess`.
Para más detalles visite: http://goaccess.io
GoAccess Copyright (C) 2009-2016 por Gerardo Orellana
[root@instance-2 goaccess-1.2] 

#

Analizando Nginx y Apache con GoAccess

Una de las formas más rápidas de analizar access.log es utilizando el parámetro-f

Ej

goaccess -f access

.log
Arriba, estoy dando instrucciones para abrir el archivo access.log. Esto le mostrará el panel de control general y las 15 secciones siguientes

  • Visitantes únicos por día
  • Archivos solicitados
  • Peticiones estáticas (fuentes, imagen, pdf, etc)
  • Solicitudes no encontradas (404)
  • Detalles de la IP/host del visitante
  • Sistema operativo del visitante
  • Detalles del navegador
  • Distribución temporal
  • Remitente
  • Código de estado HTTP
  • Geolocalización

goaccess-nginx

Si el archivo elegido se actualiza en tiempo real, notará que las métricas se actualizan en el terminal. Aquí puede revisar las métricas que necesita analizar

Monitorización en tiempo real a través de HTTP(s)

GoAccess le permite redirigir la salida a un archivo HTML que puede utilizar como monitorización en tiempo real. Esto resulta práctico cuando no desea iniciar sesión en el servidor cada vez que necesita verificar algunas métricas

goaccess /var/log/nginx/access.log -o /var/www/geekflare.com/htdocs/real-time.html --log-format=COMBINED --real-time-html

Arriba, estoy redirigiendo la salida al archivo real-time.html que está disponible bajo htdocs. Al tratarse de htdocs, puedo acceder a este archivo desde https://geekflare.com/real-time.html siempre que necesite ver las métricas

goaccess-dashboard

¡Un cuadro de mandos precioso!

Sin embargo, no recomiendo hacer esto en producción. Estoy seguro de que usted no quiere que alguien lea los registros de su servidor web y es posible que desee aplicar la siguiente restricción

  • Proteja el archivo con usuario y contraseña
  • Permita el acceso sólo desde su IP
  • Utilice otra URL con puerto personalizado y póngala detrás de un cortafuegos para que sólo puedan acceder las IP/usuarios permitidos

GoAccess parece un potente analizador de registros de código abierto. Es ligero y GRATUITO así que no dude en probarlo

Puede que también le interese echar un vistazo al analizador de registros basado en la nube.

  • Chandan Kumar
    Autor
    Chandan Kumar es el fundador de Geekflare. Ha ayudado a millones de personas a destacar en el ámbito digital. Apasionado de la tecnología, su misión es explorar el mundo y ampliar el crecimiento de profesionales y empresas.
Gracias a nuestros patrocinadores
Más lecturas sobre Apache HTTP
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder