У новій версії Internet Information Services 8.5, представленої в якості ролі веб сервера в Microsoft Windows Server 2012 R2, з'явилася нова можливість логування. IIS тепер може писати HTTP-логи в особливий журнал трасування через службу трасування подій Windows (Event Tracing for Windows - ETW). Завдяки механізму Event Tracing for Windows в IIS 8.5 з'явилася можливість відслідковувати події на веб сервері в реальному часі, що вкрай корисно при налагодженні веб-додатків і пошуку несправностей.
У попередніх версіях IIS логи веб-сервера записувалися в окремі лог-файли. Основний недолік даного механізму - кешування логів в оперативній пам'яті. Список з кешу записуються (скидаються) на диск кожну хвилини або по досягненню обсягу 64Кб. Це значно ускладнювало онлайн-траблшутінг в IIS, тому що висока ймовірність того, що подія, поява якого ви очікуєте, відбулося, але інформація про нього поки просто не записалася в лог файл, і, відповідно, ви його не відразу не побачите.
Довідка. Event Tracing for Windows (ETW) - високопродуктивна система журналирования, представлена ще в Windows Vista. Системні компоненти і призначені для користувача додатки за допомогою спеціального API можуть відправляти цій системі повідомлення про свій стан (логи). Система ETW генерує порівняно невелике навантаження, так, наприклад запис інформації про 10000 подій за секунду через службу трасування займе всього близько 3% процесорних ресурсів. Система ETW не замінює звичайний журнал подій і служить зазвичай для нетривалої за часом діагностики роботи додатків або системи.У цій статті ми покажемо, як в IIS 8.5 задіяти службу трасування подій Windows (ETW) і як проаналізувати отримані логи за допомогою Microsoft Message Analyzer.
За замовчуванням IIS 8.5 записує логи в звичайні текстові файли. Щоб включити логирование через ETW, потрібно в панелі управління IIS (Internet Information Services Manager), вибрати ім'я сервера і в правій панелі клацнути по значку Logging.
Примітка. Опція Logging буде доступна тільки при встановленому компоненті IIS: HTTP Logging (Web Server -> Health and Diagnostics -> HTTP Logging).В установках журналирования в розділі Log Event Destination виберете метод ведення журналу, переключившись з стандартного Log file only на ETW event only. Зверніть увагу, що можна включити ETW і стандартне журнал IIS одночасно (Both log file and ETW event). Збережемо зміни. Відразу після цього логи веб сервера IIS почнуть писатися через службу трасування подій Windows.
Для перегляду і аналізу логів IIS в журналах ETW скористаємося безкоштовним інструментом Microsoft Message Analyzer, який можна завантажити з сайту Microsoft за цим посиланням: _http: //www.microsoft.com/en-us/download/details.aspx? id = 40308
Під час першого запуску Microsoft Message Analyzer запитає, чи хочете ви оновити елементи на стартовому екрані. Виберіть бажану дію.
У вікні Message Analyzer налаштуємо доступ до логів IIS ETW. Для цього клацніть по посиланню Capture / Trace в лівій колонці і вкажіть ім'я трасування.
В розділі Trace Scenario Configuration в поле Add Provider введіть IIS і з появи списку виберіть Microsoft-Windows-IIS-Logging.
Після того, як ми підключилися до потрібного провайдера ETW, можна почати перегляд (і збір) подій, натиснувши кнопку Start With.
Зібрані дані будуть відображені у вигляді таблиці (якщо ця опція була вказана при запуску).
Щоб зменшити кількість інформації, що відображається, можна застосовувати різні фільтри. Припустимо, нам потрібно вивести дані, що стосуються тільки певного сайту IIS.
Для цього в розширеному описі потрібного події клацнемо по полю S_sitename і виберемо Add Ssitename To Filter (Додати ім'я сайту в фільтр).
У вікні фільтрів з'явиться згенерований текст коду фільтра. Якщо натиснути кнопку Apply Filter, у вікні журналу залишаться тільки дані, які відносяться до зазначеного нами сайту.
Аналогічним чином можна додати фільтр, наприклад, дозволяє залишити в журналі тільки події з відповіддю сервера 404 (поле Sc_status).
Отже, в цьому невеликому огляді ми розібралися з новими можливостями аналізу і пошуку несправностей на веб сервері IIS, за допомогою журналювання подій веб-сервера через систему ETW. Також ми показали як можна аналізувати отриманих даних за допомогою Microsoft Message Analyzer.