ネットワークエンジニアのアレ

技術情報メインの備忘録ブログです

www.flickr.com

Fluentd+Elasticsearchでindex作成タイミングをJST0時にする

Fluentd →(ログ等)→ Elasticsearchの構成で、Fluentd側の設定を特に意識しないと、デフォルトでJST9時(UTC0時)に新しいindexが作成されます。

これだと、管理上不都合が起きることがあります。

イメージ

※以下のイメージは、アクセスログ等、時系列ログをElasticsearchに登録しているようなケースを想定して書いています

f:id:naitwo2:20171206005352p:plain:w400

hogehoge-20xxxxxxのように、日付でプレフィックスが付与された名前でindexが作成されます。

2017/1/1 JST9:00(UTC0:00)に作成されたindex名は、hogehoge-20170101になります。
※hogehogeは設定ファイルに記述した任意のもの

その日(24時間)のログは1つのindexに入るのが管理上ベストだと思いますが、デフォルトの設定では、前述の通りJST9時(UTC0時)にindexが切り替わるため、上の図のようにindexをまたがってしまいます。

たとえば、1月2日のログが不要になりcloseしたいような場合、厳密に1月2日のログを対象にできません。
hogehoge-20170102indexをcloseすると、1/2 9:00-1/3 8:59のログがcloseされてしまいます。

Fluentdの設定

デフォルトのFluentdの設定イメージは以下の感じです。

# td-agent.conf
 <store>
  type elasticsearch
  host 127.0.0.1
  port 9200
  logstash_format true
  logstash_prefix hogehoge
  flush_interval 3s
  logstash_dateformat %Y%m%d
 </store>

JST0:00にindexを作成する

JST0:00にindexを作成する(※)にはutc_indexオプションを設定ファイルに記述します。 
値はfalseにします。

# td-agent.conf
 <store>
  type elasticsearch
  host 127.0.0.1
  port 9200
  logstash_format true
  logstash_prefix hogehoge
  utc_index false
  flush_interval 3s
  logstash_dateformat %Y%m%d
 </store>

これで、JST0:00に新しいindexが作成されるようになります。 ※インストールサーバで設定しているTimezoneの0時