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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Fluentd

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

Q&A

解決済

1回答

9016閲覧

fluentdでbufferファイルのデータを復旧させる方法を教えてください。

usakoyama

総合スコア11

Fluentd

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

0グッド

0クリップ

投稿2016/02/22 05:22

お世話になります。

IoT機器を使ってログデータをTreasureDataへfluentdで送信しています。
エラーとなり、bufferファイルに書き込まれた続ける状態になってしまったのですが
・このバッファファイルのデータをTreasureDataへ送信する方法(復旧方法)。
・今後のエラー対策として、設定にアドバイスあれば
ご教授願いたく。
よろしくお願いいたします。

設定ファイルは以下のような感じです。

<source> type tail format json path /etc/config/fluent/fluent-log pos_file /etc/config/fluent/tail.pos tag td.hoge.opelog_data </source>

<match td..>
type tdlog
apikey myapikey
buffer_type file
buffer_path /etc/config/fluent/myapp.*.buffer
flush_interval 10s
use_ssl true
</match>

エラーログは以下のような感じです。

2016-02-19 02:13:09 +0000 [warn]: temporarily failed to flush the buffer. next_retry=2016-02-19 11:31:40 +0000 error_class="RuntimeError" error="Failed to upload to Treasure Data 'hoge.opelog_data' table: #<SocketError: getaddrinfo: Name or service not known (https://api-import.treasuredata.com:443)> (1457 bytes; 0.542692391 seconds)" plugin_id="object:149370"
2016-02-19 02:13:09 +0000 [warn]: suppressed same stacktrace

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

下記のエラー自体が常に出る状態でなければ、一時的なネットワークの問題で、名前解決ができずに失敗してしまっているようです。

getaddrinfo: Name or service not known

fluentd自体はこうしたエラー時に自動でリトライを行いますので、この後にログ内にretry succeededと表示されていれば問題ありません。

下記がFluentdの障害時の動作について詳しく説明が記載されていますので参考になるかと思います。
http://ogibayashi.github.io/blog/2014/06/04/how-fluentd-works-in-case-of-failures/

また、Fluentdでバッファに溜まってしまったデータを強制的にFlushさせる方法としては、下記のコマンドを実行するとよいです。参考:https://docs.treasuredata.com/articles/td-agent#confirm-data-upload

$ kill -USR1 `cat /var/run/td-agent/td-agent.pid`

今回のデータソースとしては、Jsonファイルになっていますので、仮にFluentdがリトライの失敗を続けて、
リトライやキューの上限を超えたとしても、Treasuredata上のデータを確認してどのレコードまで入っているかを確認して、その部分からJsonファイルを読み直せばデータロストは防げるかと思います。

out_td pluginを利用して、またエラーもTreasureDataに関連していますので、TreasureDataのサポートまで問い合わせていただくと同様の問題の際には対応できますので、お気軽にサポートまでお声がけください。

投稿2016/02/22 06:35

toru-takahashi

総合スコア26

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usakoyama

2016/02/25 05:24

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問