Supported OS Windows

インテグレーションバージョン3.3.0

概要

このインテグレーションは、Windows Event Log を監視し、それらを Datadog に転送します。

このインテグレーションを有効にすると、

  • システムとアプリケーションのイベントを Datadog で追跡できます。
  • システムとアプリケーションのイベントを他のアプリケーションと関連付けることができます。

詳細については、Windows のイベントログのドキュメントを参照してください。

計画と使用

インフラストラクチャーリスト

Windows Event Log チェックは Datadog Agent パッケージに含まれています。追加のインストールは必要ありません。

ブラウザトラブルシューティング

Windows Event Log の収集方法は、以下のいずれか、または両方があります。

どちらの方法も Agent の構成ディレクトリのルートにある conf.d/ フォルダーの win32_event_log.d/conf.yaml で構成されます。使用可能なすべての構成オプションの詳細については、サンプル win32_event_log.d/conf.yaml を参照してください。

Windows Event チャンネルをリストアップ

まず、監視したい Windows Event Log チャンネルを特定します。

収集方法によって、チャンネル名は以下の構成パラメーターに使用することができます。

  • Datadog ログ: channel_path
  • Datadog イベント: path
  • Datadog イベント (レガシー): log_file
PowerShell

チャンネルの一覧を表示するには、PowerShell で以下のコマンドを実行します。

Get-WinEvent -ListLog *

最もアクティブなチャンネルを表示するには、PowerShell で以下のコマンドを実行します。

Get-WinEvent -ListLog * | sort RecordCount -Descending

このコマンドは、チャンネルを LogMode MaximumSizeInBytes RecordCount LogName の形式で表示します。

応答例

LogMode  MaximumSizeInBytes RecordCount LogName 
Circular          134217728      249896 Security
Circular            5242880        2932 <CHANNEL_2>

LogName 列の値は、チャンネルの名前です。上の例では、チャンネル名は Security です。

Windows Event Viewer

Windows Event Viewer で Event Log のチャンネル名を見つけるには、Event Log Properties ウィンドウを開き、Full Name フィールドを参照します。次の例では、チャンネル名は Microsoft-Windows-Windows Defender/Operational です。

Windows Event Log

収集データ

Agent バージョン 6.0 以降で利用可能

Datadog Agent では、ログ収集はデフォルトで無効になっています。Windows Event Log を Datadog ログとして収集するには、datadog.yaml ファイルで logs_enabled: true を設定してログ収集を有効化します。

Windows Event Log を Datadog ログとして収集するには、win32_event_log.d/conf.yaml コンフィギュレーションファイルの logs: セクションの下にチャンネルを設定します。この例では、Security<CHANNEL_2> チャンネルのエントリーを示しています。

logs:
  - type: windows_event
    channel_path: Security
    source: windows.events
    service: Windows

  - type: windows_event
    channel_path: "<CHANNEL_2>"
    source: windows.events
    service: myservice

対応する source パラメーターに windows.events を設定すると、インテグレーション自動処理パイプラインの恩恵を受けることができます。

Event Log API を使ったイベント収集 (推奨)

Datadog Agent は、Event Log API を用いて Windows イベントログを Datadog イベントとして収集するよう構成できます。Datadog は、下記の従来方法よりもパフォーマンスが優れているため、Event Log API の使用を推奨しています。注: 各方法には、チャンネルとフィルターのための独自の構成構文があります。詳細については、 イベントのフィルタリングを参照してください。

Windows Event Log を Datadog イベントとして収集するには、win32_event_log.d/conf.yaml コンフィギュレーションファイルの instances: セクションでチャンネルを設定します。


各インスタンスで legacy_mode: false を設定します。legacy_mode: false を設定すると、path\win32_event_log.d\conf.yaml ファイルに設定する必要があります。


この例では、Security<CHANNEL_2> チャンネルのエントリーを示します。

init_config:
instances:
  - # Event Log API 
    path: Security
    legacy_mode: false
    filters: {}

  - path: "<CHANNEL_2>" 
    legacy_mode: false
    filters: {}

Agent バージョン 7.49 以降では、共有された init_config セクションで legacy_mode を設定できるようになりました。これにより、すべてのインスタンスのデフォルトが設定され、インスタンスごとに legacy_mode を設定する必要がなくなりました。しかし、このオプションはインスタンスごとに設定することもできます。

init_config:
    legacy_mode: false
instances:
  - # Event Log API
    path: Security
    filters: {}

  - path: "<CHANNEL_2>"
    filters: {}

レガシーモードを使用したイベント収集 (非推奨)

従来の方法では、WMI (Windows Management Instrumentation) を使用していましたが、Agent バージョン 7.20 で非推奨になりました。

Windows Event Log を Datadog イベントとして収集するには、win32_event_log.d/conf.yaml コンフィギュレーションファイルの instances: セクションでチャンネルを設定します。


レガシーモードを使用するには、legacy_modetrue に設定します。次に、フィルター source_nameevent_idmessage_filterslog_filetype のうち少なくとも 1 つを設定します。


この例では、Security<CHANNEL_2> チャンネルのエントリーを示します。

init_config:
instances:
  - # WMI (デフォルト)
    legacy_mode: true
    log_file:
      - Security

  - legacy_mode: true
    log_file:
      - "<CHANNEL_2>"

詳しくは、イベントログファイルを Win32_NTLogEvent WMI クラスに追加するを参照してください。

<CHANNEL_2> パラメーターに、イベントを収集したい Windows チャンネル名を入力します。

最後に、Agent を再起動します。

: Security ログチャンネルの場合は、Datadog Agent ユーザーを Event Log Readers ユーザーグループに追加してください。

イベントの絞り込み

イベントログに 1 つ以上のフィルターを構成します。フィルターを使用すると、Datadog に取り込むログイベントを選択できます。

イベントログのフィルターには、 log_processing_rules 正規表現オプションと同様に query を使用することができます。Datadog では、Windows Event Log の生成速度が速く、CPU とメモリの使用量が log_processing_rules フィルターよりも少ない query オプションの使用を推奨しています。log_processing_rules フィルターを使用すると、Agent は各イベントを処理し、正規表現で除外されてもフォーマットするように強制されます。query オプションを使用すると、これらのイベントは Agent に報告されません。

query オプションを使用すると、XPATH または構造化 XML クエリでイベントをフィルターすることができます。query オプションは log_processing_rules によって処理されるイベントの数を減らし、パフォーマンスを向上させることができます。XPath や XML クエリの構文には式の制限があります。フィルターを追加するには、log_processing_rules フィルターを使用してください。

Datadog は、Event Viewer に表示されるイベントが Agent に収集させたいものと一致するまで、Event Viewer のフィルターエディタでクエリを作成してテストすることを推奨します。

Filter Current Log

次に、Agent 構成にクエリをコピーアンドペーストします。

  # Critical、Warning、Error イベントを収集します
  - type: windows_event
    channel_path: Application
    source: windows.events
    service: Windows       
    query: '*[System[(Level=1 or Level=2 or Level=3)]]'

  - type: windows_event
    channel_path: Application
    source: windows.events
    service: Windows       
    query: |
      <QueryList>
        <Query Id="0" Path="Application">
          <Select Path="Application">*[System[(Level=1 or Level=2 or Level=3)]]</Select>
        </Query>
      </QueryList>      

XML Query

query オプションに加えて、ログ処理ルールでイベントをさらにフィルターすることができます。

フィルターの例としては、以下のようなものがあります。

  - type: windows_event
    channel_path: Security
    source: windows.events
    service: Windows       
    log_processing_rules:
    - type: include_at_match
      name: relevant_security_events
      pattern: '"EventID":(?:{"value":)?"(1102|4624|4625|4634|4648|4728|4732|4735|4737|4740|4755|4756)"'

  - type: windows_event
    channel_path: Security
    source: windows.events
    service: Windows       
    log_processing_rules:
    - type: exclude_at_match
      name: relevant_security_events
      pattern: '"EventID":(?:{"value":)?"(1102|4624)"'

  - type: windows_event
    channel_path: System
    source: windows.events
    service: Windows       
    log_processing_rules:
    - type: include_at_match
      name: system_errors_and_warnings
      pattern: '"level":"((?i)warning|error)"'

  - type: windows_event
    channel_path: Application
    source: windows.events
    service: Windows       
    log_processing_rules:
    - type: include_at_match
      name: application_errors_and_warnings
      pattern: '"level":"((?i)warning|error)"'

以下は、特定の EventID から Windows イベントログを収集するための正規表現パターンの例です。

logs:
  - type: windows_event
    channel_path: Security
    source: windows.event
    service: Windows
    log_processing_rules:
      - type: include_at_match
        name: include_x01
        pattern: '"EventID":(?:{"value":)?"(101|201|301)"'

: このパターンはログの形式によって異なる場合があります。Agent stream-logs サブコマンドを使用すると、この形式を表示することができます。

ログをフィルタリングする例については、高度なログ収集のドキュメントを参照してください。

レガシーイベント

Agent バージョン 7.41 未満に適用されます

Legacy Provider EventID は、Windows Event Schema で見られるように、ログの形式を変更する Qualifiers 属性を持っています。これらのイベントは、Windows イベントビューアで見ることができる、次のような XML 形式を持っています。

<EventID Qualifiers="16384">3</EventID>

これらの EventID にマッチするように、以下の正規表現を使用する必要があります。

logs:
  - type: windows_event
    channel_path: Security
    source: windows.event
    service: Windows
    log_processing_rules:
      - type: include_at_match
        name: include_legacy_x01
        pattern: '"EventID":{"value":"(101|201|301)"'

Agent バージョン 7.41 以降では、EventID フィールドが正規化されます。このため、レガシーパターンから部分文字列 (?:{"value":)? が不要になりました。バージョン 7.41 以降では、以下のような短い正規表現パターンを使用することができます。

logs:
  - type: windows_event
    channel_path: Security
    source: windows.event
    service: Windows
    log_processing_rules:
      - type: include_at_match
        name: include_x01
        pattern: '"EventID":"(101|201|301)"'

Windows イベントビューア GUI を使用して、このインテグレーションを使用してキャプチャできるすべてのイベントログをリストします。

正確な値を決定するには、次の PowerShell コマンドを使用してフィルターを設定します。

Get-WmiObject -Class Win32_NTLogEvent

たとえば、Security ログファイルに記録された最新のイベントを表示するには、次のコマンドを使用します。

Get-WmiObject -Class Win32_NTLogEvent -Filter "LogFile='Security'" | select -First 1

コマンドの出力にリストされる値を win32_event_log.d/conf.yaml で設定して、同種のイベントをキャプチャできます。

Get-EventLog PowerShell コマンドまたは Windows イベントビューア GUI から提供される情報が、Get-WmiObject から提供される情報とは多少異なる場合があります。
設定したイベントがインテグレーションによってキャプチャされない場合は、Get-WmiObject を使用してフィルターの値をダブルチェックしてください。

Event Log API を使ったイベントのフィルタリング (推奨)

Event Log API を使用する構成オプションには、以下のフィルターがあります。

  • path: ApplicationSystemSetupSecurity
  • type: CriticalErrorWarningInformationSuccess AuditFailure Audit
  • source: 使用可能な任意のソース名
  • id: event_id: Windows EventLog ID

利用可能なすべてのフィルターオプションについては、サンプル win32_event_log.d/conf.yaml を参照してください。

このフィルター例では、Event Log API の方法を使用しています。

instances:
  - legacy_mode: false
    path: System
    filters:
      source:
      - Microsoft-Windows-Ntfs
      - Service Control Manager
      type:
      - Error
      - Warning
      - Information
      - Success Audit
      - Failure Audit
      id:
      - 7036

query オプションを使用して、XPATH または構造化 XML クエリでイベントをフィルターすることができます。Datadog は、Event Viewer に表示されるイベントが Datadog Agent に収集させたいものと一致するまで、Event Viewer のフィルターエディタでクエリを作成することを推奨します。filters オプションは query オプションを使用すると無視されます。

init_config:
instances:
  # Critical、Warning、Error イベントを収集します
  - path: Application
    legacy_mode: false
    query: '*[System[(Level=1 or Level=2 or Level=3)]]'

  - path: Application
    legacy_mode: false
    query: |
      <QueryList>
        <Query Id="0" Path="Application">
          <Select Path="Application">*[System[(Level=1 or Level=2 or Level=3)]]</Select>
        </Query>
      </QueryList>      

レガシーモードを使用したイベントのフィルタリング (非推奨)

レガシーモードを使用する構成オプションには、以下のフィルターがあります。

  • log_file: ApplicationSystemSetupSecurity
  • type: CriticalErrorWarningInformationAudit SuccessAudit Failure
  • source_name: 使用可能な任意のソース名
  • event_id: Windows EventLog ID

このフィルター例では、レガシーモードの方法を使用しています。

instances:
  # Legacy
  # The following captures errors and warnings from SQL Server which
  # puts all events under the MSSQLSERVER source and tag them with #sqlserver.
  - tags:
      - sqlserver
    type:
      - Warning
      - Error
    log_file:
      - Application
    source_name:
      - MSSQLSERVER

  # This instance captures all system errors and tags them with #system.
  - tags:
      - system
    type:
      - Error
    log_file:
      - System

従来の方法は query オプションをサポートしていません。Event Log API の方法 (legacy_mode: false を設定) と Logs Tailer だけが query オプションをサポートしています。

フィルターの設定が終わったら、Agent Manager を使用して Agent の再起動を行います (またはサービスを再起動します)。

検証

Datadog Agent Manager の情報ページを確認するか、Agent の status サブコマンドを実行し、Logs Agent セクションで win32_event_log を探します。

以下のようなセクションが表示されるはずです。

Logs Agent
==========

  [...]

  win32_event_log
  ---------------
    - Type: windows_event
      ChannelPath: System
      Status: OK

Datadog Agent Manager の情報ページを確認するか、Agent の status サブコマンドを実行し、Checks セクションで win32_event_log を探します。

以下のようなセクションが表示されるはずです。

Checks
======

  [...]

  win32_event_log
  ---------------
      - instance #0 [OK]
      - Collected 0 metrics, 2 events & 1 service check

リアルユーザーモニタリング

データセキュリティ

Windows Event Log チェックには、メトリクスは含まれません。

ヘルプ

すべての Windows イベントが Datadog に転送されます。

ヘルプ

Windows Event Log チェックには、サービスのチェック機能は含まれません。

ヘルプ

ヘルプが必要ですか?Datadog サポートAgent Flare でお問い合わせください。

ログ処理ルールが機能しない

ログを除外するためにログ処理ルールを使用している場合、生のログが構成した正規表現 (regex) パターンに一致することを確認してください。以下の構成では、ログレベルは warning または error のいずれかでなければなりません。それ以外の値は除外されます。

    - type: windows_event
      channel_path: System
      source: windows.events
      service: Windows       
      log_processing_rules:
      - type: include_at_match
        name: system_errors_and_warnings
        pattern: '"level":"((?i)warning|error)"'

ログ処理ルールをトラブルシューティングするには

  1. log_processing_rules スタンザを削除するかコメントアウトします。
  2. Agent を再起動します。
  3. キャッチしようとしている値を含むテストログを送信します。ログが Datadog に表示される場合は、正規表現に問題がある可能性があります。正規表現とログファイルを比較して、正しいフレーズをキャプチャしていることを確認してください。

その他の参考資料

お役に立つドキュメント、リンクや記事: