Назад | Перейти на главную страницу

Как отслеживать загрузку файлов в IIS?

Мы размещаем .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% гарантирует, что он завершился правильно на стороне клиента), или если он сработает после того, как сервер начинает отправку. Я бы проверил это самостоятельно, загрузил файл и позволил ему завершиться, проверил журналы, затем повторил, и на этот раз отменил загрузку и снова проверил журнал на предмет различий.