2018年12月3日月曜日

フリー版でできるリアルタイムログ監視 #5 - Windowsイベントログの監視

 Windowsイベントログもログサーバーで集中管理したい...Nagios Log Serverでは Windowsイベントログも収集することができます。もちろんフリー版でも可能です。
* 前回までのブログ記事はこちらからご参照ください。
*「フリー版でできるリアルタイムログ監視」連載は、今回の記事をもちまして終了となります。
 

Nagios Log ServerでのWindowsイベントログ収集

Nagios Log Serverには、Windowsイベントログを受信するためのインプット定義がデフォルトで構成されています。このデフォルトのインプット定義は、TCP 3515 ポートで json形式のメッセージを受信し、typeフィールドに eventlog というキーワードを設定するように構成されています。
つまり、イベントログを監視したい Windowsマシンが TCP 3515ポートで json形式のWindowsイベントログを Nagios Log Serverへ送信すれば、Nagios Log ServerでのWindowsイベントログ収集が開始します。

<注記>
  • ログ送信に使用するポート番号および type フィールドの値は自由に変更することができます。
  • メッセージの形式は必ずしも json形式である必要はありません。
    json形式でない場合は、codec => json の定義を削除するか、実際の形式に合わせて変更してください。json形式であればフィールドが自動的に分割されるため、フィールド分割のためにNagios Log Serverでフィルター(grokフィルターパターン)を定義する必要がありません。

まずはWindowsイベントログを監視したいマシンにリモートのログサーバー(この場合はNagios Log Server)へWindowsイベントログを送信することができるログ管理ツールをインストールします。

Windowsイベントログをリモートのログサーバーへ送信することができるログ管理ツールは世の中にたくさんありますが、Nagios Log Serverの開発元であるNagios Enterprises社のお勧めは、無償で使用できるオープンソースログ監視ツール NXLog Community Edition(以降「NXLog」と表記)です。

Nagios Log ServerのWeb GUIには、NXLogをセットアップするためのガイドが用意されています。このガイドに従って作業すれば、WindowsイベントログをNagios Log Serverへ送信することができます。

NXLogでのWindowsイベントログ送信

Nagios Log Serverの Web GUIで [構成] > [+ログソースの追加] を選択すると、様々なログソース(ログ送信元)の追加方法を紹介するガイドへのリンク画面が表示されます。

NXLogを使用してWindowsイベントログを監視したい場合は、[Windows] を選択します。

[NXLog CE] リンクをクリックして、NXLog CEのインストーラーをダウンロードします。

ダウンロードしたインストーラーをWindowsイベントログを監視したいマシンの任意の場所に置き、インストールを実行します。

NXLogのインストールは簡単です。
[I accept the terms in the License Agreement]チェックボックスにチェックをつけて[Install]ボタンをクリックします。
インストールが完了したら [Finish]ボタンをクリックします。
次に、NXLogの構成ファイル(nxlog.conf)を編集します。
NXLogの構成ファイルは以下の場所にあります:
  • 32bitマシンの場合: C:\Program Files\nxlog\conf\nxlog.conf
  • 64bitマシンの場合: C:\Program Files (x86)\nxlog\conf\nxlog.conf

Nagios Log Serverの [Windows]画面([構成] > [+ログソースの追加] > [Windows])の [NXLogでのWindowsイベントログの構成]セクションにある [すべて選択]ボタンをクリックして構成内容を全選択し、右クリックメニューから[コピー]を選択するか[Ctrl+C]を押してコピーします。
これをNXLogの構成ファイル(nxlog.conf)ファイルに貼り付けます(既存の定義を全選択するか事前に削除してから貼り付けてください)。

必要に応じて構成内容を編集します。
  • インストール先のWindowsマシンが 32bit OSの場合は、6,7行目の内容を以下に変更します。
    <変更前>
    #define ROOT C:\Program Files\nxlog
    define ROOT C:\Program Files (x86)\nxlog

    <変更後(32bit OSの場合のみ)>
    define ROOT C:\Program Files\nxlog
    #define ROOT C:\Program Files (x86)\nxlog

  • インストール先のWindowsマシンが Windows XP/2000/2003である場合は、44行目のWindows Vista/2008以降用の定義を無効化し、47行目のWindows XP/2000/2003用の定義を有効化します。
    <変更前>
    # Windows Event Log
    <Input eventlog>
    # Uncomment im_msvistalog for Windows Vista/2008 and later
        Module im_msvistalog

    # Uncomment im_mseventlog for Windows XP/2000/2003
      Module im_mseventlog
    </Input>

    <変更後(Windows XP/2000/2003の場合のみ)>
    # Windows Event Log
    <Input eventlog>
    # Uncomment im_msvistalog for Windows Vista/2008 and later
    # Module im_msvistalog

    # Uncomment im_mseventlog for Windows XP/2000/2003  
        Module im_mseventlog
    </Input>

  •  貼り付けたままの定義の場合、全てのイベントログが Nagios Log Serverに送信されます。特定のイベントログのみを Nagios Log Serverに送信したい場合は、設定を追加する必要があります。

    例えば、EventID が 4663、4656、4658の securityログのみを Nagios Log Serverへ送信したい場合は、eventlogインプット定義に赤字部分の設定を追加します。
    <Input eventlog>
    # Uncomment im_msvistalog for Windows Vista/2008 and later
        Module im_msvistalog
        Query <QueryList>¥
            <Query Id="0">¥
                <Select Path='Security'>*[System[(EventID='4663') ]]</Select>¥

                <Select Path='Security'>*[System[(EventID='4656') ]]</Select>¥ 
                <Select Path='Security'>*[System[(EventID='4658') ]]</Select>¥
            </Query>¥
        </QueryList>


    # Uncomment im_mseventlog for Windows XP/2000/2003
    #   Module im_mseventlog
    </Input>
    詳しくは、NXLogのマニュアルをお読みください。
  • 52,53行目で送信先(この場合は Nagios Log Server)の IPアドレスとポート番号が正しいことを確認します。
        Host <Nagios Log Serverの IPアドレス>
        Port 3515

  • 貼り付けたままの定義の場合、Windowsイベントログの他にNXLogの内部ログ(internal)とnxlog.logファイルの内容(file1)もNagios Log Serverへ送信されます。Nagios Log Serverへの送信が不要である場合は、63行目の internalまたは file1を削除してください。
    <Route 1>
        Path internal, file1, eventlog => out
    </Route>

編集が完了したらファイルを保存します。

nxlogサービスを開始します。
[サービス]画面で[nxlog]サービスを見つけて[開始]します。
[状態][実行中]に変わったことを確認します。
これでNagios Log Serverへのログ送信が開始されたはずです。

Nagios Log Serverでログの受信を確認します。
[Windows]画面([構成] > [+ログソースの追加] > [Windows])の一番下にある [受信ログの確認]セクションの [IP アドレス]フィールドにNXLogをインストールしたマシンの IPアドレスを入力し、[確認]ボタンをクリックします。

ログ受信が開始していれば、[確認されました]メッセージの後に、受信したログの数と IPアドレスが表示されます。

ダッシュボードでも確認してみます。
検索ボックスに [host:"<NXLogをインストールしたマシンの IPアドレス>"]を入力して[Enter]キーを押すと、この IPアドレスから受信したログのみが表示されます。

画面下部の[ALL EVENTS]パネルでは、ログメッセージの内容を確認できます。

下は、任意のログ行をクリックして展開表示した例です。
受信したログメッセージが複数のフィールドに分割されて保管されていることが分かります。
※@timestampにはNagios Log Serverがこのイベントを「受信した日時」が設定されます。「イベントの発生日時」は EventTime フィールドに保存されます。

上記は、NXLogを使用してWindowsイベントログを Nagios Log Serverへ送信するための設定手順例でしたが、別のログ管理ツールを使用していただいて構いません。(Nagios社にNXLogを推奨する理由を問い合わせたところ「NXLogは有名かつ無償で利用できるツールであるため」との回答がありました。使用したいツールをご利用ください。)

例えば、Elasticsearch社のWinlogbeatも使用できます。
Winlogbeatも無料で使用することができるWindowsイベントログの軽量シッパーで、簡単にセットアップすることができます。

WinlogbeatでのWindowsイベントログ送信

Winlogbeatを使用する場合は、Nagios Log Serverでbeatsインプット定義を追加してください(または既存の[Windows Event Log(Default)]定義を変更してください )。

 Winlogbeatのセットアップ手順の概要は以下のとおりです:
  1. Winlogbeat zipファイルをダウンロードページからダウンロードします。
  2. zipファイルを "C:\Program Files" に展開します。
  3. フォルダ名 "winlogbeat-<version>" を "winlogbeat" に変更します。
  4. winlogbeat.ymlファイルを編集します。
  5. PowerShellプロンプトを管理者として実行します。
  6. PowerShellプロンプトでWinlogbeatの展開フォルダに移動します:
    cd 'C:\Program Files\Winlogbeat'
  7. PowerShellプロンプトで構成ファイルが正しいことをテストします:
    .\winlogbeat.exe test config -c .\winlogbeat.yml -e
  8. PowerShellプロンプトで以下のコマンドを実行し、winlogbeatをサービスとしてインストールします:
    .\install-service-winlogbeat.ps1
  9. PowerShellプロンプトで以下のコマンドを実行し、winlogbeatサービスを開始します。
    Start-Service winlogbeat
詳しくは、Winlogbeatマニュアルをご参照ください:
https://www.elastic.co/guide/en/beats/winlogbeat/current/winlogbeat-getting-started.html

下はWinlogbeatでWindowsイベントログをNagios Log Serverへ送信した場合の例です。
Naigos Log Server側でLogstashのフィルター定義を作成しなくてもフィールド分割されてログメッセージが保管されます。
※NXLogと異なり、@timestampには「イベントの発生日時」が設定されます。Winlogbeatがイベントログを読みこんだ日時や Nagios Log Serverが受信した日時は保存されません。

EventSentryでのWindowsイベントログ送信

なお、弊社の旧取り扱い製品である EventSentry(NETIKUS.NET ltd社)をご利用の場合、syslogアクションで [Nagios Log Server]フォーマットを選択することができるようになっていますので、簡単に Nagios Log ServerへWindowsイベントログを送信することができます。※EventSentryは有償製品です。

下はEventSentryのsyslogアクションを使用してイベントログをNagios Log Serverへ送信した場合の例です。
※NXLogの場合と同じく、@timestampにはNagios Log Serverがこのイベントを「受信した日時」が設定されます。「イベントの発生日時」は EventTime フィールドに保存されます。

このように Nagios Log Serverはネットワーク機器だけでなくWindowsイベントログも管理・監視することができます。セットアップも簡単です。まずは評価版からお試しください。

さいごに

5回にわたって Nagios Log Serverをご紹介してまいりましたが、今回の記事をもちまして終了となります。
最後までお読みいただきまして誠にありがとうございました。

Nagios Log Serverダウンロード

Nagios Log Serverは以下からダウンロードできます。ぜひお試しください。
  • インストール直後は、60日間無料で機能制限なしで利用可能な「評価版」モードで動作します。
  • 「フリー版(使用期限なし、ログ収集上限あり:500MB/日(7日間平均))」としてご利用いただく場合は、インストール後にライセンスタイプを「フリー版」に切り替えてください。詳しくは「Nagios Log Server管理者ガイド」をご参照ください。
https://www.jtc-i.co.jp/product/nagioslogserver/nagioslogserver.html

Nagios Log Server製品紹介ページ

Nagios Log Serverの特長や機能については製品紹介ページをご参照ください:
 https://www.jtc-i.co.jp/product/nagioslogserver/nagioslogserver.html

お問合せ 

購入前のNagios Log Serverについてのお問合せやお見積もりの依頼は以下から承っております。
ご不明な点やお気づきの点がございましたらお問合せください。
https://www.jtc-i.co.jp/contact/scontact.php