Edited at

rsyslogでシステムログ管理

More than 1 year has passed since last update.


はじめに

Linuxでのログ管理では定番のrsyslogに関して記事にしました。

詳細は説明は省き、構築や設計時に使えるネタをまとめました。


rsyslogとは


  • ログ管理システム

    RHEL7系・6系ではrsyslogが標準

    RHEL5系ではsyslogが標準

rsyslogではUDPの他、TCPでログを送ることができるようになった。


動作確認環境

項目
バージョン

OS
CentOS Linux release 7.4.1708 (Core)

rsyslog
rsyslog-8.24.0-12.el7.x86_64

rsyslogはデフォルトでインストール済み。


rsyslog設定(送信側)

・書式

UDPで送信

[送信するファシリティ/プライオリティを指定] @remote-host:514

TCPで送信
[送信するファシリティ/プライオリティを指定] @@remote-host:514

・例

*err;mail.none;authpriv.none;cron.none @@192.168.10.1:514

err以上のログを、192.168.10.1へTCPで転送する。

noneを指定したファシリティは転送しない。


rsyslog設定(受け側)

受付けるプロトコルを設定します。

デフォルトではコメントアウトされている為、利用するプロトコルに合わせてコメントアウトを解除します。

UDP・TCP両方利用する場合は、下記のように設定する。

# Provides UDP syslog reception

#$ModLoad imudp
#$UDPServerRun 514
#↓コメントアウト解除
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
#↓コメントアウト解除
$ModLoad imtcp
$InputTCPServerRun 514


ログ書き込みレートを設定する。

デフォルトでは、5秒、200行まで書き込みを行いますが、200行以降は破棄されてしまいます。

5秒に200行以上ログが転送されるようなシステムの場合、チューニングが必要な項目になります。


  • 無制限に書き込む

$SystemLogRateLimitInterval 0


  • 5秒、1000行まで書き込む、以降は破棄

$systemLogRateLimitInterval 5

$SystemLogRateLimitBurst 1000


ログ振り分けを行う

転送されてきたログの振り分け(err以上とwarn以下)を行いたい場合に、簡単な条件式が利用できます。

warn,notice,infoは /var/log/sv/hoge.logに書き込む。

if $fromhost-ip == "IP Address" and $syslogseverity > '3' then /var/log/sv/hoge.log

& stop

err,crti,alert,emerg,panicは/var/log/sv/hoge-err.logに書き込む。

if $fromhost-ip == "IP Address" and $syslogseverity < '4' then /var/log/sv/hoge-err.log

& stop

syslogseverityの値を利用して、条件により振分けを行っている。

syslogseverity
syslogseverity-txt

0
emerg,panic

1
alert

2
crit

3
err

4
warning

5
notice

6
info

7
debug

また、「& stop」を入れることですでに振り分けたログは以降の処理で書き込まない様にできる。

「& stop」を入れない場合、デフォルトで設定されている下記設定によって/var/log/messageにも転送ログが書き込まれる。

処理は上から順に行われる為、下記設定より上に記述する。

*.info;mail.none;authpriv.none;cron.none                /var/log/messages


ネットワーク機器からのログ

ネットワーク機器からのログは、ファシリティを利用する。


  • ネットワーク機器側の設定

ファシリティ
syslogseverity
リモート先

local2
0~7
IP Address

ファシリティはlocal0~local7で任意の値を利用する。


  • サーバ側の設定

local2.err                /var/log/nw/honge-nw.log

ネットワーク機器が複数ある場合は、送信元IPで識別して振り分けを行います。

if $fromhost-ip == "IP Address" then /var/log/sv/hoge-nw1.log

& stop

if $fromhost-ip == "IP Address" then /var/log/sv/hoge-nw2.log
& stop