概要
Fluentdで生ログを転送するための設定を残したいと思います。
source側のformat none
だけでいけると思っていたが、それだけではfluentdの標準的なメッセージフォーマットで出力されてしまい、望んでいた出力結果にはならなかった。なので、結論から言いますと、file出力側でformat single_value
を指定することで送信元のログのまま出力されます。
転送元の設定
例)転送するログ
apache.log
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
td-agent.conf
<source>
@type tail
<parse>
@type none
</parse>
path /var/log/apache.log
</source>
<match **>
@type forward
send_timeout 60s
<server>
host xxx.xxx.xxx.xxx
port 24224
</server>
</match>
受信側の設定(ログ出力側)
td-agent.conf
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
<match **>
@type file
<format>
@type single_value
</format>
append true
# 受信したデータを出力ファイル
path /var/log/apache-copy.log
# 日単位に出力
time_slice_format %Y-%m-%d
<buffer>
# バッファタイプはファイル
@type file
# バッファファイルの出力先
path /var/log_buffer/apache-buffer
flush_mode interval
# 60sごとにファイルに書き出す
flush_interval 60s
</buffer>
</match>
ポイント
送信側の@type tail
のformat none
にすること
ファイル出力側でformat none
だけでは、以下のような標準的なfluentdのメッセージフォーマットで出力されます
apache-copy.log
datetime tag {"massage": "127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb.gif HTTP/1.0\" 200 2326"}
受信側の@type file
のformat single_value
にすること
これで転送元のログのままになります
apache-copy.log
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326