2017-09-02 10 views
0

単純なETWと特定のETWプロバイダを監視できるようにするEventFlowの例を設定しようとしています。この場合、Service Control Manager 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イベントをリッスンしたい場合は、あなたが聞く必要がありますプロバイダマイクロソフトWindowsサービス。ここで

が、私はそれが働いていることを確認するために私の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プロバイダーのリストにプロバイダー名を追加して適用します。これで、ビューアーとコンソールアプリケーションの両方で同じイベントを見ることができるはずです。

+0

最後に、これを試してみました。魅力的に働いていました。 Diagnostic Eventsビューアをサニティチェックと呼ぶことは本当に役に立ちました。 –

関連する問題