LoginSignup
32
39

Fluentdでそのままログ(生ログ)を転送する

Last updated at Posted at 2018-02-13

概要

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 tailformat 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 fileformat 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
32
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
39