web-dev-qa-db-ja.com

rsyslogd:ローカル施設の数を回避する方法はありますか?

ロギングをrsyslogサーバーに送信したいアプライアンスが9〜10個あります。ただし、ローカル施設は8つ(0〜7)しかありません。この制限を回避するにはどうすればよいですか?

7

メッセージにアプリケーション名を記録します。機能ではなくアプリケーション名でフィルタリングします。アプリケーションがsyslogメッセージを直接生成していない場合は、出力フィルター(sedなど)を適用して、必要な方法でメッセージをマッサージできます。

フィルター条件 のRsyslogドキュメントを見て、この動作を構成する方法を確認してください。このページの情報に基づいて、文字列「application1」で始まるメッセージを/var/log/application1に挿入する方法の例を次に示します。

if $msg startswith 'application1' then /var/log/application1

アプリケーションがこれを正しく設定している場合は、プログラム名で明示的にフィルタリングすることもできます。

if $programname == 'application1' then /var/log/application1

rsyslog.conf;では、あらゆる種類の複雑なフィルタリングを実行できます。詳細と例については、ドキュメントをお読みください。

編集:rsyslogはテンプレートを使用して、サーバーごとに個別のファイルを作成できます。次のようなものは、すべてのログメッセージをホスト名ごとに別々のファイルに入れる必要があります。 (これはマンページから削除されています。)

$template DynFile,"/var/log/system-%HOSTNAME%.log
*.*                             ?DynFile

以下は同様ですが、デバッグメッセージをログに記録しません。また、メッセージのホスト名ではなく、接続ホスト名を使用します。 (これは、Obi100からの出力をログに記録するために開発したものに基づいています。)

$template HostFormat,"%timegenerated% %fromhost% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
$template HostFile,"/var/log/system-%fromhost%.log
if $syslogseverity < 7 then -HostFile;HostFormat

より複雑なニーズがある場合、または上記の内容を理解したい場合は、マンページとドキュメントを読んでください。

12
larsks

ホスト名でフィルタリングします。 (各アプライアンスには独自のホスト名が必要です)。必要に応じて、複数のポートでリッスンし、各ポートを個別に処理できます。

ファシリティは、承認、メール、プリンタ、ftpなどのメッセージカテゴリを処理するように設計されています。UUCPはもうあまり使用されていないため、自分の用途に使用する可能性があります。それらは、構成内の他の未使用の機能である可能性があります。ただし、標準のファシリティ値を使用し、他のデータでフィルタリングする方がよいでしょう。

ビットマスク内のビットの名前であるため、24のファシリティがあります。これにより、同じログ内の任意のファシリティセットが集約されます。プロトコルは RFC 5424 で指定されます。

もう1つのフィールドは重大度です。通常、ログには、特定の重大度以上のすべてのログが含まれます。 (より重大な優先度は値が低いため、通常の比較は選択した優先度以下です。)ただし、すべての機能のデバッグメッセージを収集するデバッグログでよく行われるように、特定のファシリティのメッセージを選択できます。

発信元のアプライアンスに関係なく、同じログ内のいくつかの施設のデータを集計することができます。同じメッセージを複数のログファイルに記録するのが一般的です。

3
BillThor