Estoy tratando de diagnosticar un extraño problema de bloqueo del servidor (el servidor responde a pings, pero no aceptará conexiones SSH hasta que se reinicie. 0% CPU ) donde el reinicio del servidor hace que todo vuelva a la normalidad. Me gustaría que mis registros de acceso de Apache (o algún otro registro) incluyan todas las solicitudes que se hicieron correctamente cuando ocurrió el bloqueo, pero desafortunadamente Apache no registra las solicitudes hasta después de que se completen. Esto significa que si una solicitud bloquea el servidor, esa solicitud nunca finaliza y, por lo tanto, no aparece en los registros.
¿Hay alguna forma de configurar Apache para crear un archivo de registro en el que se escriben cuando llegan las solicitudes?
fuente
Respuestas:
Creo que necesita registro forense, vea este enlace: http://httpd.apache.org/docs/current/mod/mod_log_forensic.html
retazo:
Formato de registro forense:
Cada solicitud se registra dos veces. La primera vez es antes de que se procese más (es decir, después de recibir los encabezados). La segunda entrada de registro se escribe después del procesamiento de la solicitud al mismo tiempo que ocurre el registro normal.
Para identificar cada solicitud, se asigna una ID de solicitud única. Esta identificación forense se puede cruzar en el registro de transferencia normal utilizando la cadena de formato% {forensic-id} n. Si está utilizando mod_unique_id, se usará su ID generada.
La primera línea registra la identificación forense, la línea de solicitud y todos los encabezados recibidos, separados por caracteres de canalización (|). Una línea de muestra tiene el siguiente aspecto (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 | Aceptar: image / png, etc.
El carácter más al principio indica que esta es la primera línea de registro de esta solicitud. La segunda línea solo contiene un carácter menos y la ID nuevamente:
-yQtJf8CoAB4AAFNXBIEAAAAA
El script check_forensic toma como argumento el nombre del archivo de registro. Busca esos pares de ID +/- y se queja si no se completó una solicitud.
fuente
La respuesta de Sandroid es la adecuada para su pregunta, pero también debería considerar ejecutar una captura de paquetes de red. Si tiene los recursos, duplicar el puerto dentro del conmutador y usar una segunda máquina que ejecute WireShark para registrar todo el tráfico IP realmente podría ayudar. Si algo está sacando el servidor hasta el punto en que los servicios que no son HTTP no responden, entonces podría estar sacando la pila de IP antes de que los datos incorrectos lleguen a Apache.
Si puede asegurarse de que la máquina que ejecuta la captura tenga hardware y / o controladores de red diferentes a los demás. Sería un asco chocar dos por el precio de uno. ;-)
fuente