2021/03/20 CentOS Stream 20201203





送信元IP別に振り分けてログを保存するシスログサーバ

サーバやアプライアンス、ネットワーク機器が増えてくるとシスログサーバを構築すると便利です。
ログを集約し、保存できます。

ログを送信元IPアドレス別に自動で振り分けて保存しておくと便利です。
新しいログノードを追加しても、サーバ上はなにもする必要がありません。
なにより簡単に設定できます。





まずはネットワークで取り込んだデータをファイルに保存するためSELinuxを無効化します。
# setenforce 0

# vi /etc/sysconfig/selinux

SELINUX=disabled

次に/etc/rsyslog.confを編集します。
ログの振り分け保存するため、変更点を赤字で示しています。
ここではrsyslogのバージョンは、8.1911となります。
#vi /etc/rsyslog.conf


#### MODULES ####

module(load="imuxsock"    # provides support for local system logging (e.g. via logger command)
       SysSock.Use="off") # Turn off message reception via local log socket;
                          # local messages are retrieved through imjournal now.
module(load="imjournal"             # provides access to the systemd journal
       StateFile="imjournal.state") # File to store the position in the journal
#module(load="imklog") # reads kernel messages (the same are read from journald)
#module(load="immark") # provides --MARK-- message capability

# Provides UDP syslog reception
# for parameters see http://www.rsyslog.com/doc/imudp.html
#module(load="imudp") # needs to be done just once
#外部からのsyslog転送を受け入れます
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")

#### GLOBAL DIRECTIVES ####

# Where to place auxiliary files
global(workDirectory="/var/lib/rsyslog")

# Use default timestamp format
module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")

# Include all config files in /etc/rsyslog.d/
include(file="/etc/rsyslog.d/*.conf" mode="optional")

#### RULES ####

#送信元IP別にディレクトリを作成し、日付ごとにログを格納する定義
#ここから
$template logFileName,"/var/log/syslog/%fromhost-ip%/
%fromhost-ip%_%$year%%$month%%$day%.log"
#ここまで1行で書く

#全てのログを、ログテンプレートに従って保存
#ハイフンとクエスチョンマークの意味は後述

*.*        -?logFileName


#条件を伴う新しい書き方
#ここから
template (name="log1" type="string" string="/var/log/%$year%%$month%%$day%.log")
#ここまで1行で書く

#文字列security Troubleを含む場合のみ、動的ファイル名へ保存
if ($msg contains "security Trouble") then
{
  action(type="omfile" dynafile="log1")
}


# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

(略)

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

# ### sample forwarding rule ###
#action(type="omfwd"
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.

設定は以上です。あとはrsyslogを再起動します。



テンプレート名「-?logFileName

ハイフン(-)の役割
ハイフンを加えると、ログの書き込みが非同期となります。
受信したログを一旦バッファに溜めて、まとめてディスクへ書き込みます。
逆にバッファを用いず即座に保存するのはダイレクトです。
非同期は、マシンの電源が落ちると未書き込みのデータが欠損する恐れがあります。
ダイレクトは、一度に膨大なログが送り込まれたとき取りこぼす恐れがあります。

クエスチョン(?)の役割
ログのテンプレート(保存ファイル名)が動的ファイル名であることを示します。







prev.gif