LoginSignup
16
2

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-12-08

目次

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

はじめに

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

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

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

構成

以下簡単なイメージ図
syslogserver作成.jpg

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

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

Linux側の設定

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

 # 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

インストールにカスタムオプションは特になく、インストール先のみを指定しインストールできます。
何も変更なくインストールした場合、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

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

2020-12-06 (4).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 サーバにして他機器からのメッセージを受信出来るようにする
【Windows】イベントログをLinuxに転送する

16
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
2