Azure Monitor エージェントを使用して Windows イベントを収集する

Windows イベントは、データ収集ルール (DCR) で使用されるデータ ソースの 1 つです。 DCR の作成の詳細については、「Azure Monitor エージェントを使用してデータを収集する」を参照してください。 この記事では、Windows イベントのデータ ソースの種類について詳しく説明します。

Windows イベント ログは、Azure Monitor Agent を使用する Windows マシンの最も一般的なデータ ソースの 1 つであり、Windows オペレーティング システムとその上で実行されているアプリケーションの正常性と情報の一般的なソースとなっています。 システムやアプリケーションなどの標準ログのイベントに加えて、監視が必要なアプリケーションによって作成されるカスタム ログも収集できます。

前提条件

Windows イベント データ ソースを構成する

DCR の [収集と配信] ステップで、[データ ソースの種類] ドロップダウンから [Windows イベント ログ] を選択します。 一連のログと重大度レベルから選択して収集します。

データ収集ルールの Windows イベント データ ソースの構成を示すスクリーンショット。

[カスタム] を選択して、XPath クエリを使用してイベントをフィルター処理します。 次に、[XPath] を指定して、特定の値を収集できます。

データ収集ルールの Windows イベント データ ソースのカスタム構成を示すスクリーンショット。

セキュリティ イベント

Azure Monitor エージェントでセキュリティ イベントを収集する方法として、以下の 2 つを使用できます。

  • システム ログとアプリケーション ログと同様に、DCR のセキュリティ イベント ログを選択します。 これらのイベントは、他のイベントと共に Log Analytics ワークスペースの イベント テーブルに送信されます。
  • Azure Monitor エージェントを使用してイベントを収集するワークスペースで Microsoft Sentinel を有効にします。 セキュリティ イベントは、SecurityEvent に送信されます。

XPath クエリを使用してイベントをフィルター処理する

Log Analytics ワークスペースに収集されるすべてのデータに対して課金されます。 そのため、必要なイベント データのみを収集する必要があります。 Azure portal の基本的な構成では、イベントをフィルター処理する機能が制限されています。 さらにフィルターを指定するには、カスタム構成を使用して、不要なイベントを除外する XPath を指定します。

XPath エントリは、LogName!XPathQuery の形式で記述されます。 たとえば、イベント ID が 1035 のイベントのみをアプリケーション イベント ログから返す必要があるとします。 これらのイベントを対象とする XPathQuery*[System[EventID=1035]] になります。 アプリケーション イベント ログからイベントを取得する必要があるため、XPath は Application!*[System[EventID=1035]] です

ヒント

Azure Monitor のコストを削減するための戦略については、「コストの最適化と Azure Monitor」を参照してください。

Windows イベント ビューアーから XPath クエリを抽出する

Windows では、次のスクリーンショットで示すように、イベント ビューアーを使用して XPath クエリを抽出できます。

XPath クエリを [データ ソースの追加] 画面のフィールドに貼り付ける場合 (手順 5 で表示)、ログの種類のカテゴリの後に '!' を追加する必要があります。

Windows イベント ビューアーで XPath クエリを作成するための手順を示すスクリーンショット。

ヒント

FilterXPath パラメーターを指定した PowerShell コマンドレット Get-WinEvent を使用し、最初にローカルで、つまり、自分のコンピューターで XPath クエリの有効性をテストできます。 詳細については、「Windows エージェントベースの接続」の手順に記載されているヒントを参照してください。 Get-WinEvent PowerShell コマンドレットでは、最大 23 個の式がサポートされています。 Azure Monitor のデータ収集ルールでは、最大 20 個がサポートされます。 次のスクリプトは、一例を示しています。

$XPath = '*[System[EventID=1035]]'
Get-WinEvent -LogName 'Application' -FilterXPath $XPath
  • 上記のコマンドレットでは、-LogName パラメーターの値は、感嘆符 (!) までの XPath クエリの最初の部分です。 XPath クエリの残りの部分は $XPath パラメーターに入ります。
  • スクリプトがイベントを返す場合、クエリは有効です。
  • [No events were found that match the specified selection criteria.](指定した選択条件に一致するイベントは見つかりませんでした。) というメッセージが表示された場合は、クエリはおそらく有効ですが、一致するイベントがローカル コンピューターにありません。
  • [The specified query is invalid](指定したクエリは無効です) というメッセージが表示された場合は、クエリ構文が無効です。

カスタム XPath を使用してイベントをフィルター処理する例:

説明 XPath
イベント ID = 4648 のシステム イベントのみを収集する System!*[System[EventID=4648]]
イベント ID = 4648 で、プロセス名が consent.exe であるセキュリティ ログ イベントを収集する Security!*[System[(EventID=4648)]] and *[EventData[Data[@Name='ProcessName']='C:\Windows\System32\consent.exe']]
イベント ID = 6 (ドライバーの読み込み) を除くすべての重大、エラー、警告、および情報のイベントをシステム イベント ログから収集する System!*[System[(Level=1 or Level=2 or Level=3) and (EventID != 6)]]
イベント ID 4624 (成功したログオン) を除くすべての成功および失敗のセキュリティ イベントを収集する Security!*[System[(band(Keywords,13510798882111488)) and (EventID != 4624)]]

注意

Windows イベント ログでサポートされている XPath の制限事項の一覧については、「XPath 1.0 の制限事項」を参照してください。 たとえば、クエリ内で "position"、"Band"、"timediff" の関数を使用できますが、"starts-with" や "contains" などのその他の関数は現在サポートされていません。

Destinations

Windows イベント データは次の場所に送信できます。

宛先 テーブル / 名前空間
Log Analytics ワークスペース イベント

データ収集ルールにおける Azure Monitor ログの宛先の構成を示すスクリーンショット。

次のステップ