Windowsから rsyslog im_tcp へ構造化ログを送る

| コメント(0)

nxlog-ce-2.9.1716.msi をインストールします。

C:\Program Files (x86)\nxlog\conf\nxlog.conf を修正します。

## This is a sample configuration file. See the nxlog reference manual about the
## configuration options. It should be installed locally and is also available
## online at

## Please set the ROOT to the folder your nxlog was installed into,
## otherwise it will not start.

#define ROOT C:\Program Files\nxlog
define ROOT C:\Program Files (x86)\nxlog

Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\
SpoolDir %ROOT%\data
LogFile %ROOT%\data\nxlog.log

<Extension _syslog>
    Module      xm_syslog

<Extension json>
    Module      xm_json

<Input in>
    Module      im_msvistalog
    Exec        if ($Message =~ /^@cee:(.*)/) { parse_json($1); }
    Exec        $Message = "@cee:" + to_json();

<Output out>
    Module      om_tcp
    Host # rsyslogd
    Port        514
    Exec        to_syslog_bsd();

<Route 1>
    Path        in => out

テスト起動は c:\Program Files (x86)\nxlog>nxlog.exe -f が利用できます。

アプリケーション側から @cee: で記録されたログはパースされ Windows Event Log の属性とマージされて rsyslogd へ再び @cee: で構造化され送られます。

ReportEvent (ReportEventAも) で Windows Event Log に送られたデータは rsyslogd に出力される際は utf8 になるようです。

設定ファイルのサンプルはソースの doc/reference-manual/config-examples/config-example-* に多数ありました。
ソースもこちらから 入手 できます。