私は、クライアントのすべてのログが1か所に保存されるように、中央サーバーでrsyslogを設定したいのですが、私が抱えている問題は、 httpd」などを別のファイル、つまり「/var/log/httpd.log」に保存します。リモートサーバーにログを送信している間、ファイルは「/ var/log/ip-address of Host/httpd」のように保存する必要があります。 .log 'この2つの問題があります
私の質問を明確にしたいと思います。助けてください。
プログラムに基づいてログを作成するには、クライアント側のようなものを使用する必要があると思います
if $programname == 'httpd' and $syslogseverity <= '6' then /var/log/httpd.log
if $programname == 'httpd' and $syslogseverity <= '6' then ~
私もこの質問を見つけましたが、それは私の問題を完全に解決しません
まず、クライアントからメッセージを受信できるようにrsyslogサーバーを構成する必要があります
サーバーのrsyslog構成ファイルを編集し、次の行が存在することを作成または確認します。
$ModLoad imuxsock
$ModLoad imklog
# provides UDP syslog reception. For TCP, load imtcp. For TCP use InputServerRun 514
$ModLoad imudp
# This will save the log file is a separate directory for each client's IP
$template FILENAME,"/var/log/%fromhost-ip%/syslog.log"
#Create a rule for each application you need to filter, ie: httpd messages
$template HTTPD,"/var/log/%fromhost-ip%/httpd.log"
#Create a separate log rule for the specific application
if $programname == 'httpd' then ?HTTPD
&~
#Dump all remaining messages that do not match the filters created into one file
*.* ?FILENAME
その後、各クライアントに移動して、rsyslog.confファイルに次の行を追加する必要があります。
$ModLoad imuxsock
$ModLoad imklog
# Provides UDP forwarding. For TCP use @@server_ip
*.* @server_ip:514
そして、あなたは準備ができているはずです。クライアントがサーバーに送信するものはすべて、作成したルールでフィルタリングされ、サーバー側で作成したテンプレートに従って、各クライアントのIPアドレスフォルダーのファイルにメッセージが保存されます。