8 votos

Tiene Apache registro de solicitudes cuando vienen, en vez de que cuando terminen de

Estoy tratando de diagnosticar una extraña servidor de estrellarse problema (Servidor responde a los pings, pero no acepta conexiones SSH hasta que reinicio. 0% de CPU) donde reiniciar el servidor recibe todo vuelva a la normalidad. Me gustaría tener mi Apache registros de acceso (o algún otro registro) incluyen todas las peticiones que se han hecho a la derecha como el accidente ocurrido, pero lamentablemente Apache no registro de solicitudes hasta después de que se complete. Lo que significa que si una solicitud se bloquea el servidor, que la solicitud no termina nunca y por lo tanto no aparecen en los registros.

¿Hay alguna manera de configurar Apache para crear un archivo de registro que se escriben como las solicitudes llegan?

6voto

sandroid Puntos 1528

Creo que lo que necesitan forense de registro, consulte este enlace: http://httpd.apache.org/docs/current/mod/mod_log_forensic.html

fragmento:

Forense Formato De Registro:

Cada solicitud se registra dos veces. El primer momento es antes de que sea procesada más (que es, después de recibir los encabezados). El segundo registro de entrada se escribe después de la petición de procesamiento, al mismo tiempo, donde el registro normal se produce.

Con el fin de identificar cada una solicitud, una petición única de IDENTIFICACIÓN asignado. Este forenses de IDENTIFICACIÓN pueden ser registrados en la normal de registro de transferencia utilizando el %{forense-id}n de cadena de formato. Si usted está usando mod_unique_id, su ID generado será utilizado.

La primera línea de los registros de la forense de IDENTIFICACIÓN de la línea de solicitud y todos los encabezados de recepción, separados por pipes (|). Una muestra de la línea parecida a la siguiente (todo en una línea):

+yQtJf8CoAB4AAFNXBIEAAAAA|GET /manual/de/images/down.gif HTTP/1.1 Host:localhost%3a8080|User-Agent:Mozilla/5.0 (X11; U; Linux i686; en-US; rv%3a1.6) Gecko/20040216 Firefox/0.8|Accept:image/png, etc...

El signo más al principio indica que esta es la primera línea de registro de esta solicitud. La segunda línea contiene un signo menos y el ID de nuevo:

-yQtJf8CoAB4AAFNXBIEAAAAA

El check_forensic script toma como argumento el nombre del archivo de registro. Busca los +/- IDENTIFICACIÓN de los pares y se queja si la solicitud no se ha completado.

2voto

Mark Puntos 1998

Sandroid la respuesta es el adecuado para tu pregunta, pero usted realmente debería considerar la ejecución de una captura de paquetes de red así. Si usted tiene los recursos, la duplicación de el puerto en el switch y el uso de una segunda máquina que ejecuta WireShark para registrar todo el tráfico IP puede realmente ayudar. Si algo está llevando a cabo el servidor hasta el punto donde no HTTP servicios no están respondiendo entonces podría ser sacar la IP de la pila antes de que el mal de datos hace a Apache.

Si usted puede asegurarse de que la máquina en que se ejecuta la captura tiene diferentes hardware de red y/o conductores de los otros. Aspiraría a choque de dos por el precio de uno. ;-)

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: