自動化SaaSクラウド

Datadog Walk | ログを収集しよう(Windows)

Datadogを散歩するように、少しずつ理解を深めていくブログシリーズ「Datadog Walk」
操作画面や設定例を交えながら、実務で使える知識を解説していきます。

今回は、Windowsイベントログの収集をテーマに紹介。
システム障害やアプリケーションエラーのトラブルシュートに欠かせないイベントログを Datadog に取り込む手順を、設定例を交えて解説しています。

はじめに

前回は Datadog Agent のインストール後に押さえておきたい基本設定についてご紹介しました。
これでCPU使用率などの基本的なシステムメトリクスの収集ができている状態になったかと思います。
次は、実際に障害解析やトラブルシュートに役立つ「ログ収集」に進んでいきます。

今回は、Windows 環境におけるイベントログ収集の設定方法 を取り上げます。
アプリケーションやシステムのエラーはもちろん、セキュリティ監査やサービス稼働状況の確認にも有効な情報源です。正しく収集・可視化できるようにしておくことで、インシデント発生時の原因特定スピードが大きく変わってきます。

Datadog Walk シリーズの一歩として、ぜひ一緒に「ログ収集の基盤作り」を進めていきましょう。

1.Windows Event Log インテグレーションのインストール

Windows 環境でのイベントログ収集を始めるに際して、まず Windows Event Log インテグレーション を導入します。
このインテグレーションを有効化すると、イベントログ向けのログパイプライン(ログをより見やすくするための処理)、ダッシュボードやモニターを活用できるようになります。
インストール自体は Datadog Platform 側に同梱されているコンポーネントを有効化するだけなので、追加のソフトウェアは不要です。ここからは、その具体的な設定手順を確認していきましょう。

  1. 管理UIの左側メニュー欄より、Integrationsにマウスカーソルを合わせ、Integrations をクリックします。

  2. 「Windows Event」で検索します。Windows Event Log枠にマウスカーソルを合わせ、「+Install」をクリック >「Install Integration」をクリックします。※即座にInstallされます

  3. 「INSTALLED]の緑表示になります。これでインテグレーションのインストールは完了です。

2.イベントログ収集設定

イベントログの収集は、Datadog Agent 側の設定ファイルに収集設定を記載することで実現します。
このファイルで、どのログチャネル(Application / System / Security など)を対象とするかを定義することができます。

  1. Datadog Agent の基本設定ファイル(C:¥ProgramData¥Datadog¥datadog.yaml)をメモ帳等のテキストエディタで開きます
    ※ Agentの管理UI(Datadog Agent Manager)からも基本設定ファイルを確認・編集することができます

  2. logs_enabled: エントリを true に指定します。 ※Defaultはfalse
  3. datadog.yamlファイルを上書き保存します。
  4. エクスプローラで 「C:¥ProgramData¥Datadog¥conf.d¥win32_event_log.d」 フォルダを開きます。
  5. conf.yaml.example ファイルをコピーし、conf.yaml ファイルを作成します。
  6. conf.yaml ファイルをメモ帳等のテキストエディタで開きます。
  7. ## Logs Section より上部の記載行をすべて削除します。
  8. 収集するログチャネルとタグ情報を記載します。


    ※ win32_event_log.d¥conf.yaml 設定内容の詳細

    Key

    Value

    説明

    type

    windows_event

    windows_event に指定します。(変更不可)
    ※windowsとeventの間はアンダーバーです。

    channel_path

    “Application”
    “Security”
    “System”

    収集するイベントログのチャネルを指定します。
    例として Application / Security / System の3つを指定しています。

    source

    windows.events

    windows.events に指定します。
    ※windowsとeventsの間はピリオドです。

    service

    windows

    ログ出力するサービス種別を示すタグ指定になります。
    例として windows というタグを指定しています。

  9. conf.yamlファイルを上書き保存します。
  10. Agent管理UI(Datadog Agent Manager)を開き、「Restart Agent」 にてAgentを再起動します  ※設定を反映させます
  11. Datadog Platform側 管理UIの左側メニューより「Logs」をクリックします。
  12. イベントログ収集設定を行ったホストからイベントログが収集されていることを確認します。

3.ログパイプラインの調整

Windows Event Log インテグレーションを有効化すると、自動的にWindowsイベントログ向けのログパイプラインが設定・有効化されます。ログパイプラインとは、収集したログを分析しやすいように構造化(≒属性に分解)したり、収集したログの内容から新しいメタ情報(属性値)を付与したりする設定のことを指します。

こちらが、自動で有効化されるWindowsイベントログ向けのパイプラインです。
※ 管理UIの Logs > Pipelines で確認することができます。

具体的な内容はこちらです。
細かく把握する必要はありませんが、ログを分析しやすくするために様々な工夫ができるような作りになっています。

No. 処理概要
ログタイムスタンプをDatadog UI上のタイムスタンプに採用
イベントIDを示す属性をevt.id 属性にリマップ
IPアドレスを示す属性をnetwork.client.ip 属性にリマップ
network.client.ip属性値から地理情報を判定し、network.client.geoip属性へ格納
プロセス名を示す属性をprocess.executable.path 属性にリマップ
ログオンIDを示す属性をusr.session.id 属性にリマップ
ユーザー名を示す属性をusr.id 属性にリマップ
ログインタイプを示す属性(数値)からLogonDescription 属性に各ログオンタイプの説明(文字列)をマップ
イベントIDごとにログタイトル(概要文)をマップ

上記が自動適用されるのですが、ここでご紹介したいのは日本語版のWindows Server OS向けのカスタマイズです。

収集したイベントログの「level」属性(info/warning/error/emerg)に応じてDatadog管理UI上のstatusがマッピングされますが、日本語版OSのイベントログでは「level」属性が日本語(情報/警告/エラー/重大)となるため、Defaultの設定のままではマッピングルールに当てはまらず全て info レベルとなってしまいます。

その為、日本語版OSの属性値のステータスマッピングルールを追加することで対応します。

  1. Datadog管理UIから、Logs > Log Configuration > Pipelines を選択します。
  2. 既存のログパイプラインから「Windows Events」のクローンを作成します。
  3. クローンを作成すると、既存の「Windows Events」パイプラインは無効化され、新たに編集可能な「Windows Events」パイプラインが既存「Windows Events」の次の順番に作成されます。

  4. 最後尾(10番目)に「Add Processor」でカテゴリープロセッサを追加します。

  5. 最後尾(11番目)に「Add Processor」でステータスリマッパーを追加します。
  6. 上記を実施後にLog Explorer でログの属性を確認すると、新たに「level-en」属性がカテゴリプロセッサーで指定した文字列で追加されていることがわかります。

    この「level-en」属性値をDatadog UI側のステータス表示の判定に使うというルールを手順5で設定しています。
    尚、Datadog UI側のステータス判定は、次のルールに基づいて行われます。

    status mapping rule
    emergency emerg または  f で始まる文字列
    alert a で始まる文字列
    critical c で始まる文字列
    error e で始まる文字列(ただしemergが含まれる文字列は除外)
    warning w で始まる文字列
    notice n で始まる文字列
    info i で始まる文字列 または 他のルールに当てはまらない文字列
    debug d, trace, verbose で始まる文字列
    ok o, s で始まる文字列 または OK, Success が含まれる文字列
  7. イベントレベルとDatadog管理UIのステータス表示が正しくマッピングされていることを確認します。

    ※テストコマンド
     CMD> eventcreate /l application /t error /id 999 /d “エラーイベントのテストです”

     CMD> eventcreate /l application /t warning /id 999 /d “警告イベントのテストです”
     CMD> eventcreate /l application /t information /id 999 /d “情報イベントのテストです”
     (重大レベルはコマンドでのテスト不可)

4.ダッシュボードの調整

Windows Event Log インテグレーションを有効化すると「Windows Event Log Overview」ダッシュボードが利用可能になります。
収集したイベントログがレベル別・ソース別・イベントID別に可視化され、エラーや警告の傾向を一目で把握でき、障害解析や傾向把握に役立ちます。

ここで1つTipsがあります。
プリセットで準備されている上記のダッシュボードのままですと、serviceというテンプレート変数がダッシュボードに設定されていないのにもかかわらずウィジェットに変数が定義されているものがあり、System / Application チャネルの情報がうまく表示されません。
ウィジェットに定義されているテンプレート変数($service)を削除する、もしくは、ダッシュボードにテンプレート変数を追加するときれいに表示されるようになります。

ここでは後者の方法を紹介します。

  1. プリセットのダッシュボード「Windows Event Log Overview」のクローンを作成します。
  2. serviceというテンプレート変数を追加します。

まとめ

今回は、Windows 環境におけるイベントログ収集の設定方法と関連するいくつかの技術Tipsをご紹介しました。エラーや警告イベントを Datadog に集約することで、障害解析や運用時の初動対応をよりスムーズに進められるようになります。

次回は、監視の基本ともいえる モニター設定(死活監視) をテーマに取り上げます。
Datadog Walk シリーズでは引き続き、監視運用に役立つ実践的な設定方法を紹介していきますので、ぜひ一緒に歩みを進めていきましょう。

※ 当社の取り組み
Datadogを始めてみたい!という方は東京エレクトロンデバイスでDatadog製品の紹介から技術支援まで対応させて頂ければと思いますので、是非こちらからお問合せ頂ければと思います!

※ 注記
当ブログのコンテンツ・情報について、できる限り正確な情報を提供するように努めておりますが、正確性や安全性を保証するものではありません。情報が古くなっていることもございます。
当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

※ 本コンテンツに掲載されている会社名・製品・サービス名・ロゴは各社の商標または登録商標です。また、写真・ロゴマーク・その他の著作物に関する著作権はそれぞれの権利を有する各社に帰属します。

この記事に関連する製品・サービス

この記事に関連する記事