Supported OS Windows

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

概要

Win32 Event Log チェックは、Windows のイベントログを監視して 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

イベント収集

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

Datadog Agent は、Windows Event Log を Datadog イベントとして収集するために、2 つの方法で構成することができます。それぞれの方法には、チャンネルとフィルターの構成構文があります。詳しくは、イベントのフィルタリングを参照してください。

  • 最新の方法は、Event Log API を使用します。Datadog では、以下のレガシーな方法よりもパフォーマンスが良いため、Event Log API を使用することを推奨しています。


    Event Log API の収集方法を使用するには、各インスタンスで 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: {}
    
  • レガシーな方法は WMI を使用し、インスタンスのデフォルトモードとなります。


    legacy_mode が設定されていないか true に設定されている場合、source_nameevent_idmessage_filterslog_filetype のフィルターのうち少なくとも 1 つが設定されている必要があります。


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

    init_config:
    instances:
      - # WMI (default)
        legacy_mode: true
        log_file:
          - Security
    
      - legacy_mode: true
        log_file:
          - "<CHANNEL_2>"
    

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

ログの収集

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 を設定すると、インテグレーション自動処理パイプラインの恩恵を受けることができます。

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

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

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

イベントの絞り込み

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

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 を使用してフィルターの値をダブルチェックしてください。

Datadog Agent は、Windows Event Log を Datadog イベントとして収集するために、2 つの方法で構成することができます。それぞれの方法には、フィルターの構成構文があります。各モードで使用可能なフィルターオプションについては、サンプル win32_event_log.d/conf.yaml を参照してください。

Datadog では、フィルターに最新の方法を使用することを推奨しています。

  • 最新の方法には、以下のフィルターが含まれています。

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

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

    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
  • レガシーメソッドは query オプションをサポートしていません。最新のメソッド (legacy_mode: false を設定) と Logs Tailer だけが query オプションをサポートしています。

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

    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
    

イベントログのフィルターには、 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)"'

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

検証

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

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

Checks
======

  [...]

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

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

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

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

  [...]

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

収集データ

メトリクス

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

イベント

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

サービスのチェック

Win32 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 に表示される場合は、正規表現に問題がある可能性があります。正規表現とログファイルを比較して、正しいフレーズをキャプチャしていることを確認してください。

その他の参考資料

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