share facebook facebook2 twitter menu hatena pocket slack

2015.02.23 MON

fluent-plugin-file-alternative の symlink_path メモ

川原 洋平

WRITTEN BY川原 洋平

ども、 cloudpackかっぱ (@inokara) です。

はじめに

fluent-plugin-file-alternative で日付毎にログを吐きたいけど監視ツールからそのログを監視したいと思った時に監視ツールの設定ファイルを日付毎に用意、書き換えるのは現実的ではないと思ったので fluent-plugin-file-alternative で何とか対応出来ないかなと思っていたら symlink_path というオプションがあったので使ってみたメモ。

参考

メモ

プラグインのインストール

/usr/lib64/fluent/ruby/bin/gem install fluent-plugin-file-alternative --no-ri --no-rdoc -V

td-agent.conf

以下のように用意する。

<match kappa.test>
  type forest
  subtype copy
  <template>
    # for debug
    #<store>
    #  type stdout
    #</store>
    <store>
      type file_alternative
      path /opt/logs/test.log
      time_slice_format %Y%m%d_%H
      localtime
      buffer_type file
      buffer_path /var/log/td-agent/buffer/${tag}-buffer
      flush_interval 60s
      output_data_type    json
      output_include_time true
      output_include_tag  true
      add_newline         true
      symlink_path /opt/logs/test.log
    </store>
  </template>
</match>

試す

sudo service td-agent start

しばらく(半日程放置)すると…
fluent-plugin-file-alternative の symlink_path の使い方: 動作確認 (1)

上記例の場合には最新の test.20150217_00.log にリンクが張られるのかなーと思っていたけど、バッファファイルにシンボリックが張られている。

ログの出力が無くなると…
fluent-plugin-file-alternative の symlink_path の使い方: 動作確認 (2) ログの出力がなくなった場合

ログファイルが入ってこない状態でバッファファイルがフラッシュされた状態となるのでリンク切れが発生する。

ログの出力が再開すると…
fluent-plugin-file-alternative の symlink_path の使い方: 動作確認 (3) ログの出力が再開した場合

おお、リンクが復活!
これなら安心!
symlink_path オプション超便利!

ということで…

ログの流入が無い場合にはリンク切れとなってしまうが、ログ監視等でファイルが存在しなければ監視をスキップしてしまう仕組みを入れてしまえば対処出来そうなので時系列でログを保存しつつ最新のログを監視(別のツールで)したい場合等には fluent-plugin-file-alternativesymlink_path オプションは便利!(かも)

元記事はこちらです。
fluentd – fluent-plugin-file-alternative の symlink_path メモ