デフォルトのsyslogサーバーには、次の構成があります。
[root@STGSYSLOG ~]# egrep -v "^$|^#" /etc/rsyslog.conf
$MaxMessageSize 32k
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
$template RemoteLogs,"/var/log/RemoteLogs/%fromhost-ip%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
& stop
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
[root@STGSYSLOG ~]#
rsyslogのバージョンは次のとおりです。
[root@STGSYSLOG ~]# rsyslogd -v
rsyslogd 8.24.0-52.el7_8.2
構成を確認すると、次のエラーが発生します。
[root@STGSYSLOG ~]# rsyslogd -f /etc/rsyslog.conf -N1
rsyslogd: version 8.24.0-52.el7_8.2, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: error during config processing: STOP is followed by unreachable statements! [v8.24.0-52.el7_8.2 try http://www.rsyslog.com/e/2207 ]
[root@STGSYSLOG ~]#
ファイルにメッセージを書き込んだ後、rsyslogにメッセージの処理を停止するように指示する「&stop」行があります。 「&stop」が含まれていない場合、メッセージはローカルファイルに書き込まれます。私がここで何か間違っているのでしょうか?または、このパラメータはrsyslog 8.xで廃止されましたか?アドバイスしてください。
答え1
このページは、rsyslog に関連する停止コマンドエラーを参照する検索結果に表示されます。返信を投稿すると、フォローアップを行う人が問題を解決しやすくなります。
ランジス,
あなたの設定ファイルによると、あなたは私が苦労してきたのと同じ結果を得ることを試みているようです。
- 定義されたテンプレートに従って、適切な名前のローカルログファイルに書き込まれたリモートsyslogメッセージを受け取ります。
- 構成ファイルの残りの部分に示すように、標準のローカルログファイルにローカルメッセージを記録し続けます。
上記の内容に基づいて、私の答えは以下の通りです。
はい、stopディレクティブは無条件で構成ファイルの残りの部分は無視されます(引用したエラーメッセージの生成)。私は「ルールセット」を使用すると、エラーなしに目標を達成できることがわかりました。
私はDebian 10.8と[rsyslog] v8.1901.0-1を使用しています。
私の[rsyslog.conf]の関連部分:
モジュールセクションで:
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514" ruleset="remote") # "remote" ruleset defined below...
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514" ruleset="remote") # "remote" ruleset defined below...
ドキュメントにルールセットを定義する必要があることがわかっています。今後閉じ込められました…私がこの文章を書く今はそんなようではありません。
ルールセクションで:
$template Incoming-logs,"var/log/%HOSTNAME%/%PROGRAMNAME%.log
ruleset(name="remote"){
action(type="omfile" dynafile="Incoming-logs")
} # This ruleset is used above where it is bound
# to the TCP/UDP listener definitions
これはついに私の目標を達成し、エラー/警告メッセージはありません。
お役に立てば幸いです。