Overview
CentOS 6 におけるログサーバー (rsyslog) の構築手順です。
/etc/rsyslog.conf
/etc/rsyslog.conf を編集します。変更箇所のみ記載しています。
[root@centos-6 ~]# cp /etc/rsyslog.conf /etc/rsyslog.conf.orig
[root@centos-6 ~]# vim /etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
*.info;mail.none;authpriv.none;cron.none;local4.none;local6.none /var/log/messages
$ModLoad imudp
imudp モジュールをロードする指示です。imudp は rsyslog で UDP プロトコルを使用してのメッセージ受信を可能にするモジュールです。
$UDPServerRun 514
UDP サーバーをポート 514 で実行することを指定しています。これにより、rsyslog は UDP プロトコルを使用して 514 ポートでのメッセージを受信するようになります
*.info;mail.none;authpriv.none;cron.none;local4.none;local6.none /var/log/messages
以下のルールに基づき、/var/log/messages ファイルに記録されます。この設定は、[facility].[priority]; の書式で記載します。例えば、priority に info を指定する場合、info 以上のログが対象となります。また、none を指定すると全てのログが対象になりません。
項目 | facility | priority | 説明 |
---|---|---|---|
*.info | * | info | デフォルト値です。* を指定すると、全てのファシリティが対象となります。 |
mail.none | none | デフォルト値です。 | |
authpriv.none | authpriv | none | デフォルト値です。 |
cron.none | cron | none | デフォルト値です。 |
local4.none | local4 | none | local4 は OpenLDAP で使用しています。OpenLDAP のログは別ファイルに記録するため、none を指定しています。 |
local6.none | local6 | none | local6 は ISC DHCP で使用しています。ISC DHCP のログは別ファイルに記録するため、none を指定しています。 |
/etc/rsyslog.d/ldap.conf
OpenLDAP のログを /var/log/ldap.log に出力する設定です。
[root@centos-6 ~]# echo "local4.* /var/log/ldap.log" > /etc/rsyslog.d/ldap.conf
/etc/rsyslog.d/dhcp.conf
ISC DHCP のログを /var/log/dhcp.log に出力する設定です。
[root@centos-6 ~]# echo "local6.* /var/log/dhcp.log" > /etc/rsyslog.d/dhcp.conf
/etc/rsyslog.d/ommail.conf
この設定により、’authentication failures’ という文字列がログメッセージに含まれている場合、指定された SMTP サーバーを使用して root 宛に通知メールが送信されます。
[root@centos-6 ~]# vim /etc/rsyslog.d/ommail.conf
$ModLoad ommail
$template mailsubject,"error on %hostname%"
$template mailbody,"rsyslog alert\r\nmsg='%msg%'"
$ActionMailSMTPServer localhost
$ActionMailFrom root
$ActionMailTo root
$ActionMailSubject mailsubject
if $msg contains 'authentication failures' then :ommail:;mailbody
$ModLoad ommail
ommail モジュールをロードする指示です。ommail は rsyslog でメール通知を行うための出力モジュールです。
$template mailsubject,"error on %hostname%"
メールの件名を定義するテンプレートです。%hostname% はシステムのホスト名に置き換えられます。
$template mailbody,"rsyslog alert\r\nmsg='%msg%'"
メールの本文を定義するテンプレートです。%msg% はログメッセージに置き換えられます。\r\n は改行を表します。
$ActionMailSMTPServer localhost
メールを送信する SMTP サーバーを localhost に設定しています。
$ActionMailFrom root
通知メールの送信者アドレスを root に設定しています。
$ActionMailTo root
通知メールの宛先アドレスを root に設定しています。
$ActionMailSubject mailsubject
通知メールの件名を先ほど定義した mailsubject テンプレートに設定します。
if $msg contains 'authentication failures' then :ommail:;mailbody
ログメッセージに ‘authentication failures’ という文字列が含まれている場合に、メール通知を行うルールです。
:ommail:
: メール通知を行うアクションを指定します。;mailbody
: 通知メールの本文として先ほど定義した mailbody テンプレートを使用します。
設定の有効化
rsyslog を再起動し、設定を有効化します。
[root@centos-6 ~]# service rsyslog restart
syslog クライアント
他のホストからログサーバーにログを転送するには、以下のように設定します。
[root@centos-6 ~]# echo "authpriv.* @syslog.si1230.com:514" > /etc/rsyslog.d/remote.conf
[root@centos-6 ~]# service rsyslog restart
この設定では、syslog.si1230.com が前述のログサーバーの FQDN です。ログサーバーに対して authpriv facility のログのみを転送しています。ポート番号の指定は 514 がデフォルト値なので必須ではありませんが、この例では明示的に指定しています。