WindowsServerにNXLogの設定をする

はじめに

普段はLinuxサーバーを触ることが多い僕ですが、最近は勉強も兼てWindows Serverに触れる機会が増えています。ただ、やはり慣れない部分も多く、特に「ログ」の扱いはLinuxとは勝手が違うようです。

Windowsには標準で「イベントログ」という仕組みがありますが、このログをSyslogのように外部サーバーへ転送する機能は標準では提供されていません。

そこで、今回はサードパーティー製のツール「NXLog」を使い、Windows Serverのイベントログを外部のLinuxサーバーへ転送する実験をしています。

この実験は、以下の4つの記事に分けてお届けする予定です。

  1. Windows ServerへのNXLogインストール
  2. ログ受信サーバー(Linux)の構築
  3. NXLogの設定(Windows Server側)(本記事)
  4. ログ転送の確認

今回の実験環境とゴール

まず、今回の実験で目指す環境を改めて整理します。予算がないため、さくらのVPSの2週間無料お試し期間を最大限に活用します。

  • ゴール: Windows Serverのイベントログを、LinuxサーバーへUDPで転送する
  • ログ送信側: Windows Server 2022/2025
  • ログ受信側: AlmaLinux
  • ログ形式: JSON
  • プロトコル: UDP / ポート 514

NXLog設定ファイルの全体像

今回は、第1回でインストールして停止したままのnxlogサービスに、設定ファイル(.conf)を適用して起動させます。

先に設定ファイルの全体像を共有します。この内容をコピーして使用してください。

# ========
# NXLog設定ファイル (JSON形式でSyslog転送)
# ========

# ルートディレクトリ定義
define ROOT C:\Program Files\nxlog
Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
LogFile %ROOT%\data\nxlog.log

#
# 拡張モジュール (JSONとSyslog形式を利用)
#
<Extension json>
    Module xm_json
</Extension>

<Extension syslog>
    Module xm_syslog
</Extension>

#
# 入力設定: どのログを収集するか
#
<Input in>
    Module im_msvistalog
    # "情報"レベル以上(Level <= 4)のログのみを収集対象とする
    # Application, System, Security の3つのログを収集
    Query <QueryList> \
            <Query Id="0"> \
              <Select Path="Application">*[System[Level<=4]]</Select> \
              <Select Path="System">*[System[Level<=4]]</Select> \
              <Select Path="Security">*[System[Level<=4]]</Select> \
            </Query> \
          </QueryList>
</Input>

#
# 出力設定: どこへ、どのように送るか
#
<Output out>
    Module om_udp
    # 送信先サーバー(第2回で構築したLinux)のIPアドレスを指定
    Host xxx.xxx.xxx.xxx
    Port 514

    # 送信する直前の処理を定義 (JSON形式に変換)
    <Exec>
        $raw_event = to_json();
        $Message = $raw_event;
        to_syslog_bsd();
    </Exec>
</Output>

#
# 経路設定: 入力(in)と出力(out)を繋ぐ
#
<Route 1>
    Path in => out
</Route>

設定ファイルの適用手順

上記の設定ファイルを、Windows Server上のNXLogに適用していきます。

1. 元のファイルをバックアップ

まず、NXLogのデフォルトの設定ファイルをバックアップ(コピー)しておきます。

設定ファイルの場所は C:\Program Files\nxlog\conf です。

エクスプローラーで nxlog.conf をコピー&ペーストし、ファイル名を nxlog.conf.old などに変更しておきましょう。

2. 設定ファイルの上書き

次に、nxlog.conf をテキストエディタ(メモ帳やVSCodeなど)で開きます。

中身をすべて削除し、先ほどの設定ファイルの全体像をすべてコピーして貼り付けます。

【重要】送信先IPアドレスの変更

貼り付けた設定ファイルの中にある ブロックの Host の行を、第2回で構築したLinuxサーバーのIPアドレスに必ず書き換えてください。

<Output out>
    Module om_udp
    # ↓↓↓ ここのIPアドレスを書き換える ↓↓↓
    Host xxx.xxx.xxx.xxx 
    Port 514
    ...
</Output>

ファイルを上書き保存したら、設定は完了です。

3. NXLogサービスの起動

最後に、停止していたnxlogサービスを起動します。

  1. Windowsの検索バーで「サービス」または services.msc と入力し、サービス管理画面を開きます。
  2. 一覧から nxlog を見つけます。
  3. nxlog を右クリックし、「開始」を選択します。

動画は以下になります


まとめ

これで、Windows Server側で「イベントログを収集し、指定したLinuxサーバーへJSON形式でUDP転送する」設定が完了し、サービスが起動しました。

次回は、実際にLinuxサーバー側でログが受信できているかを一緒に確認していきます。

個人支援・寄付について

サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。

  • ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS