Linux DestroはCentos 6.8です。
rsyslog.conf は次のようになります。
# cat /etc/rsyslog.conf
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
#$ModLoad immark # provides --MARK-- message capability
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$template server-dc, "/scratch/rsyslog/%HOSTNAME%/messages.log"
authpriv.* ?server-dc
*.info,mail.none,authpriv.none,cron.none ?server-dc
$IncludeConfig /etc/rsyslog.d/*.conf
#*.info;mail.none;authpriv.none;cron.none /var/log/messages
#*.* @elk-rsyslog:514
私が理解したいポイントは次のとおりです。
1)
$template server-dc, "/scratch/rsyslog/%HOSTNAME%/messages.log"
enter code here
したがって、上記の行は、/scratch/rsyslog
次のようにメッセージファイルの後にディレクトリ構造を作成するUnixリモートホスト上のすべてのログを渡すrsyslogサーバーのディレクトリパスです。
/scratch/rsyslog/remot1-Ser1/messages.log /scratch/rsyslog/remot1-Ser2/messages.log
したがって、これはうまく機能しますが、同時に次の形式でネットワークログを同じ場所に転送するネットワークデバイスもほとんどありません。
/scratch/rsyslog/Sep/messages.log /scratch/rsyslog/Oct/messages.log
/scratch/rsyslog/network
上記のネットワークログでは、メッセージファイルの後に月の名前でディレクトリが作成されるため、ネットワークログを別のフォルダに収集できるように、rsyslogがネットワークログの別のパスを定義する方法を探しています。これはこれらのログをElasticsearchとして扱っているため、Unixログにワイルドカードを使用していますが、/scratch/rsyslog/*/messages.log
これにはwildcard()が呼び出されるネットワークログも含まれます*
。
それでは、ログが特定のリモートホストまたはIPから出て、rsyslogサーバーの特定のフォルダに移動する必要があるかどうかを知る方法はありますか?
2) ここに$template server-dc, "/scratch/rsyslog/%HOSTNAME%/messages.log"
ログインとは何かを入力してくださいサーバーDCこれは別のホスト名なので、どの目的に使用されますか?または、上記の要件を考慮して関連する名前に変更できますか?
3) 同じ サーバーDC他の構成パラメーターにも含まれます。
予想される
システム、ネットワーク、ファイアウォールなどのログを別の別のディレクトリに転送する方法があるかどうか疑問に思います。
1 -/scratch/rsyslog/system/%HOSTNAME%/messages.log
2 - /scratch/rsyslog/network/%HOSTNAME%/messages.log
サム - /scratch/rsyslog/firewall/%HOSTNAME%/messages.log
答え1
必要な数のテンプレートを使用して、着信メッセージのホスト名またはIPアドレスをテストできます。 sys10やsysabcなど、「sys」で始まるすべての「システム」など、ホスト名がうまく構造化されている場合は、テストの数を減らすことができます。
例えば、
$template mysystems,"/scratch/rsyslog/system/%HOSTNAME%/messages.log"
$template mynets,"/scratch/rsyslog/network/%HOSTNAME%/messages.log"
$template myfirewalls,"/scratch/rsyslog/firewall/%HOSTNAME%/messages.log"
if $fromhost startswith "sys" then -?mysystems
& stop
if $fromhost startswith "net" then -?mynets
& stop
if $fromhost startswith "fw" then -?myfirewalls
& stop
この& stop
行は、前の行と一致するメッセージの追加処理を停止します。次のコマンドを使用してIPアドレスをテストできます。
if $fromhost-ip startswith "192.168." then -?mynets
*.info,...
フィルタを維持するには、上記の内容を変更できます。たとえば、次のようになります。
if $fromhost startswith "sys" then {
*.info,mail.none,authpriv.none,cron.none -?mysystems
& stop
}
ただし、特定の項目を記録したくない場合は、実際にはネットワーク側ではなく送信者でこのフィルタリングを実行する必要があります。メッセージを送信するのはネットワーク帯域幅を無駄にするだけなので、これをフィルタリングして破棄します。
広く見るシステムログ使用しているバージョンを示すマニュアルです。