使用EventFlow监视本地机器上的ETW事件

我正在尝试设置一个简单的ETW和EventFlow示例,以允许监视特定的ETW提供程序。 在这种情况下,服务控制管理器ETW提供程序将监视何时发出服务启动和停止消息。

对于跟踪和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是否设计用于本地机器上的这种情况? 如果是这样,我在配置或代码中缺少什么?

控制台进程以管理员身份运行,并且该帐户可以访问Performance Log Users和Performance Log Monitors组


如果您想从服务控制管理器监听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事件。 启动查看器,单击要配置的cog,在ETW提供程序列表中添加提供程序名称,然后应用。 您现在应该能够在查看器和控制台应用程序中看到相同的事件。

链接地址: http://www.djcxy.com/p/90869.html

上一篇: Using EventFlow to monitor ETW event on local machine

下一篇: Can I use either EventLog or EventSource for both logging and tracing?