Мы размещаем .exe-файлы на нашем IIS, чтобы наши пользователи могли их загрузить. Есть ли прямой способ узнать, сколько запросов пришло на загрузку файла и сколько из них было завершено (успешная загрузка)? Нужно ли мне для этого разбирать все логи?
Спасибо
Прежде всего: Да, вам необходимо проанализировать все журналы W3SVC, чтобы получить полное представление о том, сколько раз запрашивались файлы * .exe и сколько раз запросы были успешными.
Журналы IIS W3SVC по умолчанию помещаются в:
%windir%\System32\Logfiles\W3SVC\[SiteID]\exYYMMDD.log
или
%systemdrive%\Inetpub\logs\[SiteID]\exYYMMDD.log
в зависимости от версии IIS. Это можно настроить как на верхнем (серверном) уровне, так и для отдельных сайтов. Журналы W3SVC содержат ряд полей (все они могут быть включены или отключены в диспетчере IIS).
Здесь вам нужно убедиться, что (по крайней мере) включены следующие поля:
cs-uri-stem
sc-status
В cs-uri-stem все, что находится после имени хоста, но до любых данных запроса.
В этом примере: https://some.domain.tld/give/me/files.exe?download=yes
, то cs-uri-stem было бы: /give/me/files.exe
Поэтому, когда вы анализируете файлы журнала, запрашивайте их с чем-то вроде cs-uri-stem LIKE '*.exe'
. Для каждого результата проверьте код состояния HTTP, хранящийся в поле sc-status
. Как писал Тим, HTTP 200 означает успех. Если загрузка начинается и сервер обслуживает файл правильно, но клиент отменяет / прекращает загрузку файла, sc-status, вероятно, будет 206, что означает Частичное содержимое; контент / файл был обслужен, но клиент принял только часть из них (или приостановил загрузку).
Список кодов состояния HTTP в IIS 7.0 и IIS 7.5 см .: http://support.microsoft.com/kb/943891
Аналогичный список для IIS 5.0 и IIS 6.0 см. Здесь: http://support.microsoft.com/kb/318380
Предположим, что это одна из ваших строк из журнала:
192.168.114.201, -, 03/20/01, 7:55:20, W3SVC2, SERVER, 172.21.13.45, 4502, 163, 3223, 200, 0, GET, /DeptLogo.gif, -,
GET = документ / файл, запрошенный клиентом
/DeptLogo.gif = Файл запрошен
200 = код ответа (200 означает, что запрос был выполнен)
Единственная часть, в которой я не уверен, это то, что код ответа 200 будет срабатывать только в том случае, если файл завершил отправку клиенту (что еще не на 100% гарантирует, что он завершился правильно на стороне клиента), или если он сработает после того, как сервер начинает отправку. Я бы проверил это самостоятельно, загрузил файл и позволил ему завершиться, проверил журналы, затем повторил, и на этот раз отменил загрузку и снова проверил журнал на предмет различий.