Si usted es responsable de mantener los servidores web en funcionamiento, ya sabe que el acceso fácil a los mensajes de registro es fundamental para solucionar problemas. Apache proporciona soporte integral para el registro, y su configuración altamente personalizable le permite adaptar su registro a sus necesidades exactas. Puede obtener visibilidad de sus servidores web registrando todo, desde la solicitud inicial hasta el proceso de asignación de URL y la terminación de la conexión., Y si esto no fuera suficiente, los módulos de terceros proporcionan capacidades de registro adicionales, como soporte para tiempos de ejecución de aplicaciones, incluidos los programas PHP, Java y CGI.
en este artículo, te mostraré cómo usar los dos mecanismos de registro diferentes en Apache y cómo encontrar los datos que necesitas de tus registros cuando investigas problemas.
la directiva ErrorLog
errores y advertencias de diagnóstico en servidores web generalmente significan que los usuarios no pueden acceder a las páginas y recursos que necesitan, y el primer lugar que cualquier administrador buscará es en el registro de errores del servidor Apache., Por lo tanto, theErrorLog es el archivo de Registro de Apache más importante para la solución de problemas. Contiene la información que necesitará para comprender por qué se producen errores y qué usuarios se ven afectados.
la ubicación del registro de errores se controla con la directiva ErrorLog. De forma predeterminada, puede encontrarlo en un archivo (error.log) pero también es posible enviar el log de errores a un demonio syslog o canalizarlo a un programa usando Apachesupport para los logs canalizados.,
la Directiva ErrorLogFormat le permite crear el aspecto de los mensajes de error del servidor y los datos que contienen, además del logmessage emitido por el código interno de Apache. Apache envía un rango de mensajes diferentes a error.log, por lo que a veces es difícil distinguirlos y encontrar el que estás buscando. Al aprovechar ErrorLogFormatdirective, podrás encontrar los mensajes que necesitas más rápido.,
Por supuesto, no tiene que especificar su propio formato, ya que Apache proporciona un formato predeterminado, pero Utilizando ErrorLogFormat, puede crear datos de registro más relevantes y procesables.,
por ejemplo, la siguiente directiva ErrorLogFormat muestra una marca de tiempo, la gravedad del mensaje de registro, el ID de proceso del servidor web, el archivo de origen y el registro donde se generó el registro y, finalmente, el mensaje en sí:
ErrorLogFormat " %F %M"
el formato produce mensajes de error que se ven así:
la directiva Apache ErrorLogFormat admite más de 20 cadenas de formato diferentes, que funcionan igual que el estilo C printf() formatstrings., Esto muestra lo flexibles que son las capacidades de Registro de Apache: Apach proporciona la capacidad de personalizar dónde se envían los mensajes de errores del servidor y le permite controlar su formato, para que pueda incluir toda la información que necesita.
la directiva CustomLog
cada vez que un usuario visita su sitio, Apachestores información sobre las rutas a las que accedieron en access.registro., Esto le brinda una manera útil de monitorear cosas como las secciones más populares de su sitio, le permite ver las direcciones desde las cuales los usuarios se están conectando y muestra qué códigos de estado HTTP fueron devueltos por su servidor para cada solicitud. Las direcciones de conexión y los códigos de estado HTTP pueden ser pistas valiosas para la resolución de problemas e investigación posteriores.
al igual que el registro de errores, puede configurar el formato del registro de acceso utilizando cadenas de formato con la directiva LogFormat., Cada LogFormatoption requiere un identificador único, por lo que puede crear más de un logformat para almacenar mensajes de registro de diferentes maneras.
por ejemplo, aquí hay un ejemplo de dos formatos de registro diferentes que escriben cada uno en archivos separados. El primer formato sigue el formato de registro común (CLF es compatible con muchas aplicaciones, por lo que a menudo se usa como formato de registro para servidores web), y el segundo formato muestra solo el referente y la solicitud de URL:
Las entradas para estos formatos se ven así:
Acceso.log
127.0.0.1 - - "GET / HTTP/1.1" 200 11229
referer.,log
- -> /index.html
al combinar una directiva LogFormat con CustomLog,puede dirigir los mensajes de registro a diferentes archivos.
no solo puede escribir mensajes de registro de acceso en múltiples archivos de registro, sino que también puede condicionar la escritura de mensajes de registro a algún atributo de la solicitud. El SetEnvIfdirective le permite establecer environmentvariables si alguna condición es verdadera. Luego puede usar la cláusula env= en sus directivas CustomLog para habilitar loggingonly si esa variable de entorno está establecida.
Aquí hay un ejemplo que registra todas las solicitudes de localhost en un archivo dedicado llamado local.,log:
SetEnvIf Remote_Addr "127\.0\.0\.1" localaddrCustomLog ${APACHE_LOG_DIR}/local.log common env=localaddr
esta regla aprovecha la variable Apache Remote_Addr, que registra la dirección IP del cliente que realiza la solicitud. La lista completa de Apachevariables está disponible en la documentación de Apache. Si está utilizando la búsqueda SolarWinds®Papertrail™, puede usar esas variables para resolver rápidamente los problemas de troubleshoot.
análisis de errores y registros de acceso
Una vez que haya escrito mensajes de registro en sus archivos de registro, necesita una forma de extraerlos. Por supuesto, puede enviarlos directamente a Papertrail, donde puede seguir, buscar y analizar registros en vivo y almacenados., Si no los envía a Papertrail, puede usar herramientas de archivos estándar como cat, less y tail. Si está utilizando el comando tail, imprime las últimas 10 líneas de un archivo de forma predeterminada, pero puede controlar exactamente cuántas líneas se muestran con el parámetro-n. Para leer las últimas 25 líneas de access.registro, debe hacer:
tail -n25 access.log
La función Papertrail live tail le permite seguir sus registros y ver continuamente nuevos eventos a medida que suceden., Puede pausar, buscar y desplazarse por el historial de Registros e incluso hacer clic en elementos para saltar a entradas de registro relacionadas, como todas las que tienen una dirección IP específica.
si su servidor web recibe mucho tráfico, es un desafío buscar manualmente a través de sus registros debido a su tamaño. En su lugar, debe recurrir a la sintaxis de búsqueda de la solución Papertrail, que le permite crear expresiones poderosas que coincidan con las cadenas que está tratando de encontrar., Aquí hay un ejemplo de cadena de búsqueda para encontrar todos los mensajes que contienen 404 códigos de estado HTTP:
HTTP 404
Si está trabajando con archivos de registro de múltiples fuentes como PHP, Apache o JSON, podría valer la pena mirar una herramienta de gestión de registros como Papertrail.
conclusión
administrar eficazmente los servidores web significa que necesita ser capaz de comprender su comportamiento y rendimiento. Cuando los usuarios comienzan a reportar páginas que no se cargan o las conexiones se agotan, necesita una forma de mirar bajo el capó de sus servidores web para ver lo que está sucediendo., Los mensajes de registro accionables son la clave para mantener su sitio en funcionamiento.
Apache proporciona un montón de opciones para almacenar mensajes de registro en archivos. Con las directivas ErrorLog y CustomLog, puedes personalizar dónde se escriben los mensajes y su formato. Dividir logmessages en varios archivos es posible con más de una directiva, y con el soporte de Apache para variables de entorno, puede aprovechar conditionalstatements para elegir exactamente cuándo deben escribirse los mensajes de registro.