Los registros son muy útiles para supervisar las actividades de cualquier aplicación, además de proporcionarle información valiosa mientras soluciona problemas. Como cualquier otra aplicación, NGINX también registra eventos como visitantes a su sitio, problemas encontrados y más en archivos de registro. Esta información le permite tomar medidas preventivas en caso de que note algunas discrepancias graves en los eventos de registro. Este artículo le guiará en detalle sobre cómo configurar el registro de NGINX para que tenga una mejor perspectiva de sus actividades.
Requisito previo
- Ya has instalado NGINX siguiendo nuestro tutorial desde aquí .
Registros en NGINX
De forma predeterminada, NGINX escribe sus eventos en dos tipos de registros: el registro de errores y el registro de acceso . En la mayoría de las distribuciones de Linux más populares, como Ubuntu, CentOS o Debian, tanto el registro de acceso como el de errores se pueden encontrar en /var/log/nginx, suponiendo que ya haya habilitado los registros de acceso y de errores en el archivo de configuración principal de NGINX. Averigüemos más sobre el registro de acceso y el registro de errores de NGINX y cómo habilitarlos si aún no lo ha hecho.
¿Qué es el registro de acceso de NGINX?
NGINX registra las actividades de todos los visitantes de su sitio en los registros de acceso. Aquí puede encontrar a qué archivos se accede, cómo NGINX respondió a una solicitud, qué navegador está usando un cliente, la dirección IP de los clientes y más. Es posible utilizar la información del registro de acceso para analizar el tráfico y encontrar usos de los sitios a lo largo del tiempo. Además, al monitorear los registros de acceso correctamente, se puede averiguar si un usuario está enviando alguna solicitud inusual para encontrar fallas en la aplicación web implementada.
¿Qué es el registro de errores de NGINX?
Por otro lado, si NGINX tiene algún problema técnico, registrará el evento en el registro de errores. Esto puede suceder si hay algún error en el archivo de configuración. Por lo tanto, si NGINX no puede iniciarse o deja de funcionar de forma abrupta, debe consultar los registros de errores para obtener más detalles. También puede encontrar algunas advertencias en el registro de errores, pero esto no indica que se haya producido un problema, sino que el evento puede suponer un problema grave en el futuro cercano.
¿Cómo habilitar el registro de acceso de NGINX?
En general, el registro de acceso se puede habilitar con access_loguna directiva en la sección http o en la del servidor. El primer argumento log_file es obligatorio, mientras que el segundo argumento log_format es opcional. Si no especifica ningún formato, los registros se escribirán en el formato combinado predeterminado.
access_log log_file log_format;
El registro de acceso está habilitado de forma predeterminada en el contexto http del archivo de configuración principal de NGINX. Esto significa que el registro de acceso de todos los host virtuales se registrará en el mismo archivo.
http { ... ... access_log /var/log/nginx/access.log; ... ...}
Siempre es mejor separar los registros de acceso de todos los hosts virtuales registrándolos en un archivo independiente. Para ello, es necesario anular la access_logdirectiva definida en la sección http con otra access_logdirectiva en el contexto del servidor.
http { ... ... access_log /var/log/nginx/access.log; server { listen 80; server_name domain1.com access_log /var/log/nginx/domain1.access.log; ... ... }}
Vuelva a cargar NGINX para aplicar la nueva configuración. Para ver los registros de acceso del dominio domain1.com en el archivo /var/log/nginx/domain1.access.log, utilice el siguiente comando tail en la terminal.
# tail -f /var/log/nginx/domain1.access.log
Aplicar formato personalizado en el registro de acceso
El formato de registro predeterminado que se utiliza para registrar un evento en el registro de acceso es el formato de registro combinado. Puede anular el comportamiento predeterminado creando su propio formato de registro personalizado y luego especificando el nombre del formato personalizado en la directiva access_log. El siguiente ejemplo define un formato de registro personalizado al extender el formato combinado predefinido con el valor de la relación de compresión gzip de la respuesta. Luego, el formato se aplica indicando el formato de registro con la access_logdirectiva.
http { log_format custom '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" "$gzip_ratio"'; server { gzip on; ... access_log /var/log/nginx/domain1.access.log custom; ... }}
Una vez que haya aplicado el formato de registro anterior en su entorno, vuelva a cargar NGINX. Ahora, siga el registro de acceso para encontrar la proporción de gzip al final del evento de registro.
# tail -f /var/log/nginx/domain1.access.log47.29.201.179 - - [28/Feb/2019:13:17:10 +0000] "GET /?p=1 HTTP/2.0" 200 5316 "https://domain1.com/?p=1" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36" "2.75"
¿Cómo habilitar el registro de errores de NGINX?
La error_logdirectiva configura el registro de errores en un archivo, stderr o syslog, especificando el nivel mínimo de gravedad de los mensajes de error que se registrarán. La sintaxis de la directiva error_log es:
error_log log_file log_level;
El primer argumento log_file define la ruta del archivo de registro y el segundo argumento log_level define el nivel de gravedad del evento de registro que se registrará. Si no especifica log_level, de forma predeterminada, solo se registrarán los eventos de registro con un nivel de gravedad de error. Por ejemplo, el siguiente ejemplo establece el nivel de gravedad de los mensajes de error que se registrarán en crit. Además, la directiva error_log en el contexto http implica que el registro de errores de todos los host virtuales estará disponible en un solo archivo.
http { ... error_log /var/log/nginx/error_log crit; ...}
También es posible registrar registros de errores para todos los host virtuales por separado anulando la directiva error_log en el contexto del servidor. El siguiente ejemplo hace exactamente eso anulando la directiva error_log en el contexto del servidor.
http { ... ... error_log /var/log/nginx/error_log; server { listen 80; server_name domain1.com; error_log /var/log/nginx/domain1.error_log warn; ... } server { listen 80; server_name domain2.com; error_log /var/log/nginx/domain2.error_log debug; ... }}
Todos los ejemplos descritos anteriormente registran los eventos de registro en un archivo. También puede configurar la directiva error_log para enviar los eventos de registro a un servidor syslog. La siguiente directiva error_log envía los registros de errores a un servidor syslog con una dirección IP de 192.168.10.11 en formato de depuración.
error_log syslog_server=192.168.10.11 debug;
En algunas situaciones, es posible que desees desactivar el registro de errores. Para ello, establece el nombre del archivo de registro en /dev/null.
error_log /dev/null;
Niveles de gravedad del registro de errores de Nginx
Existen muchos tipos de niveles de registro que están asociados con un evento de registro y con una prioridad diferente. Todos los niveles de registro se enumeran a continuación. En los siguientes niveles de registro, la depuración tiene máxima prioridad e incluye también el resto de los niveles. Por ejemplo, si especifica un error como nivel de registro, también capturará los eventos de registro etiquetados como críticos, de alerta y de emergencia.
- emerg : Mensajes de emergencia cuando su sistema puede estar inestable.
- alerta : Mensajes de alerta de problemas graves.
- crit : Problemas críticos que necesitan atención inmediata.
- error : Se ha producido un error. Algo salió mal al procesar una página.
- advertir : Un mensaje de advertencia que debes tener en cuenta.
- Aviso : Un aviso de registro simple que puedes ignorar.
- info : Sólo un mensaje de información que quizás quieras saber.
- depuración : Información de depuración utilizada para señalar la ubicación del error.
Resumen
Los registros de acceso y de errores de NGINX no solo mantendrán un registro de la actividad de los usuarios, sino que también le ahorrarán tiempo y esfuerzo en el proceso de depuración. Además, también puede personalizar el registro de acceso si necesita más información a su disposición. Siempre es mejor habilitar los registros de acceso y de errores porque estos dos archivos contienen todas las pistas para un mejor mantenimiento del servidor NGINX.