Отслеживание событий в системе трассировки событий Windows
В примере EtwTracking показано, как включить отслеживание Windows Workflow Foundation (WF) в службе рабочих процессов и вывести события отслеживания в трассировке событий для Windows (ETW). Для создания записей отслеживания рабочих процессов в ETW в этом образце используется участник отслеживания трассировки событий Windows (EtwTrackingParticipant).
В образце рабочий процесс получает запрос, присваивает обратное значение входных данных входной переменной и возвращает обратное значение клиенту. Если входные данные равны 0, то возникнет необрабатываемое исключение деления на ноль, которое приводит к прерыванию рабочего процесса. При включенном отслеживании в трассировке событий Windows создается запись отслеживания ошибки, которая в дальнейшем может быть использована для исправления ошибки. Для подписки на записи отслеживания в участнике отслеживания трассировка событий Windows задается профиль отслеживания. Профиль отслеживания определяется в файле Web.config и предоставляется участнику отслеживания трассировки событий Windows как параметр конфигурации. Участник отслеживания трассировки событий Windows настраивается в файле Web.config службы рабочего процесса и применяется к службе как поведение службы. В этом образце события отслеживания просматриваются в журнале событий с помощью средства просмотра событий.
Подробные сведения об отслеживании рабочего процесса
Windows Workflow Foundation предоставляет инфраструктуру отслеживания для отслеживания выполнения экземпляра рабочего процесса. Среды выполнения отслеживания создает экземпляр рабочего процесса для создания событий, связанных с жизненным циклом рабочего процесса, событиями из действий рабочего процесса и пользовательскими событиями. В следующих сведениях о таблице подробно описаны основные компоненты инфраструктуры отслеживания.
Компонент | Description |
---|---|
Среда выполнения отслеживания | Предоставляет инфраструктуру для передачи записей отслеживания. |
Участники отслеживания | Открывает записи отслеживания. платформа .NET Framework 4.6.1 поставляется с участником отслеживания, который записывает записи отслеживания в качестве событий трассировки событий Windows (ETW). |
Профиль отслеживания | Механизм фильтрации, который позволяет участнику отслеживания подписаться на подмножество записей отслеживания, передаваемых из экземпляра рабочего процесса. |
Следующая таблица содержит подробные сведения о записях отслеживания, создаваемых средой выполнения рабочего процесса.
Запись отслеживания | Description |
---|---|
Записи отслеживания экземпляра рабочего процесса. | Описывает жизненный цикл экземпляра рабочего процесса. Например, запись экземпляра создается при запуске и завершении рабочего процесса. |
Записи отслеживания состояний действия. | Подробные сведения о выполнении действия. Эти записи сообщают о состоянии действия рабочего процесса, например о планировании выполнения действия, о завершении действия или о возникновении ошибки. |
Запись возобновления закладки. | Создается при возобновлении закладки в экземпляре рабочего процесса. |
Пользовательские записи отслеживания. | Автор рабочего процесса может создавать настраиваемые записи отслеживания и выдавать их в рамках пользовательской операции. |
ActivityScheduledRecord | Эта запись создается, когда действие планирует другое действие. |
FaultPropagationRecord | Эта запись создается, когда от действия передается ошибка. |
CancelRequestedRecord | Эта запись создается, когда действие отменяется другим действием. |
Участник отслеживания подписывается на часть создаваемых записей отслеживания с помощью профилей отслеживания. Профиль отслеживания содержит запросы отслеживания, которые позволяют подписываться на определенный тип записей отслеживания. Профили отслеживания можно указывать в коде или в конфигурации.
Использование этого образца
Откройте файл решения EtwTrackingParticipantSample.sln с помощью Visual Studio.
Для построения решения нажмите CTRL+SHIFT+B.
Чтобы запустить решение, нажмите клавишу F5.
По умолчанию служба прослушивает порт 53797 (
http://localhost:53797/SampleWorkflowService.xamlx
).С помощью проводник откройте тестовый клиент WCF.
Тестовый клиент WCF (WcfTestClient.exe) находится в папке <>установки Visual Studio\Common7\IDE\.
Папка установки Visual Studio по умолчанию — C:\Program Files\Microsoft Visual Studio 10.0.
В тестовом клиенте WCF выберите "Добавить службу " в меню "Файл ".
Добавьте адрес конечной точки в поле ввода. Значение по умолчанию —
http://localhost:53797/SampleWorkflowService.xamlx
.Откройте приложение просмотра событий.
Прежде чем вызывать службу, запустите Просмотр событий из меню "Пуск", выберите "Выполнить" и введите его
eventvwr.exe
. Убедитесь, что журнал событий прослушивает события отслеживания, создаваемые службой рабочего процесса.В представлении дерева Просмотр событий перейдите к Просмотр событий, журналам приложений и служб и Корпорации Майкрософт. Щелкните правой кнопкой мыши Корпорацию Майкрософт и выберите пункт "Просмотр" и "Показать журналы аналитики и отладки", чтобы включить журналы аналитики и отладки
Убедитесь, что параметр Show Analytic and Debug Logs проверка.
В представлении дерева в Просмотр событий перейдите к Просмотр событий, приложениям и службам, Microsoft, Windows, приложениям приложений. Щелкните правой кнопкой мыши "Аналитика" и выберите "Включить журнал", чтобы включить журнал Аналитики.
Проверьте службу с помощью тестового клиента WCF, дважды щелкнув
GetData
.Откроется метод
GetData
. Запрос принимает один параметр и проверяет, равно ли значение 0 (значение по умолчанию).Нажмите кнопку "Вызвать".
Просмотрите события, переданные из рабочего процесса.
Вернитесь к Просмотр событий и перейдите к Просмотр событий, приложениям и службам, Microsoft, Windows, application Server-Applications. Щелкните "Аналитика" правой кнопкой мыши и выберите "Обновить".
События рабочего процесса отображаются в средстве просмотра событий. Обратите внимание, что отображаются события выполнения рабочего процесса и одно из них является необработанным исключением, соответствующим ошибке в рабочем процессе. Кроме того, действие рабочего процесса создает событие предупреждения, указывающее, какое действие выдало ошибку.
Повторите шаги 9 и 10, введя данные, отличные от 0, чтобы ошибка не появлялась.
Профили отслеживания позволяют подписаться на события, создаваемые средой выполнения при изменении состояния экземпляра рабочего процесса. Исходя из потребностей, можно создать профиль с низкой детализацией, который будет подписан на небольшой набор изменений состояния высокого уровня в рабочем процессе. В то же время можно создать очень точный профиль, выходные данные которого будут достаточно полными для последующей реконструкции выполнения. Образец демонстрирует события, создаваемые средой выполнения рабочего процесса для трассировки событий Windows с помощью HealthMonitoring Tracking Profile
, создающего небольшой набор событий. В файле Web.config имеется другой профиль, создающий больше событий отслеживания, он называется Troubleshooting Tracking Profile
. При установке платформа .NET Framework 4.6.1 профиль по умолчанию с пустым именем настраивается в файле Machine.config. Этот профиль используется конфигурацией поведения отслеживания ETW при отсутствии имени профиля или при задании пустого имени.
Профиль отслеживания мониторинга работоспособности создает записи экземпляра рабочего процесса и записи распространения ошибок действий. Этот профиль создается путем добавления следующего профиля отслеживания в файл конфигурации Web.config.
<tracking>
<profiles>
<trackingProfile name="HealthMonitoring Tracking Profile">
<workflow activityDefinitionId="*">
<workflowInstanceQueries>
<workflowInstanceQuery>
<states>
<state name="Started"/>
<state name="Completed"/>
<state name="Aborted"/>
<state name="UnhandledException"/>
</states>
</workflowInstanceQuery>
</workflowInstanceQueries>
<faultPropagationQueries>
<faultPropagationQuery faultSourceActivityName ="*" faultHandlerActivityName="*"/>
</faultPropagationQueries>
</workflow>
</trackingProfile>
</profiles>
</tracking>
Профиль может быть изменен путем изменения конфигурации EtwTrackingParticipant
на следующую.
<behaviors>
<serviceBehaviors>
<behavior>
<etwTracking profileName="HealthMonitoring Tracking Profile"/>
</behavior>
</serviceBehaviors>
</behaviors>
Очистка (необязательно)
Откройте Средство просмотра событий.
Перейдите к Просмотр событий, приложениям и службам, Microsoft, Windows, приложениям-приложениям. Щелкните правой кнопкой мыши "Аналитика " и выберите "Отключить журнал".
Перейдите к Просмотр событий, приложениям и службам, Microsoft, Windows, приложениям-приложениям. Щелкните "Аналитика" правой кнопкой мыши и выберите "Очистить журнал".
Выберите параметр Clear, чтобы очистить события.
Известная проблема
Примечание.
В средстве просмотра событий есть известная проблема, связанная с ошибкой декодирования событий трассировки событий Windows. Может выводиться следующее сообщение об ошибке.
Не удается найти описание идентификатора> события <из исходного сервера приложений Microsoft-Windows-Application Server.Applications. Компонент, вызывающий это событие, не установлен на локальном компьютере или установка повреждена. Вы можете установить или исправить компонент на локальном компьютере.
При появлении этой ошибки нажмите кнопку «Обновить» в области действий. Теперь декодирование события должно выполняться правильно.