rsyslog が再起動後にログファイルを書き込まない

rsyslog が再起動後にログファイルを書き込まない

まず、この問題を調べるために時間を割いていただき、ありがとうございます。本当に感謝しています。

添付の rsyslog.conf 構成をしばらく実行していましたが、今日、ディスクがいっぱいになったため rsyslog を再起動する必要がありました。その結果、rsyslog は以前のすべての権限 (現在はテストの安全性のため root|root rw) で新しい場所 (.conf ファイルで更新) にログを記録するようになりました。

私が直面している問題は、何を試しても rsyslog がファイルを出力しないことです。tcpdump を実行しましたが、まだデータを受信して​​います。一致基準 (ホスト IP アドレス) は変更されていないはずであり、構成も変更されていません。

どのような助けでも、特に実行できるデバッグ コマンドがあれば、大変助かります。アンインストールして syslog-ng を使用するよりも、新しいもの (rsyslog など) を学習したいです... 設定は次のとおりです。

    ### Modules
$ModLoad imtcp
$ModLoad imudp
$ModLoad imuxsock       # provides support for local system logging (e.g. via logger command)
$ModLoad imklog         # provides kernel logging support (previously done by rklogd)

### Set log file permissions
$FileOwner root
$FileGroup root
$FileCreateMode 0777
$DirCreateMode 0777
$Umask 0022
$PrivDropToUser root
$PrivDropToGroup root

### Listeners
# bind ruleset to tcp listener
$InputTCPServerBindRuleset remote
# and activate it:
$InputTCPServerRun 514

$InputUDPServerBindRuleset remote
$UDPServerRun 514

### Templates
#Format the message correctly
$template MsgFormat,"%msg%\n"

# log every host in its own directory

##$template TESTLOG,"/opt/rsyslog/var/log/test.log"

### Rulesets
# Local Logging
# N/A None required at this point in time
#
# Remote Logging
$RuleSet remote

#---MY MATCHING RULE---#

if ($fromhost-ip == "192.168.1.1") then ?TESTLOG

よろしくお願いします:)

答え1

ログ ファイルにカスタマイズされたパスを使用しているため、selinux がブロックしています。 を発行setenforce 0して rsyslog を再起動してみてください。これで問題が解決した場合、問題は selinux にあったことが確認されます。

selinuxを使い続けながらこれを永久的に修正するには、以下を発行する必要があります。

semanage fcontext -a -t var_log_t '/opt/rsyslog(/.*)?'; restorecon -RF /opt/rsyslog

その後、rsyslog を再起動します。

関連情報