集中型ロギング施設でデフォルト値を許可しながら、リモート緊急メッセージがユーザーコンソールにあふれないようにする方法
*.emerg :omusrmsg:*
地域の緊急事態が発生した場合?
特に、リモート緊急メッセージをログファイルに記録して電子メールを送信したいのですが、リモートシステムはプライマリサーバーの操作を妨げてはいけません。
デフォルトサーバーはRHEL 7.4 x86_64
rsyslogバージョン:8.24.0です。
サーバーサイド構成(フラグメント):
/etc/rsyslog.conf:
$ModLoad imuxsock
$ModLoad imjournal
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
*.emerg :omusrmsg:*
$OmitLocalLogging on
/etc/rsyslog.d/listen.conf:
$systemLogSocketName /run/systemd/journal/syslog
答え1
新しい /etc/rsyslog.d/remote-emerg.conf ファイルが作成されます。
$template myFormat0,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg:::drop-last-lf\n"
if $fromhost-ip != '127.0.0.1' and $syslogseverity-text == 'emerg' then {
*.emerg /var/log/remote/PANIC;myFormat0
stop
}
ノート:%FROMHOST-IP%の代わりに%HOSTNAME%を試してみましたが、リモートホスト名が正しく設定されていても、常にlocalhostが印刷されます。
テストに行くローカルおよびリモートホストで実行:
logger -p daemon.emerg "TEST from $HOSTNAME"
ローカル実行はコンソールに印刷され、リモート実行はPANICファイルにのみ書き込まれます。