web-dev-qa-db-ja.com

複数のリモートホストに対するrsyslogサーバーテンプレートの考慮事項

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は、rsyslogサーバー上のディレクトリパスであり、次のようなメッセージファイルに従ってディレクトリ構造を作成するUNIXリモートホストからすべてのログを転送します。

/scratch/rsyslog/remot1-Ser1/messages.log
/scratch/rsyslog/remot1-Ser2/messages.log

したがって、これは問題なく機能しますが、同時に、ネットワークログを以下の形式で同じ場所に転送しているネットワークデバイスもほとんどありません。

/scratch/rsyslog/Sep/messages.log
/scratch/rsyslog/Oct/messages.log

上記のネットワークログの場合、メッセージファイルに続いて月名でディレクトリを作成するので、rsyslogでネットワークログの別のパスを/scratch/rsyslog/networkとして定義して、ネットワークログを次のようにする方法を探しています。別のフォルダに収集されます。この背後にある理由は、これらのログをElasticsearchに処理しているため、UNIXログに/scratch/rsyslog/*/messages.logとしてワイルドカードを使用していますが、これにはワイルドカード(*)であるネットワークログも含まれます。呼ばれた。

したがって、ログが特定のリモートホストから送信されているか、IPがrsyslogサーバーの特定のフォルダーに移動する必要があるかを判断する方法はありますか?

2)ここで$template server-dc, "/scratch/rsyslog/%HOSTNAME%/messages.log"server-dcを置くためのログインは何ですか?これは別のホスト名です。これは何らかの目的を持っていますか、または上記の要件を考慮して関連するものに変更できます。

3)同じserver-dcも別の構成パラメーターに含まれています。

希望

システム、ネットワーク、ファイアウォールなどのログを、のような個別のディレクトリに転送する方法があるかどうかを知りたいだけです。

1-/scratch/rsyslog/system/%HOSTNAME%/messages.log

2-/scratch/rsyslog/network/%HOSTNAME%/messages.log

3-/scratch/rsyslog/firewall/%HOSTNAME%/messages.log

1
Karn Kumar

テンプレートはいくつでも持つことができ、受信メッセージのホスト名または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
}

ただし、一部のアイテムをログに記録したくない場合は、ネットワークのこの端ではなく、送信者でこのフィルタリングを実際に実行する必要があることに注意してください。メッセージを送信するためにネットワーク帯域幅を浪費しているだけで、それをフィルターで除外して破棄します。

広範な rsyslog ドキュメントを参照して、お持ちのバージョンを確認してください。

2
meuh