Microsoft IIS
Идентификатор расширения: ru.ruscomtech.extension.wmi.iis.
Возможности
- Сбор количества запросов и статистики HTTP-методов.
- Контроль входящего и исходящего трафика, подключений и времени работы веб-службы.
- Мониторинг состояния пулов приложений, числа рабочих процессов, перезапусков и сбоев.
- Контроль длины очередей, возраста запросов и отказов при постановке в очередь.
- Сбор показателей потоков, кешей, Windows Process Activation Service (WAS) и групп URL.
- Создание сущностей IIS Service, IIS Site и IIS App Pool.
- Формирование связей сайтов и пулов с экземпляром IIS, а при наличии соответствующего хоста — связей с хостом.
- Готовые обзорные панели и страницы анализа сущностей.
Интервал сбора всех групп в текущем пакете — одна минута.
Требования
Расширение предназначено для Ключ-АСТРОМ версии 1.313.0 и новее.
Версии Windows и IIS необходимо выбирать с учётом поддержки используемого ЕдиногоАгента или АктивногоШлюза и наличия необходимых WMI-классов. Отдельная минимальная версия EEC в манифесте пакета не указана.
Локальный сбор
Для локального сбора необходимы:
- Windows с установленным IIS и доступными счётчиками производительности.
- ЕдиныйАгент на сервере IIS.
- Включённый контроллер выполнения расширений EEC.
- Доступ учётной записи сборщика к WMI и счётчикам производительности.
- Работающие службы Windows Management Instrumentation (Winmgmt), Windows Process Activation Service (WAS) и World Wide Web Publishing Service (W3SVC) для получения соответствующих данных.
Удалённый сбор
Для удалённого сбора необходимы:
- АктивныйШлюз на Windows с включённым EEC и поддержкой удалённого сбора WMI.
- Сетевой доступ от АктивногоШлюза к серверу IIS по WMI/DCOM: TCP 135 и используемые целевым сервером порты RPC.
- Учётная запись с правами удалённого чтения WMI и счётчиков производительности.
- Разрешённый удалённый доступ к WMI и соответствующие правила межсетевого экрана.
ЕдиныйАгент на сервере IIS для удалённого сбора не требуется. АктивныйШлюз на Linux для этого режима не подходит.
Подготовка сервера IIS
Проверка служб и счётчиков
На сервере IIS выполните в PowerShell:
Get-Service Winmgmt, WAS, W3SVC Get-CimInstance -Namespace root/cimv2 -Query "SELECT Name, TotalMethodRequestsPersec, CurrentConnections FROM Win32_PerfFormattedData_W3SVC_WebService WHERE Name != '_Total'" Get-CimInstance -Namespace root/cimv2 -Query "SELECT Name, CurrentApplicationPoolState, CurrentWorkerProcesses FROM Win32_PerfFormattedData_APPPOOLCountersProvider_APPPOOLWAS WHERE Name != '_Total'"
Запросы должны возвращать доступные экземпляры сайтов и пулов приложений. Некоторые экземпляры счётчиков появляются только после запуска пула и обработки первого запроса. При пустом результате запустите нужный сайт, обратитесь к нему и повторите проверку.
Расширение использует следующие классы в пространстве имён root\cimv2:
Win32_PerfFormattedData_W3SVC_WebService— сайты, HTTP-методы, трафик и соединения.Win32_PerfFormattedData_APPPOOLCountersProvider_APPPOOLWAS— пулы приложений, состояние и сбои рабочих процессов.Win32_PerfFormattedData_Counters_HTTPServiceRequestQueues— очереди HTTP-запросов.Win32_PerfFormattedData_W3SVCW3WPCounterProvider_W3SVCW3WP— обработка запросов рабочими процессами.Win32_PerfFormattedData_WASW3WPCounterProvider_WASW3WP— рабочие процессы WAS.Win32_PerfFormattedData_W3SVC_WebServiceCache— кеши веб-службы.Win32_PerfFormattedData_Counters_HTTPServiceUrlGroups— группы URL HTTP-службы.
Права для удалённого сбора
- Создайте отдельную учётную запись мониторинга, например
EXAMPLE\iis-monitor. - Предоставьте ей доступ к счётчикам производительности. Для этого обычно используется локальная группа
Performance Monitor Users(«Пользователи системного монитора»). - Откройте
wmimgmt.msc, затем свойства WMI Control → Security → Root → CIMV2 → Security. - Разрешите учётной записи доступ к пространству имён:
Enable AccountиRemote Enable. - В
dcomcnfgпроверьте праваRemote Access,Remote LaunchиRemote Activation, если они не предоставлены через группы учётной записи. - Разрешите подключения WMI/DCOM с АктивногоШлюза в межсетевом экране. Одного открытого порта 135 недостаточно: соединение также использует порты RPC.
Для локальных учётных записей дополнительно учитывайте ограничения Remote UAC. Не отключайте защитные механизмы Windows и межсетевой экран целиком: предоставляйте необходимые права конкретной учётной записи и разрешайте подключения с нужного сборщика.
Проверьте соединение с Windows-хоста АктивногоШлюза, используя ту же учётную запись, которая будет указана в конфигурации расширения:
$credential = Get-Credential 'EXAMPLE\iis-monitor'
$sessionOptions = New-CimSessionOption -Protocol Dcom
$iisSession = New-CimSession -ComputerName 'iis01.example.local' `
-Credential $credential -SessionOption $sessionOptions
try {
Get-CimInstance -CimSession $iisSession -Namespace root/cimv2 `
-Query "SELECT Name, TotalMethodRequestsPersec FROM Win32_PerfFormattedData_W3SVC_WebService WHERE Name != '_Total'"
} finally {
Remove-CimSession $iisSession
}
Проверка использует DCOM, как удалённый сбор WMI. Успешное подключение только по WinRM не подтверждает доступность WMI/DCOM для расширения.
Установка и подключение
- Загрузите пакет расширения в Ключ-АСТРОМ через раздел управления расширениями.
- При необходимости установите корневой сертификат, которым подписан пакет, на ЕдиныйАгент или АктивныйШлюз, выполняющий сбор.
- Откройте расширение
ru.ruscomtech.extension.wmi.iis. - Создайте конфигурацию мониторинга.
- Выберите локальный или удалённый режим.
- Настройте область мониторинга, наборы функций и фильтры.
- Сохраните и включите конфигурацию.
Не создавайте несколько конфигураций с пересекающейся областью мониторинга одного сервера без необходимости.
Локальная конфигурация
Выберите Windows-хост с установленным IIS и включённым EEC. Допускается настройка области мониторинга через группу хостов или зону управления, если соответствующая возможность доступна в интерфейсе.
Адрес сервера, имя пользователя и пароль для подключения к локальному WMI отдельно не задаются: сбор выполняется на выбранном хосте.
Удалённая конфигурация
Выберите группу АктивныхШлюзов, содержащую Windows-сборщик с доступом к серверу IIS.
Добавьте сервер со следующими параметрами:
- Сервер WMI —
iis01.example.local. - Пользователь —
EXAMPLE\iis-monitor. - Пароль — пароль учётной записи мониторинга.
Все АктивныеШлюзы, которые могут выполнять эту конфигурацию, должны иметь доступ к указанному серверу.
Конфигурация и фильтры
Расширение содержит две переменные для фильтрации WQL-запросов:
iis_site— полеIIS Site WMI Query.iis_app_pool— полеIIS App Pool WMI Query.
В поле указывается только условие, подставляемое после WHERE. Полный запрос SELECT и само слово WHERE добавлять не нужно.
Значение по умолчанию для обеих переменных:
Name != '_Total'
Пример фильтра одного сайта:
Name = 'Default Web Site'
Пример фильтра одного пула:
Name = 'DefaultAppPool'
Для выбора по префиксу имени можно использовать LIKE, например Name LIKE 'MySite%'.
Область действия фильтров
iis_siteприменяется к основным метрикам сайтов и наборуIIS Extended Request Metrics.iis_app_poolприменяется к основным метрикам пулов и запросам к классу очередейHTTPServiceRequestQueues.- Сбор состояния пулов выполняется отдельными запросами и не использует переменную
iis_app_pool. - Наборы
Http request processing,WAS worker process,WWW publishing service cache,WWW publishing serviceиUrl groupsне используют эти переменные.
Поэтому фильтр одного сайта или пула не ограничивает весь сбор расширения этим объектом.
Имена экземпляров очередей необходимо проверять отдельно: они могут отличаться от имён сайтов. В текущем пакете имя очереди передаётся через измерение iis_site, что следует учитывать при анализе данных.
Пример конфигурации через API
Пример удалённой конфигурации мониторинга:
[
{
"scope": "ag_group-IIS-Windows",
"value": {
"version": "1.2.1",
"description": "Microsoft IIS — удалённый мониторинг",
"enabled": true,
"activationContext": "REMOTE",
"wmiRemote": {
"devices": [
{
"host": "iis01.example.local",
"user": "EXAMPLE\\iis-monitor",
"password": "REPLACE_WITH_PASSWORD"
}
]
},
"featureSets": [
"IIS Extended Request Metrics"
],
"vars": {
"iis_site": "Name != '_Total'",
"iis_app_pool": "Name != '_Total'"
}
}
}
]
Замените название группы АктивныхШлюзов, адрес сервера и учётные данные своими значениями. Пример не является конфигурацией с рабочим паролем.
В JSON обратная косая черта в имени пользователя записывается как \\. В поле пользователя интерфейса используется обычная запись EXAMPLE\iis-monitor.
Основной набор default собирается независимо от выбранных дополнительных наборов. В примере дополнительно включена статистика HTTP-методов.
Наборы функций
default— 30 ключей метрик. Основные показатели сайтов, пулов, их состояния, очередей и сбоев.IIS Extended Request Metrics— 5 метрик. HEAD, PUT, DELETE, OPTIONS и TRACE.Http request processing— 13 метрик. Активные запросы, потоки, память и промахи кешей рабочих процессов.WAS worker process— 3 метрики. Каналы слушателей, обработчики протоколов и задержка ответа на проверку WAS.WWW publishing service cache— 3 метрики. Попадания в файловый кеш, кеш URI ядра и эффективность выходного кеша.WWW publishing service— 5 метрик. Трафик, попытки подключения, соединения и пользователи.Url groups— 9 метрик. Запросы, трафик и подключения по группам URL.
Всего пакет содержит 67 уникальных ключей метрик. Ключ iis.current.connections.gauge используется в двух наборах, поэтому сумма количества метрик по наборам отличается от количества уникальных ключей.
Набор IIS Extended Request Metrics отмечен в пакете как рекомендуемый. Остальные дополнительные наборы включайте в соответствии с задачами мониторинга и доступностью соответствующих WMI-классов.
Основные метрики
Сайты и веб-служба
iis.method.requests.persec— скорость поступления HTTP-запросов.iis.total.method.requests.count— счётчик всех HTTP-запросов.iis.total.get.requests.count— счётчик GET-запросов.iis.total.post.requests.count— счётчик POST-запросов.iis.total.bytes.received.count— принятые байты.iis.total.bytes.sent.count— переданные байты.iis.total.bytes.transferred.count— суммарный объём трафика.iis.current.connections.gauge— текущее число подключений.iis.service.uptime— время работы веб-службы, секунды.iis.total.files.received.count— полученные файлы.iis.total.files.sent.count— переданные файлы.iis.total.connectionAttempts.allInstances.count— попытки подключения.
Пулы приложений и сбои
iis.current.applicationPool.state— текущее состояние пула.iis.current.applicationPool.uptime— время с последнего запуска пула, секунды.iis.total.applicationPool.uptime— суммарное время работы пула с запуска WAS, секунды.iis.current.workerProcesses— текущее число рабочих процессов.iis.maximum.workerProcesses— максимальное число рабочих процессов с запуска WAS.iis.total.applicationPool.recycles.count— перезапуски пула (recycle).iis.timeSinceLast.workerProcess.failure— время с последнего сбоя процесса, секунды.iis.APPPOOLWAS.RecentWorkerProcessFailures— сбои в интервале rapid-fail protection.iis.APPPOOLWAS.TotalWorkerProcessFailures— общее число сбоев рабочих процессов.iis.APPPOOLWAS.TotalWorkerProcessPingFailures— ошибки ответа на проверку WAS.iis.APPPOOLWAS.TotalWorkerProcessShutdownFailures— ошибки остановки процессов.iis.APPPOOLWAS.TotalWorkerProcessStartupFailures— ошибки запуска процессов.
Числовое состояние пула дополняется измерением app_pool_state:
1— не инициализирован. В текущем пакете текстовая метка записана какUnitialized.2— инициализирован (Initialized).3— работает (Running).4— отключается (Disabling).5— отключён (Disabled).6— ожидает завершения (Shutdown Pending).7— ожидает удаления (Delete Pending).
Очереди запросов
iis.current.queue.size— текущее число запросов в очереди.iis.cache.hitRate— процент попаданий в кеш очереди.iis.HTTPServiceRequestQueues.ArrivalRate— скорость поступления запросов в очередь.iis.HTTPServiceRequestQueues.MaxQueueItemAge— возраст старейшего запроса, секунды.iis.HTTPServiceRequestQueues.RejectedRequests— число отклонённых запросов.iis.HTTPServiceRequestQueues.RejectionRate— скорость отклонения запросов.
Полный перечень ключей, описаний и единиц измерения приведён в разделе metrics файла extension.yaml.
Для метрик, объявленных в источнике как type: count, EEC обрабатывает исходные накопительные счётчики Windows. При построении графиков учитывайте тип метрики и выбранную агрегацию.
Отсутствие данных не следует автоматически считать нулевой нагрузкой или остановкой IIS.
Сущности и панели
Расширение создаёт следующие типы сущностей:
wmi:iis_service_instance— экземпляр веб-службы IIS.wmi:iis_service_site— сайт IIS.wmi:iis_service_app_pool— пул приложений IIS.
Сайты и пулы связываются с экземпляром IIS отношением CHILD_OF. При наличии соответствующего обнаруженного хоста формируются связи RUNS_ON.
На странице хоста предусмотрены списки связанных экземпляров IIS, сайтов и пулов. При удалённом сборе без ЕдиногоАгента сущности IIS могут существовать без связи с сущностью хоста.
В правилах сущностей предусмотрен атрибут dt.security_context.
Пакет содержит:
IIS Overview— классическую обзорную панель.IIS Extension Overview— панель в формате документов.- Страницы анализа IIS Service, IIS Site и IIS App Pool.
На панелях доступны списки объектов, трафик, состояние пулов и их перезапуски. Дополнительные метрики можно использовать в собственных графиках.
В текущем пакете ссылки на настройки в обеих обзорных панелях содержат прежний идентификатор с префиксом custom:. Если кнопка настройки не открывает нужное расширение, откройте ru.ruscomtech.extension.wmi.iis вручную в разделе управления расширениями.
Доступность панели в формате документов зависит от возможностей используемой установки Ключ-АСТРОМ. Для классического интерфейса используйте IIS Overview.
Проверка работы
- Проверьте, что конфигурация мониторинга включена и назначена нужному сборщику.
- Откройте журнал выполнения расширения. Убедитесь, что нет ошибок подключения, авторизации и WMI-запросов.
- Проверьте наличие данных по
iis.method.requests.persec,iis.current.connections.gaugeиiis.current.applicationPool.state. - Откройте сущности IIS Service, IIS Site и IIS App Pool.
- Проверьте соответствие имён сайтов и пулов результатам PowerShell-запросов.
- Откройте обзорную панель и выберите период, включающий время после активации конфигурации.
После запуска дайте сборщику выполнить несколько минутных циклов. Для проверки статистики запросов создайте нагрузку на тестовый сайт.
Диагностика
Нет данных
Проверьте:
- Состояние EEC и выбранную область мониторинга.
- Наличие работающего сайта и пула приложений.
- Доступность WMI-классов из раздела подготовки сервера.
- Значения
iis_siteиiis_app_pool. - Включение нужного дополнительного набора функций.
- Журнал выполнения расширения.
Если фильтр использует точное имя, оно должно совпадать со значением Name, возвращаемым соответствующим WMI-классом.
Ошибка Access denied
Проверьте учётную запись и пароль, права пространства имён root\cimv2, настройки DCOM, доступ к счётчикам производительности и ограничения Remote UAC.
Проверьте разрешение имени сервера, сетевую доступность, TCP 135, используемые порты RPC и правила межсетевого экрана.
Доступность HTTP-сайта на портах 80 или 443 не подтверждает доступность удалённого WMI.
Ошибка Invalid class
Проверьте наличие соответствующего WMI-класса и компонентов IIS, предоставляющих счётчики. Запросите класс вручную через Get-CimInstance.
Если отсутствует класс дополнительного набора, отключите этот набор до восстановления необходимых счётчиков.
Пустые экземпляры счётчиков
Запустите сайт и пул, выполните запрос к сайту, затем повторите проверку WMI. Не все экземпляры доступны до запуска рабочих процессов.
Нет связи с хостом
Проверьте наличие обнаруженного Windows-хоста в Ключ-АСТРОМ. Удалённый сбор WMI без ЕдиногоАгента не гарантирует создание сущности хоста и соответствующих связей.
История изменений
1.2.1
Пакет для Ключ-АСТРОМ 1.313.0+.
В состав версии входят:
- Локальный и удалённый сбор показателей IIS через WMI.
- Переменные WQL для фильтрации основных метрик сайтов, пулов и очередей.
- 67 уникальных ключей метрик: основной набор и шесть дополнительных наборов функций.
- Сбор состояния пулов приложений с текстовым измерением
app_pool_state. - Классическая обзорная панель и панель в формате документов.
- Страницы анализа экземпляров IIS, сайтов и пулов приложений.
- Правила топологии и атрибут
dt.security_contextв сущностях.