Я пытаюсь диагностировать причудливую проблему сбоя сервера (Сервер отвечает на эхо-запросы, но не принимает SSH-соединения до перезагрузки. 0% ЦП), где перезагрузка сервера возвращает все в норму. Я хотел бы, чтобы мои журналы доступа к Apache (или какой-либо другой журнал) включали все запросы, которые были сделаны сразу после сбоя, но, к сожалению, Apache не регистрирует запросы до их завершения. Это означает, что если запрос вызывает сбой сервера, этот запрос никогда не завершается и, следовательно, не отображается в журналах.
Есть ли способ настроить Apache для создания файла журнала, который записывается по мере поступления запросов?
Думаю, для чего нужен криминалистический журнал, смотрите по этой ссылке: http://httpd.apache.org/docs/current/mod/mod_log_forensic.html
фрагмент:
Формат журнала судебной экспертизы:
Каждый запрос регистрируется два раза. В первый раз - до дальнейшей обработки (то есть после получения заголовков). Вторая запись в журнале записывается после обработки запроса одновременно с обычным ведением журнала.
Для идентификации каждого запроса присваивается уникальный идентификатор запроса. Этот идентификатор судебной экспертизы может быть перекрестно зарегистрирован в обычном журнале передачи с помощью строки формата% {forensic-id} n. Если вы используете mod_unique_id, будет использоваться его сгенерированный идентификатор.
В первой строке записывается идентификатор судебной экспертизы, строка запроса и все полученные заголовки, разделенные вертикальной чертой (|). Строка образца выглядит следующим образом (все в одной строке):
+ yQtJf8CoAB4AAFNXBIEAAAAA | GET /manual/de/images/down.gif HTTP / 1.1 | Хост: localhost% 3a8080 | User-Agent: Mozilla / 5.0 (X11; U; Linux i686; en-US; rv% 3a1.6) Gecko / 20040216 Firefox / 0.8 | Принять: image / png и т. Д.
Знак плюс в начале указывает, что это первая строка журнала этого запроса. Вторая строка содержит просто минус и снова идентификатор:
-yQtJf8CoAB4AAFNXBIEAAAAA
Сценарий check_forensic принимает в качестве аргумента имя файла журнала. Он ищет эти пары +/- ID и жалуется, если запрос не был выполнен.
Ответ Sandroid на ваш вопрос правильный, но вам действительно стоит подумать о запуске захвата сетевых пакетов. Если у вас есть ресурсы, действительно может помочь зеркалирование порта в коммутаторе и использование второй машины, на которой запущен WireShark, для записи всего IP-трафика. Если что-то выводит сервер до такой степени, что службы, отличные от HTTP, не отвечают, возможно, он вынимает стек IP до того, как плохие данные попадут в Apache.
Если вы можете убедиться, что компьютер, на котором выполняется захват, имеет другое сетевое оборудование и / или драйверы, чем другое. Было бы отстойно разбить два по цене одного. ;-)