Monitorizar los archivos de registro de Nginx con ngxtop en Ubuntu 20.04
ngxtop es una herramienta de monitorización gratuita, de código abierto, flexible y en tiempo real para servidores web Nginx. Puede analizar el registro de acceso de Nginx e imprimir la información sobre el recuento de peticiones, el URI solicitado, el número de peticiones por código de estado y mucho más. Es una herramienta sencilla y fácil de usar para monitorizar las peticiones que llegan a un servidor web Nginx.
En este artículo, te mostraré cómo instalar y utilizar la herramienta de monitorización ngxtop en Ubuntu 20.04.
Requisitos previos
- Un servidor con Ubuntu 20.04.
- Una contraseña de root configurada en tu servidor.
Instalar ngxtop
ngxtop es una herramienta basada en Python, por lo que necesitarás instalar los paquetes Python y PIP en tu sistema. Puedes instalarlos con Nginx utilizando el siguiente comando:
apt-get install nginx python3 python3-pip -y
Una vez instalado, puedes instalar el paquete ngxtop utilizando el PIP como se muestra a continuación:
pip3 install ngxtop
Una vez instalado ngxtop, puedes verificar la versión de ngxtop utilizando el siguiente comando:
ngxtop --version
Deberías obtener la siguiente salida:
xstat 0.1
Cómo utilizar ngxtop
En esta sección, te mostraremos cómo utilizar ngxtop para monitorizar el servidor web Nginx.
Si ejecutas el comando ngxtop sin ningún argumento, se mostrará el resumen del recuento de peticiones, el URI solicitado y el número de peticiones por código de estado.
ngxtop
Deberías ver la siguiente pantalla:
Puedes utilizar la opción -l para especificar el registro de acceso que quieres analizar.
ngxtop -l /var/log/nginx/access.log
Deberías ver la siguiente pantalla:
Para listar las principales IP que acceden a tu servidor Nginx, ejecuta el siguiente comando:
ngxtop --group-by remote_addr -l /var/log/nginx/access.log
Deberías ver la siguiente pantalla:
Puedes imprimir las 10 peticiones con el mayor total de bytes enviados mediante el siguiente comando:
ngxtop --order-by 'avg(bytes_sent) * count' -l /var/log/nginx/access.log
Deberías ver la siguiente pantalla:
ngxtop también te permite analizar el archivo de registro de Apache de un servidor remoto. Puedes hacerlo con el siguiente comando:
ssh root@remote-server-ip tail -f /var/log/apache2/access.log | ngxtop -f common
Para obtener una lista de todas las opciones disponibles con ngxtop, ejecuta el siguiente comando:
ngxtop --help
Deberías ver la siguiente salida:
ngxtop - ad-hoc query for nginx access log. Usage: ngxtop [options] ngxtop [options] (print|top|avg|sum) ... ngxtop info ngxtop [options] query... Options: -l , --access-log access log file to parse. -f , --log-format log format as specify in log_format directive. [default: combined] --no-follow ngxtop default behavior is to ignore current lines in log and only watch for new lines as they are written to the access log. Use this flag to tell ngxtop to process the current content of the access log instead. -t , --interval report interval when running in follow mode [default: 2.0] -g , --group-by group by variable [default: request_path] -w , --having having clause [default: 1] -o , --order-by order of output for default query [default: count] -n , --limit limit the number of records included in report for top command [default: 10] -a ..., --a ... add exp (must be aggregation exp: sum, avg, min, max, etc.) into output -v, --verbose more verbose output -d, --debug print every line and parsed record -h, --help print this help message. --version print version information. Advanced / experimental options: -c , --config allow ngxtop to parse nginx config file for log format and location. -i , --filter filter in, records satisfied given expression are processed. -p , --pre-filter in-filter expression to check in pre-parsing phase. Examples: All examples read nginx config file for access log location and format. If you want to specify the access log file and / or log format, use the -f and -a options. "top" like view of nginx requests $ ngxtop Top 10 requested path with status 404: $ ngxtop top request_path --filter 'status == 404' Top 10 requests with highest total bytes sent $ ngxtop --order-by 'avg(bytes_sent) * count' Top 10 remote address, e.g., who's hitting you the most $ ngxtop --group-by remote_addr Print requests with 4xx or 5xx status, together with status and http referer $ ngxtop -i 'status >= 400' print request status http_referer Average body bytes sent of 200 responses of requested path begin with 'foo': $ ngxtop avg bytes_sent --filter 'status == 200 and request_path.startswith("foo")' Analyze apache access log from remote machine using 'common' log format $ ssh remote tail -f /var/log/apache2/access.log | ngxtop -f common
Conclusión
En la guía anterior, has aprendido a instalar y utilizar ngxtop en Ubuntu 20.04. Espero que ahora puedas monitorizar el registro de tu Nginx fácilmente desde la interfaz de línea de comandos.