NGINX es un servidor web confiable y de alto rendimiento, capaz de manejar grandes cantidades de tráfico para los sitios Web más concurridos de internet. Al solucionar problemas, necesita una forma de dar sentido al tráfico y NGINX proporciona funciones de registro flexibles para capturar detalles valiosos y ayudarlo a comprender el comportamiento de su servidor web.
NGINX ofrece dos archivos diferentes para registrar datos valiosos del servidor web., Esos dos archivos son error_log y access_log. access_log se utiliza para almacenar información sobre solicitudes de clientes web y error_log almacena otros mensajes inesperados o informativos.
configurar access_log
el archivo access_log recopila todas las solicitudes de los clientes inmediatamente después de que se procesa la solicitud, lo que proporciona una excelente manera de registrar las páginas que los usuarios están solicitando desde su servidor web., Puede elegir dónde se escriben los datos de acess_log usando la siguiente sintaxis de archivo de configuración:
access_log path ] ];access_log off;
Specifyingformat le permite usar un formato personalizado en sus registros mediante el uso de variables como el número de bytessent al cliente (by bytes_sent) o la longitud de la solicitud (requ request_length).
normalmente, NGINX registrará cada transacción que procese en access_log. El parámetro if=condition proporciona una vía poderosa para realizar el registro condicional, de modo que solo almacena los mensajes de registro de acceso al registro si alguna condición es verdadera., Por ejemplo, si solo desea grabar solicitudes que devuelven un código de estado HTTP 404, puede usar el siguiente fragmento de código:
map $status $should_log {404 1;default 0;}access_log logs/access.log combined if=$should_log;
con este cambio, cualquier solicitud completada con éxito (2xx), redirigida a otra página (3xx) o encontrada con un servidor, el error (5xx) no se registrará en registros/acceso.log-only404 los errores serán registrados.
Si tiene más de un host virtual o varias directivas http, servidor o ubicación, a veces es útil deshabilitar el registro en el nivel de directiva actual, y se creó el valor off especial para este propósito.,La siguiente línea de configuración muestra cómo puede evitar que NGINX escriba información de acceso a cualquier targetat access_log en el nivel actual:
access_log off;
para una explicación más completa de las opciones de Configuración, Consulte la documentación de NGINX access_log.
NGINX Log Severity Levels
NGINX admite una amplia gama de niveles de gravedad para facilitar el registro de la información que le interesa. Cada uno de estos niveles se puede usar con la directiva error_log para establecer el nivel mínimo en el que se registran los mensajes., Aquí están los niveles soportados en orden más bajo a más alto, junto con una guía sobre cómo se usan:
- Debug – depurar mensajes que no son útiles la mayoría del tiempo.
- Info-mensajes informativos que podrían ser buenos para saber.
- Aviso – algo normal pero significativo sucedió y debe tenerse en cuenta.
- Warn-algo inesperado sucedió, sin embargo, no es motivo de preocupación.
- Error – algo ha fallado.
- Crit-se produjo una condición crítica.
- Alert-se requiere una acción inmediata.
- Emerg-el sistema es inutilizable.,
configurando error_log
de forma predeterminada, el archivo error_log captura todos los mensajes de registro en el nivel de gravedad del error, lo que significa que se usa principalmente para comprender los mensajes fatales o críticos para ayudar con el arranque de problemas. La ubicación predeterminada para error_logis logs / error.registro. La forma en que Nginx almacena mensajes de error es flexible y, además de permitirle escribir mensajes en un archivo, también admite el envío de mensajes error_log a stderr o al demonio syslog. Si está ejecutando NGINXopen source 1.5.,2 o posterior, también puede enviar mensajes error_log a más de un lugar a la vez especificando múltiples directivas error_log en el mismo nivel de configuración.
si desea registrar todos los mensajes en o por encima de la gravedad del registro de advertencia haga el siguiente cambio de configuración:
error_log logs/error.log warn;
registro en Syslog con NGINX
tanto las directivas access_log como error_log admiten el envío de mensajes a un demonio syslog mediante el uso de la cadena syslog: en su configuración., El siguiente fragmento muestra la sintaxis para usar cualquiera de las Directivas con un demonio syslog:
http {error_log syslog:server;…}
por ejemplo, si desea dirigir todos los mensajes error_log con warn o mayor severidad al syslogdaemon use esta línea de directiva:
error_log syslog:server=192.168.1.1 severity=warn;
puede personalizar aún más la configuración de Syslog para adaptarse a su entorno mediante el uso del parámetro syslog descrito en la documentación de nginxsyslog.
gestión de registros sin frustraciones. (Es una cosa.,)
agregue, organice y administre sus registros con Papertrail
cosas que debe tener en cuenta
la flexibilidad que NGINX logging proporciona a comesat un costo, y hay algunas cosas que debe tener en cuenta al escribir su archivo de configuración. Ya hemos cubierto la capacidad de NGINX para anular las configuraciones de Logging a nivel de directiva, y esta característica es extremadamente útil para registrar información adicional cuando los usuarios acceden a rutas específicas, por ejemplo, loggingextra información de tráfico para cualquier usuario que acceda a la URI /privada., Sin embargo, el uso de registros de acceso anidados puede volverse rápidamente complejo y debe tener cuidado de no usar esta función demasiado.
escribir access_logentries en un archivo en el disco puede degradar el rendimiento del servidor y aumentar la latencia de respuesta para las solicitudes de los usuarios. Para los servidores web que necesitan mantener un alto rendimiento, NGINX proporciona una forma de escribir mensajes de registro en un búfer cíclico en memoria, evitando completamente el disco. Extraer estos registros es más complicado que leer un archivo, por lo que solo debe usarlo si el rendimiento es crítico para su carga de trabajo.,
para usar esta función, su versión de NGINX debe configurarse utilizando la opción—with-debug. Puede verificar si este es el caso haciendo esto:
$ nginx -V 2>&1 | grep—‘—with-debug’configure arguments: --with-debug
dentro del archivo de configuración puede habilitar la escritura de entradas de registro en la memoria con el siguiente fragmento:
error_log memory:32m debug;...http {...}
esto escribirá todos los mensajes de registro en el nivel de depuración. Extraer los mensajes de registro de la memoria implica usar gdb para conectarse al proceso NGINX y copiar y pegar el siguiente script en el prompt:
set $log = ngx_cycle->logwhile $log->writer != ngx_log_memory_writerset $log = $log->nextendset $buf = (ngx_log_memory_buf_t *) $log->wdatadump binary memory debug_log.txt $buf->start $buf->end
luego salir de GDB usando Ctrl-D., El script anterior escribirá el contenido de la memoria en el debug_log.txtfile donde se puede leer como normal.
conclusión
NGINX le permite recopilar registros de accesos a bothroutine y errores inesperados en archivos separados para análisis posteriores y solución de problemas. El formato del access_logfile se puede personalizar ampliamente para incluir información detallada sobre las solicitudes, como el número de bytes enviados al cliente o la longitud de la solicitud,y la directiva error_log le permite controlar el nivel de gravedad mínimo requerido para que los mensajes se registren.,Tanto las directivas access_log como error_log pueden transmitir logentries a un demonio syslog, lo que puede ser extremadamente útil para los desarrolladores que trabajan con varios servidores web.
y si todas esas características no son suficientes para usted, incluso puede escribir error_logentries en un búfer de memoria para evitar escribir en el disco y reducir el impacto en el rendimiento de los servidores ocupados.