2017-09-02 31 views
0

我正在嘗試設置一個簡單的ETW和EventFlow示例,該示例允許監視特定的ETW提供程序。在這種情況下,服務控制管理器ETW提供程序將監視何時發出服務啓動和停止消息。使用EventFlow監視本地機器上的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?如果是這樣,我在配置或代碼中缺少什麼?

控制檯進程正在運行,管理員和帳戶訪問性能日誌用戶和性能日誌監控組

回答

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事件。啓動查看器,單擊要配置的cog,在ETW提供程序列表中添加提供程序名稱,然後應用。您現在應該能夠在查看器和控制檯應用程序中看到相同的事件。

+0

終於到處去嘗試這個,像一個魅力工作。提及診斷事件查看器作爲一個完整的檢查是非常有用的。 –