##はじめに
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