rsyslog:imfileに属性を割り当てる方法は?

rsyslog:imfileに属性を割り当てる方法は?

環境内の他のデバイスのsyslogに対してUDP / 514を受信するようにrsyslogを設定しましたが、通常のUDP / TCP syslogを介して送信できない特定のログがあります。唯一の方法は、ファイルの下から実際のログを送信することです。回転。

UDP接続を介して期待どおりに動作するようにすべてのrsyslogを設定しましたが、今はSCPを使用してコピーされたログファイルを処理し、syslogポートを介して受信したファイルに含めるためにrsyslogを取得する方法を理解しようとしています。

ファイルを一時的な場所にコピーするようにサーバーを設定し、/scp_tmp/[source_ip_address]/syslog.logimfileのドキュメントを読んで、rsyslogがファイルを読み込んで予想ファイルに出力する方法を確認していますが、問題はいくつかのテンプレートが正しく機能するようにプロパティを設定する必要がありますfromhost-ip[source_ip_address]

Bashのパスからこの属性/値を抽出する方法を知っていますが、rsyslogでこれを行う方法はありますか? rsyslog.confはコマンドの置き換えを許可しますか?

メモ:

  • この問題が発生した理由は、サーバーによって生成されたログにホスト名が含まれておらず、構成の柔軟性が制限されたソフトウェアからのものであるため、形式を変更できなかったためです。
  • rsyslogd 8.2004.0の実行
  • RHEL 6.10の実行

答え1

標準属性(例:)は変更できませんfromhost-ip。ただし、ローカル変数を文字列に設定してプロパティとして使用できます。例えば

template(name="abc" type="string" string="note %$.myvar%")
set $.myvar = "this-value";

また、imfileを使用してファイル名を検索できます。メタデータ次のオプションを使用する場合addMetadata:

input(type="imfile"
      File="/my/logs/*.log"
      addMetadata="on")

ファイル名は変数に配置されます$!metadata!filename

したがって、設定をデフォルト値に変更すると

set $.myvar = $fromhost-ip;

これをオーバーライドすると、imfileルールでif $.myvar代わりに使用でき、すべての入力に対して共通のルールを持つことができます。if $fromhost-ip

関連情報