質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.36%

  • Linux

    4199questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • Amazon EC2

    136questions

    Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

  • Fluentd

    46questions

    Fluentdは、オープンソースのログ収集ツールです。ログの収集方法、ログの記録先などのログデータ処理を柔軟にカスタマイズでき、インプットおよびアウトプットが全てプラグインとして実装されています。

fluentd:日ごとにスライスするファイルが9時間ずれる

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 79

kotekichi

score 3

現象

fluentdで日単位でログをまとめているが、スライス(ローテーション)されたファイルが9:00に作成され、9:00までのログが混じってしまう。

-rw-r--r-- 1 root root  152169 Feb  2 09:00 messages.20190201.log
-rw-r--r-- 1 root root  148755 Feb  3 09:00 messages.20190202.log
-rw-r--r-- 1 root root  155880 Feb  4 08:59 messages.20190203.log

fluentdのバージョンは td-agent 1.2.2
OSは Amazon Linux
localtimeのタイムゾーンは "Asia/Tokyo" を指定しているが、fluentdがlocaltimeをutcと思っていて、勝手にJSTに補正しているような感じがする。
日ごとにログをまとめているので、00:00でスライスされるようにし、ファイル内のログはその日のものだけにしたい。

現在の設定

/etc/td-agent/td-agent.conf

<source>
  @type tail
  format none
  path /var/log/messages
  pos_file /var/log/td-agent/messages.pos
  tag "ss-log.messages"
</source>

<match ss-log.messages.**>
  @type file

  format single_value
  append true
  path /data/system_log/messages.%Y%m%d

  <buffer tag,time>
    @type file
    path /var/tmp/fluent.messages.buffer
    flush_mode interval
    flush_interval 60s
  </buffer>
</match>

試したこと

matchセクションに
timekey_use_utc false
timekey_zone JST-9
などを追加したが改善されず

環境変数「TZ」を追加したが、こちらも改善されず

よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

Fluentd v1.2.4 で修正された不具合があるのでこれかもしれません。

https://github.com/fluent/fluentd/pull/2054
https://github.com/fluent/fluentd/issues/1986

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/05 15:23

    アドバイスありがとうございます。
    ビンゴな感じがしますので、バージョンアップをして試してみます。

    キャンセル

+1

take88さんからの情報提供で活路が開き、まずは最新バージョンへのアップデートを試みましたが、AmazonLinux1の最新バージョンは、インストールバージョンが最新となっており断念。(AmazonLinux2でないと最新バージョンにはならないとのこと)
情報提供のあったサイトのGitソースから、fluentd/plugin/output.rb を置き換えることで解決しました。

修正ソース
https://github.com/okkez/fluentd/blob/92225ca513dee17d5429fa53ed1df3d670d1579f/lib/fluent/plugin/output.rb

上記ソースから作成したパッチデータ

--- output.rb.org       2018-06-25 17:18:05.000000000 +0900
+++ output.rb   2019-02-05 18:40:15.577140674 +0900
@@ -803,20 +803,17 @@
           if !@chunk_key_time && !@chunk_key_tag
             @buffer.metadata()
           elsif @chunk_key_time && @chunk_key_tag
-            time_int = time.to_i
-            timekey = (time_int - (time_int % @buffer_config.timekey)).to_i
+            timekey = calculate_timekey(time)
             @buffer.metadata(timekey: timekey, tag: tag)
           elsif @chunk_key_time
-            time_int = time.to_i
-            timekey = (time_int - (time_int % @buffer_config.timekey)).to_i
+            timekey = calculate_timekey(time)
             @buffer.metadata(timekey: timekey)
           else
             @buffer.metadata(tag: tag)
           end
         else
           timekey = if @chunk_key_time
-                      time_int = time.to_i
-                      (time_int - (time_int % @buffer_config.timekey)).to_i
+                      calculate_timekey(time)
                     else
                       nil
                     end
@@ -825,6 +822,16 @@
         end
       end

+      def calculate_timekey(time)
+        time_int = time.to_i
+        if @buffer_config.timekey_use_utc
+          (time_int - (time_int % @buffer_config.timekey)).to_i
+        else
+          offset = Time.at(time_int).utc_offset
+          (time_int - ((time_int + offset)% @buffer_config.timekey)).to_i
+        end
+      end
+
       def chunk_for_test(tag, time, record)
         require 'fluent/plugin/buffer/memory_chunk'

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.36%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Linux

    4199questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • Amazon EC2

    136questions

    Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

  • Fluentd

    46questions

    Fluentdは、オープンソースのログ収集ツールです。ログの収集方法、ログの記録先などのログデータ処理を柔軟にカスタマイズでき、インプットおよびアウトプットが全てプラグインとして実装されています。