Есть несколько вариантов, и это зависит от того, сколько именно информации вам нужно. Если вы просто хотите знать основную активность (сколько обращений к каждой веб-службе, когда, исходный IP-адрес, пользовательский агент), то в журналах apache уже есть вся эта информация. Используйте CustomLog, чтобы добавить любые дополнительные поля, которые вам нужны. Например. вы упомянули заголовок Accept, который можно добавить следующим образом:
CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" \"%{Accept}i\""
Если это GET, POST, PUT и т. д. содержится в части %r.
Если вы хотите знать, что на самом деле находится в данных POST или PUT, то это сложнее. Крайним решением является использование модуля mod_dumpio. Это регистрирует весь ввод клиента (все заголовки, все файлы cookie, все данные POST). Если люди используют ваш REST API для загрузки изображений, то, хорошо это или плохо, вы получите полное изображение в своем журнале. Это может стать очень большим.
Решение, которое я предпочитаю, состоит в том, чтобы вести журнал с PHP: настраиваемый журнал либо в верхней части вашего PHP-скрипта, либо при обработке запросов. Затем у вас есть полный контроль над тем, что записывать в журнал, самый простой формат для анализа, и вы также можете помещать его в контекст (например, регистрировать текстовые данные, но не регистрировать байты изображения). В разработке и для небольших сайтов я делаю это параллельно с логированием апача. Если Apache использует слишком много ресурсов ЦП, отключите ведение журнала Apache или полностью обойдите Apache. (В настоящее время я оцениваю встроенный веб-сервер в php 5.4 - он поддерживает маршрутизацию, поэтому может быть очень подходящим для веб-сервисов.)
Кстати, анализ журналов серверов полезно проводить параллельно с Google Analytics: это поможет вам оценить точность каждого из них.
person
Darren Cook
schedule
06.09.2012
Accept
для каждого запроса? - person Dan Blows   schedule 31.08.2012