Перейти к содержимому
Калькуляторы

Детальное логгирование веб-сервера

Иногда нужно просмотреть взаимодействие между клиентом и сервером на уровне протокола, увидеть сырые передаваемые и принимаемые данные.

Посоветуйте, чем это можно сделать?

tcpdump подходит далеко не всегда — во-первых речь часто идет о vhost и не всегда интересующего клиента можно посадить на выделенный IP, а во-вторых порой нужно бывает посмотреть внутрь https.

Проксирование тоже не так уж просто и удобно бывает использовать, особенно если нужно проксировать https.

В Apache можно настроить логгирование:

    SetEnv flag-debug
    LogFormat "* %{%FT%T}t%{%z}t %Dus %h %H %f\n\t%m %U%q (len %I, \"%{Accept}i\")\n\tHost: %{Host}i\n\tReferer: %{Referer}i\n\tUA: %{User-Agent}i\n\tOther: MAC \"%{Mac-Address}i\"\n\tResponse: %X #%>s (len %O, \"%{Content-Type}o\")\n" debug
    CustomLog "${APACHE_VHOST_DIR}/log/debug.log" debug env=flag-debug

В какой-то степени это помогает, но не всегда заранее известно, какие данные нужно логгировать.

Идеальным для меня было бы сохранять в лог полный набор заголовков http-запроса (опционально с телом запроса) и полный набор заголовков http-ответа (также опционально с телом ответа).

Еще в Apache есть модуль log_forensic. Он сохраняет полный набор заголовков, но только для запросов и в неудобном формате.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если нет шифрования, можно использовать tshark в режиме сохранения в json-файл, который потом грузить в elasticsearch

Либо переделывать https на отдельный прокси и перехватывать трафик между.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А сам апач нельзя научить сохранять запросы/ответы как есть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Nginx умеет сохранять много-много информации из запроса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

10 часов назад, alibek сказал:

А сам апач нельзя научить сохранять запросы/ответы как есть?

Post-запросы сохранять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И сами запросы, и ответы, и их заголовки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 22.06.2019 в 13:29, alibek сказал:

Иногда нужно просмотреть взаимодействие между клиентом и сервером на уровне протокола, увидеть сырые передаваемые и принимаемые данные.

Консоль браузера тебе в помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А причем тут браузер?

Вся сложность в том, когда клиентами являются устройства. И не всегда в контролируемой сети.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.