ようへいの日々精進XP

よかろうもん

fluentd から elasticsearch の複数の logstash 形式 index にログを送る為のメモ

はじめに


こうする

logstash_prefix を使う

fluent-plugin-elasticsearchlogstash_prefix を使う。

<source>
  type tail
  path /var/log/nginx/access.log
  pos_file /tmp/nginx.pos
  tag nginx.access
  format nginx
</source>

<match nginx.access.**>
  type copy

  <store>
    type elasticsearch
    include_tag_key true
    tag_key @log_name
    host 127.0.0.1
    port 9200
    logstash_format true
    logstash_prefix nginx01
    flush_interval 10s
  </store>

  <store>
    type elasticsearch
    include_tag_key true
    tag_key @log_name
    host 127.0.0.1
    port 9200
    logstash_format true
    logstash_prefix nginx02
    flush_interval 10s
  </store>

</match>

そうすると...

f:id:inokara:20131130103913p:plain

上記のように任意の名前で且つ logstash 形式でのインデックスが作成された。

スキーマを確認する。

curl -XGET "http://localhost:9200/nginx01-2013.11.30/_mapping?pretty"

以下のように出力される。

そもそも logstash 形式の明確な定義ってなんだろって思って良い資料が無いか調査中。とりあえず、現時点では...

  • [index_name-]YYYY.MM.DD のインデックス名
  • @timestamp が含まれている

ということだろうか...

kibana からも

以下のようにダッシュボード毎にインデックスを指定する。

f:id:inokara:20131130114041p:plain

[nginx01-]YYYY.MM.DD で指定したインデックス。

f:id:inokara:20131130114534p:plain

[nginx02-]YYYY.MM.DD で指定したインデックス。

f:id:inokara:20131130114636p:plain


最後に

今回は同じログを2つのインデックスに放り込んだが、実際の使い方としては複数のログを同じ fluentd で集約しておいてそこからそれぞれのインデックスに分けて保存するという使い方をするほうが実用的かも。