В Windows Server 2016 есть не особенно известная функция «Сбор данных о настройках и загрузочных событиях». Она позволяет удаленно собирать информацию о событиях, произошедших в процессе загрузки системы. Такая возможность особенно полезна при поиске «плавающих» проблем во время загрузки ОС.


В статье я расскажу, как можно удобно собирать эти недостающие сведения.


Ниже приводятся типы событий, информацию о которых можно узнать с помощью функции «Сбор данных о настройках и загрузочных событиях»:


  1. Загрузка модулей ядра и драйверов.
  2. Перечисление устройств и инициализация их драйверов.
  3. Верификация и установка файловых систем.
  4. Запуск исполняемых файлов.
  5. Запуск и завершение обновлений системы.

После сбора всех необходимых данных о событиях на сервере-сборщике для их анализа можно использовать хорошо знакомые инструменты – Event Viewer, Wevutil или PowerShell.


Далее мы рассмотрим, как настроить сервер и удаленные узлы для сбора данных.


Поддерживаемые ОС


Роль сборщика может выполнять исключительно Windows Server 2016 – это может быть либо сервер с возможностями рабочего стола, либо Server Core.


Ниже приведена таблица с интернет-ресурса TechNet, в которой показаны поддерживаемые виртуализованные типы ОС для сборщиков и целевых компьютеров:


Узел виртуализации Виртуальная машина-сборщик Целевая виртуальная машина
Windows 8.1 да да
Windows 10 да да
Windows Server 2016 да да
Windows Server 2012 R2 да нет

На серверы, с которых вы хотите собирать данные, должна быть установлена или Windows Server 2016, или Windows 10. Кроме того, в качестве целевого узла может выступать компьютер с Nano Server. Также можно собирать данные из окон системы Windows Server 2016, даже если они работают как виртуальная машина на компьютерах с Windows Server 2012 R2.


Конфигурация узла сборщика


Для получения и отображения ETL-событий с целевых компьютеров необходимо настроить узел сборщика. Первое – необходимо подключить службу сбора событий, используя один из нижеуказанных методов.


При помощи DISM:


dism /online /enable-feature /featurename:SetupAndBootEventCollection

Командой PowerShell:


Get-WindowFeature -Name *boot*
Install-Windows -Name Setup-and-Boot-Event-Collection

Также можно установить этот компонент с помощью Server Manager GUI:



Установка службы с помощью диспетчера сервера.


После установки службы сбора событий вы получите доступ к новой службе – Boot Event Collector, запущенной под учетной записью Network Service.



Свойства Boot Event Collector.


Существует также инструмент командной строки bevtcol.exe, который можно запустить с некоторыми полезными параметрами. Он поможет протестировать ваши настройки перед установкой полного сервиса.



Параметры bevtcol.exe.


Например, можно запустить bevtcol.exe – config NewConfig.xml – checkOnly только для проверки правильности файла конфигурации. И потом выйти без запуска самого процесса.


Затем вам нужно проверить, были ли созданы файлы конфигурации по умолчанию на узле сборщика – это поможет вам создать свой первый файл конфигурации компьютера-сборщика.


В папке C:\ProgramData\Microsoft\BootEventCollector\Config, вы увидите три XML файла конфигурации, созданные сразу после установки сервиса.



Файлы конфигурации XML.


Active.xm содержит аналогичную Empty.xml конфигурацию. Каждая новая конфигурация должна быть сохранена в этом файле:


  • Empty.xml – содержит минимально необходимые элементы конфигурации, с установленными по умолчанию значениями;
  • Example.xml – содержит полезные примеры конфигураций.


*XML-файл с пример*ом конфигурации.


Если взглянуть на структуру папки С:\ProgramData\Microsoft\BootEventCollector, можно увидеть, что разные папки созданы для разных целей:


  • ETL – это каталог для хранения собранных ETL-файлов;
  • Logs, как следует из названия, хранят log-файлы для службы сбора.


ETL and log file folders.


Теперь мы можем создать наш первый файл конфигурации. Создайте новый XML-файл в каталоге %SystemDrive%\ProgramData\Microsoft\BootEventCollector\Config и скопируйте содержимое конфигурации, указанной ниже, в .xml-файл.


Пример конфигурации.
<collector configVersionMajor="1" statuslog="c:\ProgramData\Microsoft\BootEventCollector\Logs\statuslog.xml"> 

<common> 
<collectorport value="50000"/> 

<forwarder type="etl"> 
<set name="file" value="c:\ProgramData\Microsoft\BootEventCollector\Etl\{computer}\{computer}_{#3}.etl"/> 
<set name="size" value="10mb"/> 
<set name="nfiles" value="10"/> 
<set name="toxml" value="none"/> 
</forwarder> 

<target> 
<ipv4 value="192.168.1.171"/> 
<key value="6.7.8.9"/> 
<computer value="Server01"/> 
</target> <target> 
<mac value="00:15:5D:60:3D:04"/> 
<key value="1.2.3.4"/> 
<computer value="Server02"/> 
</target> 
</common> 
</collector>

В файле конфигурации есть несколько важных моментов.


Во-первых, Collector – в этом узле мы указали версию файла конфигурации и имя log-файла.

Во-вторых, collectorport – указывает номер порта для сбора входящих событий. Нам также необходимо настроить один и тот же номер порта на целевых компьютерах.

В третьих, forwarder – здесь мы указываем характеристики ETL-файлов. Эти характеристики могут быть следующими:

1. File определяет шаблон имени файла. {# 3} – это трехзначный индекс файла при обращении, такой как 001, 002 и т.д. {Computer} используется для обозначения имени компьютера. Таким образом, в нашем примере файлы будут собраны в папке Etl\COMPUTERNAME\ с именем COMPUTERNAME_00x.

2. Size определяет максимальный размер ETL-файла.

3. Nfiles определяет количество созданных ETL-файлов в обращении. Каждый новый файл создается, как только размер предыдущего достигает ограничения, определенного параметром Size.

4. ToXML — опциональный параметр, определяющий полезную нагрузку, с которой ETW-события во время пересылки преобразуются в XML. None — это значение, установленное по умолчанию. Оно всегда пересылает события в двоичном формате по мере их получения. Если вы установите значение «ALL», полезная нагрузка будет постоянно преобразовываться в XML.

Этот параметр на самом деле является своего рода защитой, поскольку события ETW были разработаны для их интерпретации компьютерами, на которых они и были сгенерированы.


Но как только вы хотите переместить события на другой компьютер, может возникнуть какое-либо несоответствие. Преобразование в формат XML делает события доступными для более широкого спектра целевых узлов. Единственным недостатком является то, что преобразование в XML также нагружает узел-сборщик.


В четвертых, target – здесь можно указать настройки целевого узла. Например, IP-адрес, MAC-адрес или GUID, чтобы настроить компьютеры для приема подключений. Также можно указать anyAllowed, чтобы принимать все подключения.

Вы можете указать несколько целевых компьютеров, добавив дополнительные target-узлы:


  • в описанном выше случае, указаны два целевых компьютера: один с IP-адресом и один с MAC-адресом;
  • Key – это ключи шифрования, которые мы собираемся получить позже, при настройке целевых компьютеров;
  • Computer value – это имя целевого компьютера, который должен быть занесен в ETW-записи, когда они преобразуются в XML.

После того, как вы закончите с файлом конфигурации, сохраните его и настройте целевой узел.


Настройка целевого компьютера


Чтобы настроить целевые компьютеры для отправки ETW-событий, необходимо активировать передачу событий. Вы можете активировать ее локально с помощью команды bcdedit или удаленно с помощью команды PowerShell Remote и Enable-SbecBcd.


В моей лаборатории у меня есть доступ к моим целевым компьютерам, поэтому я буду использовать bcdedit:


bcdedit /event yes
bcdedit /eventsettings net hostip:192.168.1.172 port:50000 key:6.7.8.9

Где:


  • HostIP – это имя компьютера-коллектора, которое мы конфигурировали ранее;
  • Port – это номер порта, который мы указали в файле конфигурации;
  • Key – это ключ шифрования, который нам нужно указать в файле конфигурации.


Активация передачи событий через команду bcdedit.


Я настроил ключи шифрования. Вы можете проверить конфигурацию с помощью следующей команды bcdedit:



Проверка конфигурации события BCD.


Теперь я могу вернуться к моему серверу и применить новый файл конфигурации, который я создал ранее, с указанными ключами. Set-SbecActiveConfig cmdlet нам в этом поможет:


$result = (Get-Content .\myconfig.xml | Set-SbecActiveConfig); $result


Применение файла конфигурации на компьютере-сборщике.


(Get-SbecActiveConfig).content


Получение принятой конфигурации.


И наконец последний шаг – настройка целевых компьютеров для отправки ETW-событий.


На сервере выполните следующую команду:


Enable-SbecAutoLogger -ComputerName <targetcomputer> -Credential (Get-Credential)


Настройка целевого компьютера для отправки ETW-событий.


На сервере файл конфигурации active.xml обновился с моими настройками.



Обновленный файл active.xml.


Также был создан новый log-статус:



Обновленный log-файл.


Кроме того, создается новый ETL-файл, который уже может собирать информацию о настройках и загрузочных событиях с целевого компьютера (Server01). После перезапуска одного из ваших серверов, в нем появится информация:



Собранные ETL-файлы.


Теперь можно открыть собранные ETL-файлы в инструменте просмотра событий Windows:



События, собранные после первой перезагрузки целевого компьютера.


Не забудьте перезагрузить целевой сервер для применения настроек и получения первого набора событий.

Комментарии (0)