WindowsServerにNXLogの設定をする

はじめに
普段はLinuxサーバーを触ることが多い僕ですが、最近は勉強も兼てWindows Serverに触れる機会が増えています。ただ、やはり慣れない部分も多く、特に「ログ」の扱いはLinuxとは勝手が違うようです。
Windowsには標準で「イベントログ」という仕組みがありますが、このログをSyslogのように外部サーバーへ転送する機能は標準では提供されていません。
そこで、今回はサードパーティー製のツール「NXLog」を使い、Windows Serverのイベントログを外部のLinuxサーバーへ転送する実験をしています。
この実験は、以下の4つの記事に分けてお届けする予定です。
- Windows ServerへのNXLogインストール
- ログ受信サーバー(Linux)の構築
- NXLogの設定(Windows Server側)(本記事)
- ログ転送の確認
今回の実験環境とゴール
まず、今回の実験で目指す環境を改めて整理します。予算がないため、さくらの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アドレスの変更
貼り付けた設定ファイルの中にある
<Output out>
Module om_udp
# ↓↓↓ ここのIPアドレスを書き換える ↓↓↓
Host xxx.xxx.xxx.xxx
Port 514
...
</Output>
ファイルを上書き保存したら、設定は完了です。
3. NXLogサービスの起動
最後に、停止していたnxlogサービスを起動します。
- Windowsの検索バーで「サービス」または services.msc と入力し、サービス管理画面を開きます。
- 一覧から nxlog を見つけます。
- nxlog を右クリックし、「開始」を選択します。

動画は以下になります
まとめ
これで、Windows Server側で「イベントログを収集し、指定したLinuxサーバーへJSON形式でUDP転送する」設定が完了し、サービスが起動しました。
次回は、実際にLinuxサーバー側でログが受信できているかを一緒に確認していきます。
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS