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