問題タブ [etw]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Win32Exception をスローする EventProvider コンストラクター 十分なストレージがありません
WCF サービスをある実稼働サーバーから別のサーバーに移動した後、構成が非常に似ていますが、Windows のイベント トレースを介したカスタム イベント ログは機能しなくなりましたが、1 つのアプリに対してのみ機能していました。
エラーは EventProvider クラスの ctor でスローされており、Win32 の「十分なストレージがありません」というエラーです。
WCF サービスは、呼び出し構成ごとの「同時実行モード複数、呼び出しごとのインスタンス コンテキスト モード」スレッドです。監視時に 60 のスレッドがプロセスに属していました。EventProvider ctor は呼び出しごとに呼び出されます。AppFabric でホストされる IIS/WAS です。
同じサーバー上の別のアプリは正常に動作しています。
これを診断する方法がわかりません。誰かが出発点を提案することさえできれば、私は感謝しています.
windows - ETW: 既存のプロバイダーを介してイベントを発行する
ネイティブ プラグインを使用するアプリケーションがあります。これらのプラグインには独自のバイナリ形式があります。各プラグインは、DLL をプロセスの空間にマッピングするのと同様の方法を使用して、実行時にロードされます。つまり、各プラグインには独自の, のようなImageBase
セクションがあり、従来の DLL と同じ方法で処理されます。唯一の違いは、プラグインのバイナリ形式 (ファイルではない) と、プラグインをプロセス空間にマップするローダー コードです。.text
.data
PE
このコマンドラインでトレースを実行すると、ETW が発生することがわかりました。
トレース キャプチャ中にプロセス環境を再構築するために使用できるイベントを発行します。つまり、「プロセスの追加」、「プロセスへのスレッドの追加」、「プロセスへの DLL モジュールの追加」などのイベントを発行し、そのようなツールxperfview
がシステム内のプロセスの状態の仮想環境を構築し、情報を構築できるようにします。現在のプロセスツリーのように。これらのイベントは、たとえば、トレース前またはトレース中に読み込まれる各 DLL に関する情報を提供するImageLoadイベントです。
もちろん、私のプラグインではこれらのImageLoad
イベントは生成されません。これは、技術的には DLL ではないためです (つまり、機能は同じですが、DLL と同じ機能によって読み込まれるわけではありません)。これが、 のようなツールがxperfview
プロセス空間での存在を認識しない理由です。
私がやりたいことは、プラグイン ローダー コードに独自の EventWrite を記述し、ImageLoad
必要な情報を含むこれらのイベントを発行してxperfview
、 および同様のツールがプラグインを通常の DLL として解釈できるようにすることです。ImageBase
、ProcessId
、ImageSize
などの必要な情報を入力します。
MSNT_SystemTrace
これを行うには、イベントの所有者であるイベント プロバイダーを登録しImageLoad
、次のような構造でイベントを構築する必要があることを理解しています。
そしてイベントを発行します。
問題は、このプロバイダーが既に存在するため、論理的なERROR_ACCESS_DENIED
別の を登録しようとしたときに得られることです。MSNT_SystemTrace
しかし、それは私が質問をすることを余儀なくさせます.私がやろうとしていることはETWでサポートされていますか?
c++ - ETW イベントをグローバル "アプリケーション" ログに送信する
Windows イベント ビューアーのグローバルな "アプリケーション" ログに警告とエラーが表示されるように、アプリを有効にしたいと考えています。ETW を起動して実行するのに役立つこちらの指示にうまく従いましたが、トレース プログラムを介してログ記録を明示的に有効にした場合にのみイベントが表示されます。さらに、グローバルではなく、生成された .etl ファイルにのみ表示されますログ。
ユーザーがイベント ビューアーを実行すると、アプリからのイベントが表示されるように、プログラムでイベントを登録してグローバル アプリケーション ログに書き込むにはどうすればよいですか? それは可能ですか?簡単に言えば、必要なフォトショッピングを減らして、下のスクリーンショットのようなものにしたいと考えています。
.net - PerfView にカスタム .Net 4.5 EventSource ETW プロバイダーからのイベントがない
ASP.NET WebApi アプリケーションで EventSource (WebApiEventSource) を作成しました (ITraceWriter 実装として):
EventSource のメソッドが実行時にエラーなしで呼び出されることを確認しました。
次に、PerfView を実行し、そのログで、プロバイダー (EventSource) を確認できることを確認しました。
解析仕様 *WebApi 有効化プロバイダー:*WebApi レベル:クリティカル キーワード:0x0 オプション:なし 値: Guid:fc7bbb67-1b01-557b-5e0e-c1c4e40b6a24
次に、フィルター「*WebApi」を使用して「collect」を実行し、アプリで何らかのアクションを実行して停止します。
しかし、etl ファイルには私のプロバイダーからのイベントはありません! セクション「イベント」には、プロバイダーの名前すら含まれていません。
私は何を取りこぼしたか?
更新: 理由が見つかりました。以下の回答を参照してください。
c# - カスタム ETW イベントは Azure ロールでどのように有効になりますか?
私のコンポーネントでは、EventSource
クラスから派生させて ETW イベントのソースをいくつか作成しました。
Windows Azure での診断の有効化に関する記事に従おうとしましたが、自分のソースからイベントをキャプチャするように Azure Diagnostics を構成する方法に関するガイダンスが見つかりません。
オプションがあることはわかっていますが、古い .NET トレースを介してイベントをルーティングしたくありません。これは展開時にしか構成できないためです。
Azure Diagnostics でイベントを取得する方法はありますか?
c# - c# メトロ ETW - 一部のイベントがログに記録されない
C#/XAML アプリケーションがあり、ETW を使用してイベントをフラット ファイルに記録します。
9/10 回、StorageFile が設定されておらず、イベントがログに記録されません。
コンストラクタ:
ファイルは常に作成されますが、9/10 回は書き込まれません。
参考までに、リスナーの設定方法を次に示します。
サンプルログ:
.net - CLR ETW イベントを表示する方法
特に CLR ETWイベントを表示するために使用できるツールがあるかどうか疑問に思っていました。つまり、一般的なグラフを使用してWPAの一般的なイベント セクションに表示されるのではなく、「適切な」グラフを表示します。
WPAで .etl トレース ファイル (たとえば、perfmonitor.exeまたは WPR で作成) のトレースを開くと、GUID とイベント ID (CLR イベントの場合) しか得られないので、これらをより便利に解決する方法があるかどうか疑問に思っていました。 WPA の名前、またはそのようなイベント トレースを表示できる別のツールがある場合。perfmonitor.exe は、JIT、GC、および CPU のみに焦点を当て、(私の知る限り) 他のイベントを無視するため、部分的にしか役に立ちません。
c# - ファイル モニター - c# または c++
exeのファイルアクセスを監視するファイルモニターを開発しています。そのexeを監視して、開いたり閉じたり、読み書きしたり、統計を収集したりするファイルを監視します。
私は ETW のまったくの初心者です (私の調査によると、これを行う他の方法はないようです)。
私はいくつかの C++ コードを実行できましたが、私のクライアントは ac# ソリューションを好むでしょう。C# にはファイル io を監視するための十分なサポートがありますか?
msdn のサンプルは c++/c 固有のものです。vance Morrison のブログを読みましたが、現時点では理解できず、「nt カーネル ログ セッション/ファイル io の監視」シナリオに適していないようです。
誰でも私に簡単なサンプルを提供したり、便利なリンクを教えてもらえますか? これに関する任意の入力を歓迎します。
wmi - etw イベント ソースの wmi wql クエリ
エラー ログに新しいエントリがあることを通知する WMI イベントにサブスクライブするにはどうすればよいですか? 問題のエラー ログは、ETW イベント ソースへの呼び出しの結果として生成されます。
次の WMI クエリに気付きました: SELECT * FROM Win32_NTLogEvent
これが機能するかどうか、または特定の ETW ベースのイベント ログのエントリを取得するにはクエリが広すぎるかどうかはわかりません。
どんな助けでも感謝します。
.net - Windows イベント プロバイダーの情報を取得する
Windows PowerShell を使用してイベント プロバイダーに関する情報を取得したいですか? System.Diagnostics.Eventing
PowerShell バージョン 4.0 を使用して Windows 8.1 を実行していますが、名前空間に Windows イベントに関する機能を提供する.NET クラスがいくつかあることに気付きました。
デフォルトのコンストラクターを呼び出してインスタンスを作成できますEventProvider
が、システムにインストールされているイベント プロバイダーに関する情報を取得することはできません。
システムにインストールされている Event Tracing for Windows (ETW) プロバイダーに関する詳細情報を取得し、Windows PowerShell を使用して Windows イベント ログと対話するにはどうすればよいですか?
ここで説明されlogman.exe query providers
ているように、コマンドを使用して ETW プロバイダー リストを取得し、Windows イベント ログを照会できることは既に認識していますが、これはあまり PowerShell フレンドリーではありません。