デスクトップPC(Win10)のエラーメッセージをsyslogサーバーへ保存する

##目次

- はじめに
- 構成
- Linux側の設定
- Windows側設定
- 受信確認
- 参考サイト

##はじめに

セールでファンレスの小さいPCを買いました。嬉しいことにLANポートが2つあるベアボーンです。
4コアと言えども10Wの組み込みCeleronなので能力は大したことないですが、

ESXiをインストールしました。
無理せずできる範囲で遊んでみようかと思います。

今回はLinuxのrsyslogを使って、普段使っているWindows10からメッセージを収集する方法を考えます。

##構成

以下簡単なイメージ図
![syslogserver作成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519662/fcf0568b-85b5-6c4b-df41-87656ddeaa24.jpeg)

今回はSyslogサーバーとして、ESXi6.7上にCentOS8.2(64bit)をインストール

仮想マシンのスペック
CPU：2コア
メモリ:2048MB
DISK：20GB


##Linux側の設定

まずは/etc/hostsにデスクトップPCを記述

```console
 # cat /etc/hosts
 192.168.11.40 desktoppc
```

続いてrsyslogがインストールされていることを確認します。

```
 # dnf list rsyslog
 インストール済みパッケージ
 rsyslog.x86_64                                        8.1911.0-3.el8        
```
インストールされていない場合はインストールします。

```
 # dnf install rsyslog
```

続いて、/etc/rsyslog.conf の内容を変更します。
コメントアウトを外すことでメッセージの受信が可能になります。
/var/log/rsyslog 配下に各ホスト名(or IPアドレス)毎に受信したメッセージを月ごとに分けて書き込む設定です。

```
 # vi rsyslog.conf

 # Provides UDP syslog reception
 # for parameters see http://www.rsyslog.com/doc/imudp.html
 module(load="imudp") # needs to be done just once ←文頭コメントアウト外す
 input(type="imudp" port="514") #←文頭コメントアウト外す
 
 # Provides TCP syslog reception
 # for parameters see http://www.rsyslog.com/doc/imtcp.html
 module(load="imtcp") # needs to be done just once　←文頭コメントアウト外す
 input(type="imtcp" port="514")　#←文頭コメントアウト外す
～～～～～～
　　略　
～～～～～～
#ファイル末尾に追記
 $template ClinetMessage,"/var/log/rsyslog/%fromhost%/%$year%%$month%_messages.log"
 *.*     -?ClinetMessage
```

rsyslogサービスの再起動

```
# systemctl restart rsyslog.service
```

これでCentOSの設定は完了。

##Windowsの設定

続いてWindows側の設定。
Windows単体でのログ送信機能はないので、NXlogというソフトウェアをインストールします。
https://nxlog.co/products/nxlog-community-edition/download
こちらからwindows用の"nxlog-ce-2.10.2150.msi"をダウンロードしてインストール。

![2020-12-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519662/db7a4646-0249-0a99-b0de-9de042238214.png)

インストールにカスタムオプションは特になく、インストール先のみを指定しインストールできます。
何も変更なくインストールした場合、C:\Program Files (x86)\nxlog\confに"nxlog.conf"という設定ファイルがあります。

nxlog.confの記述

```
Panic Soft
#NoFreeOnExit TRUE

define ROOT     C:\Program Files (x86)\nxlog
define CERTDIR  %ROOT%\cert
define CONFDIR  %ROOT%\conf
define LOGDIR   %ROOT%\data
define LOGFILE  %LOGDIR%\nxlog.log
LogFile %LOGFILE%

Moduledir %ROOT%\modules
CacheDir  %ROOT%\data
Pidfile   %ROOT%\data\nxlog.pid
SpoolDir  %ROOT%\data

<Extension _syslog>
    Module      xm_syslog
</Extension>
<Extension _charconv>
    Module      xm_charconv
    AutodetectCharsets iso8859-2, utf-8, utf-16, utf-32, shift_jis
</Extension>
<Extension json>
Module xm_json
</Extension>
<Input in>
Module im_msvistalog
Query <QueryList>\
<Query Id="0">\
<Select Path="Application">*[System[(Level=1 or Level=2 or Level=3)]]</Select>\
<Select Path="System">*[System[(Level=1 or Level=2 or Level=3)]]</Select>\
<Select Path="Security">*[System[(Level=1 or Level=2 or Level=3)]]</Select>\
</Query>\
</QueryList>
Exec $raw_event = "json=" + to_json(); $SyslogFacilityValue = 21;
Exec convert_fields("utf-8", "utf-8");
</Input>
<Processor t>
Module pm_transformer
OutputFormat syslog_bsd
Exec $Message=(": "+$raw_event);
</Processor>
<Output out>
Module om_udp
Host 192.168.11.60
Port 514
</Output>
<Route r>
Path in => t => out
</Route>
```

メッセージのレベルは
1：クリティカル
2：エラー
3：警告
4：情報

となっているので、好きな範囲で記述を変更します。

タスクマネージャーからnxlogのサービスを起動させる。

![2020-12-08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519662/899e612d-828a-e291-b445-03db06c5a90f.png)

Windows起動時にサービスが自動起動することも念のため確認しておきます。

![2020-12-06 (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519662/be48347c-ef6b-1a8f-c1de-578403e13a99.png)


##受信確認

```
 # cd /var/log/rsyslog
 # ls -l
 合計 0
 drwx------. 2 root root 33 12月  6 21:43 desktoppc
 drwx------. 2 root root 33 12月  6 20:16 syslogsvr

 # cd desktoppc
 # ls -l
 合計 44
 -rw-------. 1 root root 44137 12月  6 21:53 202012_messages.log
```

メッセージが受信できました。
もし、突然PCがクラッシュしてしまったときに手掛かりが見つかるかもしれません。



##参考サイト
[CentOS8 を Syslog サーバにして他機器からのメッセージを受信出来るようにする](https://sig9.hatenablog.com/entry/2019/10/08/000000
)
[【Windows】イベントログをLinuxに転送する](https://qiita.com/dan-go/items/d7d525ec44cff939c2d4)