Ubuntu 16.04.5 LTSでrsyslogdを使用します。
次のような状況があります。
(1) デバイスは、syslog を Ubuntu ホストに転送します。 (2)Ubuntuホストは転送されたメッセージを別のログファイルに保存します。 (3)Ubuntuホストはまた、そのメッセージを第3のシステムに転送します。
現在の構成の外観の詳細な説明
(1) /etc/rsyslog.conf で以下の機能が有効になります。
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
(2) 以下の内容で、/etc/rsyslog.d に 30-remotehosts.conf を生成することで実装されます。
:fromhost-ip, isequal, "<sending_IP>" /var/log/remotesyslog/<name>.log
& ~
(3) 以下の内容で、/etc/rsyslog.d に 10-send_to_other_hosts.conf を生成して実装します。
:fromhost-ip, isequal, "<sending_IP>" @<destination_IP>:514
これまでは予想通りうまく動作しています。
しかし、今私たちに必要なのは、目的地に送信する前にログラインを変更することです。
現在の例のログ行は次のとおりです。
Dec 7 11:10:07 srvde450.rce-group.local [S=582442040] [SID=9642c9:20:3850677] 1 RTP packets lost: CID=217 [Code:0x600b] [CID:217] [Time:07-12@10:10:13]
宛先に送信する前に、次のように変更する必要があります。
[S=582442040] [SID=9642c9:20:3850677] 1 RTP packets lost: CID=217 [Code:0x600b] [CID:217] [Time:07-12@10:10:13]
したがって、タイムスタンプとソースが削除されます。
これはどのように達成できますか?
答え1
そのフィールドのみを含むデータのテンプレートを指定すると、これを行うことができますmsg
。ただし、リモートサーバーは結果として非標準行を解析できない可能性があるため、デフォルト設定を使用して処理できない可能性があります。
たとえば、テンプレートを作成します。
$template myedit,"%msg%\n"
フィルターシリーズで使用してください。
:fromhost-ip, isequal, "<sending_IP>" @<destination_IP>:514;myedit
たくさんあります特性このようなmsg
入力から抽出するには、次のようにします。操縦するたとえば、部分文字列%msg:10:$:%
(文字10から最後まで)を取得します。