|
|
rsyslogサーバ側の現在の設定 |
|
|
# egrep -v "^#|^$" /etc/rsyslog.conf |
|
|
|
|
|
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command) |
rsyslogは上から順番にルールをチェックし、 |
|
|
|
|
$ModLoad imklog # provides kernel logging support (previously done by rklogd) |
マッチしたルールがあってもそこで終わらずに、 |
|
|
|
|
$ModLoad imudp |
最後までチェックする |
|
|
|
|
$UDPServerRun 514 |
|
|
|
|
|
$AllowedSender UDP, 127.0.0.1, 192.168.24.0/24, *.example.co.jp |
そのため、ルールの書き方によってはログが複数のファイルに |
|
|
|
|
$ModLoad imtcp |
記録されることがよくある |
|
|
|
|
$InputTCPServerRun 514 |
|
|
|
|
|
$AllowedSender TCP, 127.0.0.1, 192.168.24.0/24, *.example.co.jp |
|
|
|
|
|
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat |
|
|
|
|
|
$IncludeConfig /etc/rsyslog.d/*.conf |
|
|
|
|
|
*.info;mail.none;authpriv.none;cron.none /var/log/messages |
|
|
|
|
|
authpriv.* /var/log/secure |
|
|
|
|
|
mail.* -/var/log/maillog |
|
|
|
|
|
cron.* /var/log/cron |
|
|
|
|
|
*.emerg * |
|
|
|
|
|
uucp,news.crit /var/log/spooler |
|
|
|
|
|
local7.* /var/log/boot.log |
|
|
|
|
|
local7.* /var/log/boot.log |
|
|
|
|
|
local0.* /var/log/bigip/local0.log |
|
|
|
|
|
local4.* /var/log/bigip/local4.log |
|
|
|
|
|
local2.* /var/log/bigip/bigip.log |
|
|
|
|
|
local3.* /var/log/bigip/bigip.log |
|
|
|
|
|
$template temp1,"/var/log/template.log" |
|
|
|
|
|
local1.* ?temp1 |
|
|
|
|
|
if $msg contains 'testmessage' then \ |
メッセージについては、大文字と小文字の区別あり |
|
|
|
|
/var/log/property.log |
testmessageはマッチするが、TESTmessageはマッチしない |
|
|
|
|
|
|
|
|
|
|
|
外部サーバから、 # logger -p local1.warn "testmessage" を実行した結果 |
|
|
# tail /var/log/messages |
3つのファイルに記録されるようになっている |
|
|
|
|
Aug 14 17:09:03 vm-centos62 test1000: testmessage |
|
|
|
|
|
|
|
|
|
|
|
|
# tail /var/log/template.log |
|
|
|
|
|
Aug 14 17:09:03 vm-centos62 test1000: testmessage |
|
|
|
|
|
|
|
|
|
|
|
|
# tail /var/log/property.log |
|
|
|
|
|
Aug 14 17:09:03 vm-centos62 test1000: testmessage |
|
|
|
|
|
|
|
|
|
|
|
|
rsyslogサーバのローカル上から、 # logger -p local1.warn "testmessage 01" を実行した結果 |
|
|
# tail /var/log/messages |
3つのファイルに記録されるようになっている |
|
|
|
|
Aug 14 17:14:48 vm-centos62B test1000: testmessage 01 |
|
|
|
|
|
|
|
|
|
|
|
|
# tail /var/log/template.log |
|
|
|
|
|
Aug 14 17:14:48 vm-centos62B test1000: testmessage 01 |
|
|
|
|
|
|
|
|
|
|
|
|
# tail /var/log/property.log |
|
|
|
|
|
Aug 14 17:14:48 vm-centos62B test1000: testmessage 01 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. ログを特定のファイルだけに記録したい |
|
|
|
|
|
|
|
|
|
目的: |
|
|
外部サーバからの"testmessage"を含むログについては、/var/log/property.logだけに記録したい |
|
|
設定の変更 |
|
|
# vi /etc/rsyslog.conf |
|
|
|
|
|
(省略) |
|
|
|
|
|
#### RULES #### |
プロパティの設定を上位に移動し、かつfromhost-ipで |
|
|
|
|
if $fromhost-ip == '192.168.24.133' and $msg contains 'testmessage' then \ |
転送元IPアドレスを外部アドレスを指定する |
|
|
|
|
/var/log/property.log |
(ローカルのメッセージは対象外とさせる) |
|
|
|
|
& ~ |
|
|
|
|
|
# Log all kernel messages to the console. |
&は、複数のアクションを指定する場合に指定する |
|
|
|
|
# Logging much else clutters up the screen. |
~は、メッセージの破棄を意味する |
|
|
|
|
#kern.* /dev/console |
つまり、& ~ をいれると、その条件(今回はif〜then)にマッチ |
|
|
|
|
|
|
したものは、/var/log/property.logに出力され、次に~(破棄) |
|
|
|
|
# Log anything (except mail) of level info or higher. |
される |
|
|
|
|
# Don't log private authentication messages! |
|
|
|
|
|
*.info;mail.none;authpriv.none;cron.none /var/log/messages |
|
|
|
|
|
|
|
|
|
|
|
|
# The authpriv file has restricted access. |
|
|
|
|
|
authpriv.* /var/log/secure |
※ $fromhost-ipのフィルタを除外すると、ローカルからの |
|
|
|
|
(省略) |
同様のメッセージもproperty.logに記録される |
|
|
|
|
$template temp1,"/var/log/template.log" |
|
|
|
|
|
local1.* ?temp1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# /sbin/rsyslogd -N 1 -c 5 |
構文チェック |
|
|
|
|
|
|
|
|
|
|
|
# service rsyslog restart |
設定の反映 (rsyslogの再起動) |
|
|
|
|
|
|
|
|
|
|
|
確認 |
|
|
外部サーバから、 # logger -p local1.warn "testmessage 02" を実行した結果 |
|
|
# tail /var/log/property.log |
property.logにしか記録されていない |
|
|
|
|
Aug 14 17:26:06 vm-centos62 test1000: testmessage 02 |
|
|
|
|
|
|
|
|
|
|
|
|
# tail /var/log/messages |
|
|
|
|
|
|
|
|
|
|
|
|
# tail /var/log/template.log |
|
|
|
|
|
|
|
|
|
|
|
|
syslogサーバのローカル上から、 # logger -p local1.warn "testmessage 03" を実行した結果 |
|
|
# tail /var/log/property.log |
property.log以外のmessages , template.logに記録されている |
|
|
|
|
|
|
|
|
|
|
|
# tail /var/log/messages |
|
|
|
|
|
Aug 14 17:27:11 vm-centos62B test1000: testmessage 03 |
|
|
|
|
|
|
|
|
|
|
|
|
# tail /var/log/template.log |
|
|
|
|
|
Aug 14 17:27:11 vm-centos62B test1000: testmessage 03 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. 特定のログをどのファイルにも記録しない(破棄したい) |
|
|
|
|
|
|
|
|
|
目的: |
|
|
"testmessage"を含むログについては、破棄する。 |
|
|
設定の変更 |
|
|
# vi /etc/rsyslog.conf |
|
|
|
|
|
(省略) |
|
|
|
|
|
#### RULES #### |
|
|
|
|
|
if $msg contains 'testmessage' then ~ |
ログメッセージにtestmessagesが含まれている場合は、 |
|
|
|
|
|
|
ログを破棄する |
|
|
|
|
# Log all kernel messages to the console. |
~は、ログの破棄を意味するアクションの一つ |
|
|
|
|
# Logging much else clutters up the screen. |
|
|
|
|
|
#kern.* /dev/console |
|
|
|
|
|
|
|
ログがこの時点で破棄されるのでその他のルールが |
|
|
|
|
# Log anything (except mail) of level info or higher. |
適用されることはない |
|
|
|
|
# Don't log private authentication messages! |
|
|
|
|
|
*.info;mail.none;authpriv.none;cron.none /var/log/messages |
|
|
|
|
|
|
|
※ $from-ipのフィルタを加えることで特定のサーバからの |
|
|
|
|
# The authpriv file has restricted access. |
ログだけを対象にすることができる |
|
|
|
|
authpriv.* /var/log/secure |
|
|
|
|
|
|
|
|
|
|
|
|
# Log all the mail messages in one place. |
|
|
|
|
|
mail.* -/var/log/maillog |
|
|
|
|
|
(省略) |
|
|
|
|
|
$template temp1,"/var/log/template.log" |
|
|
|
|
|
local1.* ?temp1 |
|
|
|
|
|
|
|
|
|
|
|
|
# /sbin/rsyslogd -N 1 -c 5 |
構文チェック |
|
|
|
|
|
|
|
|
|
|
|
# service rsyslog restart |
設定の反映 (rsyslogの再起動) |
|
|
|
|
|
|
|
|
|
|
|
確認 |
|
|
外部サーバから、 # logger -p local1.warn "testmessage 04" を実行した結果 |
|
|
# tail /var/log/messages |
|
|
|
|
|
|
|
|
|
|
|
|
# tail /var/log/template.log |
|
|
|
|
|
|
|
|
|
|
|
|
syslogサーバのローカル上から、 # logger -p local1.warn "testmessage 05" を実行した結果 |
|
|
# tail /var/log/messages |
|
|
|
|
|
|
|
|
|
|
|
|
# tail /var/log/template.log |
|
|
|
|
|
|
|
|
|
|
|
|
外部サーバから、 # logger -p local1.warn "test" を実行した結果 |
|
|
# tail /var/log/messages |
messages , template.logには記録されている |
|
|
|
|
Aug 14 17:39:28 vm-centos62 test1000: test |
|
|
|
|
|
|
|
|
|
|
|
|
# tail /var/log/template.log |
|
|
|
|
|
Aug 14 17:39:28 vm-centos62 test1000: test |
|
|
|
|
|
|
|
|
|
|
|
|
syslogサーバのローカル上から、 # logger -p local1.warn "test" を実行した結果 |
|
|
# tail /var/log/messages |
messages , template.logには記録されている |
|
|
|
|
Aug 14 17:40:45 vm-centos62B test1000: test |
|
|
|
|
|
|
|
|
|
|
|
|
# tail /var/log/template.log |
|
|
|
|
|
Aug 14 17:40:45 vm-centos62B test1000: test |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. 複数の特定のログをどのファイルにも記録しない(破棄したい) |
|
|
|
|
|
|
|
|
|
目的: |
|
|
外部サーバからのログのうち、複数の特定のログを破棄したい。 |
|
|
|
|
|
|
|
|
|
設定の変更 |
|
|
# more /etc/rsyslog.conf |
/etc/rsyslog.confの中で、 |
|
|
|
|
(省略) |
RULESよりも上で/etc/rsyslog.d/*.confを読み込む設定に |
|
|
|
|
# Include all config files in /etc/rsyslog.d/ |
なっている |
|
|
|
|
$IncludeConfig /etc/rsyslog.d/*.conf |
(ちなみにバージョンはrsyslogd 5.8.10だった) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### RULES #### |
|
|
|
|
|
# Log all kernel messages to the console. |
|
|
|
|
|
# Logging much else clutters up the screen. |
|
|
|
|
|
#kern.* /dev/console |
|
|
|
|
|
|
|
|
|
|
|
|
# Log anything (except mail) of level info or higher. |
|
|
|
|
|
# Don't log private authentication messages! |
|
|
|
|
|
*.info;mail.none;authpriv.none;cron.none /var/log/messages |
|
|
|
|
|
(省略) |
|
|
|
|
|
|
|
|
|
|
|
|
# vi /etc/rsyslog.d/filter.conf |
/etc/rsyslog.d/の下に適当な.confファイルを作成し、 |
|
|
|
|
if \ |
ここにフィルタ条件を書いていく |
|
|
|
|
($fromhost-ip == '192.168.24.133' and $msg contains 'test') or \ |
|
|
|
|
|
($fromhost-ip == '192.168.24.133' and $msg contains 'Warning:' and \ |
フィルタ条件を or の後に続けて書いていく |
|
|
|
|
$msg contains '@hotmail.com') \ |
|
|
|
|
|
then \ |
|
|
|
|
|
~ |
~はログの破棄をあらわす |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# /sbin/rsyslogd -N 1 -c 5 |
構文チェック |
|
|
|
|
|
|
|
|
|
|
|
# service rsyslog restart |
rsyslogの再読み込み(再起動) |
|
|
|
|
|
|
|
|
|
|
|
確認 |
|
|
外部サーバからいろいろなメッセージを流してみた結果 |
|
|
# logger -p local1.warn "atestc" |
testを含んでいるので対象 |
|
|
# logger -p local1.warn "a testc" |
同上 |
|
|
# logger -p local1.warn "a Testc" |
Testなので対象外(大文字、小文字の区別あり) |
|
|
# logger -p local1.warn "aTestc" |
同上 |
|
|
# logger -p local1.warn "tes" |
tが足りないので対象外 |
|
|
# logger -p local1.warn "Warning" |
:が足りないので対象外 |
|
|
# logger -p local1.warn "Warning:" |
Warning:だけでも対象外 |
|
|
# logger -p local1.warn "Warning: " |
同上 |
|
|
# logger -p local1.warn "Warning: admin@hotmail.com" |
Warning:と@hotmail.comがあるので対象 |
|
|
# logger -p local1.warn "Warning: admin@hotmail.co" |
mが足りないので対象外 |
|
|
|
|
|
|
|
|
|
# tail /var/log/messages |
対象外となったものは、messagesやtemplate.logには |
|
|
|
|
Aug 14 19:55:13 vm-centos62 test1000: a Testc |
記録されている |
|
|
|
|
Aug 14 19:55:17 vm-centos62 test1000: aTestc |
|
|
|
|
|
Aug 14 19:55:34 vm-centos62 test1000: tes |
|
|
|
|
|
Aug 14 19:55:41 vm-centos62 test1000: Warning |
|
|
|
|
|
Aug 14 19:55:45 vm-centos62 test1000: Warning: |
|
|
|
|
|
Aug 14 19:55:49 vm-centos62 test1000: Warning: |
|
|
|
|
|
Aug 14 19:56:20 vm-centos62 test1000: Warning: admin@hotmail.co |
|
|
|
|
|
|
|
|
|
|
|
|
# tail /var/log/template.log |
|
|
|
|
|
Aug 14 19:55:13 vm-centos62 test1000: a Testc |
|
|
|
|
|
Aug 14 19:55:17 vm-centos62 test1000: aTestc |
|
|
|
|
|
Aug 14 19:55:34 vm-centos62 test1000: tes |
|
|
|
|
|
Aug 14 19:55:41 vm-centos62 test1000: Warning |
|
|
|
|
|
Aug 14 19:55:45 vm-centos62 test1000: Warning: |
|
|
|
|
|
Aug 14 19:55:49 vm-centos62 test1000: Warning: |
|
|
|
|
|
Aug 14 19:56:20 vm-centos62 test1000: Warning: admin@hotmail.co |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
■ プロパティベースのフィルタ機能 |
|
|
|
|
|
|
|
プロパティベースのフィルタとは、プロパティによるフィルタ方式であり、行頭が:(コロン)で始まる。 |
|
使用するプロパティやコンペアオペレーションは、式ベースと同じである。 |
|
式ベース(if〜then)との違いは、プロパティに$を付けないこと、プロパティとコンペアオペレーションと値を、,(カンマ)で区切ること、 |
|
値は" "(ダブルクォーテーション)で囲むこと、フィルタ条件が1つしか設定できないことである。 |
|
|
|
|
|
|
|
[基本的な書式] |
|
:プロパティ,コンペアオペレーション,"値" ログファイル名 |
|
|
|
|
|
|
|
[使用例] |
|
|
:msg, contains, "test" /var/log/local1.log |
ログメッセージにtestが含まれている場合は、 |
|
|
|
|
|
/var/log/local1.logに出力 |
|
|
|
|
|
|
|
|
|
:msg, !contains, "test" /var/log/local1.log |
ログメッセージにtestが含まれていない場合は、 |
|
|
|
|
|
/var/log/local1.logに出力 |
|
|
|
|
|
|
|
|
|
:msg, contains, "test" ~ |
ログメッセージにtestが含まれている場合は、 |
|
|
|
|
|
ログを廃棄 |
|
|
|
|
|
~は、ログの破棄を意味する。 |
|
|
|
|
|
|
|
|
|
:hostname, isequal, "centos62" /var/log/local2.log |
ホスト名がcentos62のログは、/var/log/local2.logに出力 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[設定例] |
|
|
# vi /etc/rsyslog.conf |
|
|
|
|
(省略) |
|
|
|
|
#### RULES #### |
|
|
|
|
:msg, contains, "testmessage" ~ |
ログメッセージにtestmessageが含まれている場合は廃棄。 |
|
|
|
|
|
|
|
|
|
$template temp1, "/var/log/host/%hostname%.log" |
templateでログファイルのテンプレートを作成 |
|
|
|
:hostname, isequal, "vm-centos62" ?temp1 |
vm-centos62からのログメッセージは、 |
|
|
|
& ~ |
/var/log/host/vm-centos62.logに出力した後、ログを廃棄。 |
|
|
|
|
|
|
|
|
|
# Log all kernel messages to the console. |
|
|
|
|
# Logging much else clutters up the screen. |
|
|
|
|
#kern.* /dev/console |
|
|
|
|
|
|
|
|
|
|
# Log anything (except mail) of level info or higher. |
|
|
|
|
# Don't log private authentication messages! |
|
|
|
|
*.info;mail.none;authpriv.none;cron.none /var/log/messages |
|
|
|
|
|
|
|
|
|
|
# The authpriv file has restricted access. |
|
|
|
|
authpriv.* /var/log/secure |
|
|
|
|
|
|
|
|
|
|
# Log all the mail messages in one place. |
|
|
|
|
mail.* -/var/log/maillog |
|
|
|
|
(省略) |
|
|
|
|
$template temp2,"/var/log/template.log" |
|
|
|
|
local1.* ?temp2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# /sbin/rsyslogd -N 1 -c 5 |
文法チェック |
|
|
|
rsyslogd: version 5.8.10, config validation run (level 1), master config /etc/rsyslog.conf |
|
|
|
|
rsyslogd: End of config validation run. Bye. |
|
|
|
|
|
|
|
|
|
|
# service rsyslog restart |
設定の反映 (rsyslogの再起動) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
確認 |
|
|
vm-centos62サーバから、$ logger -p local1.warn "this is a testmessage. これはテストメッセージです。" を実行した結果。 |
|
|
# tail /var/log/host/vm-centos62.log |
どのファイルにも記録なし |
|
|
|
|
|
|
|
|
|
# tail /var/log/messages |
|
|
|
|
|
|
|
|
|
|
# tail /var/log/template.log |
|
|
|
|
|
|
|
|
|
|
確認 |
|
|
vm-centos62サーバから、$ logger -p local1.warn "this is a testlog. これはテストログです。" を実行した結果。 |
|
|
# tail /var/log/host/vm-centos62.log |
vm-centos62.logが自動的に作成され、ログが記録されている |
|
|
|
Sep 6 14:55:07 vm-centos62 test1000: this is a testlog. これはテストログです。 |
|
|
|
|
|
|
|
|
|
|
# tail /var/log/messages |
他の2つには記録なし |
|
|
|
|
|
|
|
|
|
# tail /var/log/template.log |
|
|
|
|
|
|
|
|
|
|
確認 |
|
|
192.168.24.140(vm-solaris10)から、# logger -p local1.warn "this is a testlog." を実行した結果。 |
|
|
# ls -l /var/log/host | egrep '192|solaris' |
そもそもファイルは作られない |
|
|
|
|
|
|
|
|
|
# tail /var/log/messages |
他の2つには記録あり。 |
|
|
|
Sep 6 15:21:12 192.168.24.140 hiro0308: [ID 702911 local1.warning] this is a testlog. |
|
|
|
|
|
|
|
|
|
|
# tail /var/log/template.log |
|
|
|
|
Sep 6 15:21:12 192.168.24.140 hiro0308: [ID 702911 local1.warning] this is a testlog. |
|
|
|
|
|
|
|
|