環境内の他のデバイスのsyslogに対してUDP / 514を受信するようにrsyslogを設定しましたが、通常のUDP / TCP syslogを介して送信できない特定のログがあります。唯一の方法は、ファイルの下から実際のログを送信することです。回転。
UDP接続を介して期待どおりに動作するようにすべてのrsyslogを設定しましたが、今はSCPを使用してコピーされたログファイルを処理し、syslogポートを介して受信したファイルに含めるためにrsyslogを取得する方法を理解しようとしています。
ファイルを一時的な場所にコピーするようにサーバーを設定し、/scp_tmp/[source_ip_address]/syslog.log
imfileのドキュメントを読んで、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