知識マップ: Windowsイベントログ・ETW入門 ── 業務アプリのログをOS標準の仕組みに乗せる

記事「Windowsイベントログ・ETW入門 ── 業務アプリのログをOS標準の仕組みに乗せる」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

業務アプリのログは、開発者が詳細を追うファイルログ、運用担当者やOS標準ツールが異常に気づくためのWindowsイベントログ、性能調査や不具合解析のために購読者がいるときだけ記録されるETWという役割分担で使い分ける。Windowsイベントログへの書き込みは事前に登録されたイベントソースを前提とし、その登録には管理者権限が要る一方、登録済みソースへの書き込みは標準ユーザーでも行える。.NETのETW計装はEventSourceクラスで独自プロバイダーを定義し、dotnet-traceはETWそのものではなくクロスプラットフォームなEventPipe経由でこれを収集する。ILoggerを使えば、同じログ呼び出しをAddEventLogでイベントログへ、ファイルシンクへ、EventSourceLoggerProvider経由でETWへとまとめて振り分けられる。

Windowsイベントログ・ETW入門の知識マップファイルログ・イベントログ・ETWが役割分担の関係にあること、イベントログの利用がイベントソースの登録を前提とすること、ETWがEventSourceとEventPipe・dotnet-traceを介して収集されること、ILoggerが複数のプロバイダーへ同じログ呼び出しを振り分ける仕組みを示す図前提とする前提とする利用する前提とする利用する利用する利用する利用するで確認できるで確認できるで確認できる利用する利用する利用する前提とする前提とする両立しない利用するWindowsイベントログETW(Event Tracing for Windows)イベントソース管理者権限ILogger + AddEventLogプロバイダー.NETのILogger構造化ログのメッセージテンプレートファイルログイベントビューアーwevtutilGet-WinEvent.NETのEventSourceクラスdotnet-traceEventPipe.NET(Core以降).NET Framework

概念間の関係(全18件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

Windowsイベントログ
Application・System・Securityなどのログにアプリケーションやサービスの事象を記録し、イベントビューアーや監視ツールから運用担当者が確認できるWindows標準の記録機構。
ETW(Event Tracing for Windows)
OS全体を貫く、カーネルからアプリまで同じ時間軸で記録できるWindows専用のトレース基盤。カーネル全体を対象にするような特権的なセッションの開始・停止には管理者権限が要るが、トレースACLの委譲やPerformance Log Usersへの所属、ユーザーモードのプライベートセッションでは管理者権限なしでも扱える。
イベントソース
Windowsイベントログへ書き込む際にアプリケーションを識別する登録済みの名前で、コンピューター上で一意である必要がある。
ILogger + AddEventLogプロバイダー
Microsoft.Extensions.Logging.EventLogパッケージが提供する、ILoggerのログ出力をWindowsイベントログへ書き込むロギングプロバイダー。
.NETのILogger
メッセージテンプレートで構造化ログを書くための.NETのロギング抽象化で、複数のILoggerProviderへ同じログ呼び出しを振り分けられる。
dotnet-trace
EventPipeを使い、CPUサンプリングやGC・メモリ割り当てなどのイベントを時系列で収集する.NETのトレース収集ツール。
EventPipe
.NETランタイムに組み込まれた、管理者権限が不要で全OSで動くトレース機構。見えるのはマネージドコードとランタイムの範囲に限られ、カーネルイベントやネイティブスタックは取れない。
.NET(Core以降)
.NET Frameworkの後継となる、クロスプラットフォーム対応の.NETランタイム(.NET 5以降)。
.NET Framework
Windowsのコンポーネントとして扱われ、インストールされているOSのライフサイクルに沿ってサポートされるランタイム。System.Messagingの対象範囲。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。