Использование EventFlow для мониторинга событий ETW на локальном компьютере
Я пытаюсь настроить простой пример ETW и EventFlow, который позволяет отслеживать конкретных поставщиков ETW. В этом случае провайдер Service Control Manager ETW отслеживает, когда выдаются сообщения Service Start и Stop.
У меня есть следующая конфигурация ввода для трассировки и ETW.
"inputs": [
{
"type": "Trace",
"traceLevel": "Warning"
},
{
"type": "ETW",
"providers": [
{
"providerName": "Service Control Manager"
}
]
}]
У меня есть следующий код, который запускает мониторинг с помощью EventFlow.
static void Main(string[] args)
{
using (var pipeline = DiagnosticPipelineFactory.CreatePipeline("eventFlowConfig.json"))
{
System.Diagnostics.Trace.TraceWarning("EventFlow is working!");
Console.ReadLine();
}
}
Событие трассировки появляется в консоли, но когда я запускаю и останавливаю службу, события ETW не появляются.
EventFlow предназначен для этого сценария на локальном компьютере? Если так, что мне не хватает в моей конфигурации или коде?
Процесс консоли выполняется от имени администратора, и учетная запись имеет доступ к группе "Пользователи журнала производительности" и "Мониторы журнала производительности".
1 ответ
Если вы хотите прослушивать события ETW из диспетчера управления службами, вам необходимо прослушать поставщика с именем Microsoft-Windows-Services.
Вот что у меня есть в моем eventFlowConfig.json
{
"inputs": [
{
"type": "ETW",
"providers": [
{ "providerName": "Microsoft-Windows-Services" }
]
}
],
"filters": [],
"outputs": [
{ "type": "StdOutput" }
],
"schemaVersion": "2016-08-11",
"extensions": []
}
Чтобы проверить, что это работает, я остановился и запустил службы SQL Server. События выводились в консоли, как и ожидалось.
В качестве дополнительной проверки работоспособности вы можете использовать средство просмотра событий диагностики Visual Studio для прослушивания событий ETW. Запустите программу просмотра, щелкните значок, чтобы настроить его, добавьте имя поставщика в список поставщиков ETW и примените. Теперь вы должны видеть одинаковые события как в программе просмотра, так и в консольном приложении.