悩んでいる点、今後手を入れたい点BufferedOutputにしてみたいZoomdataのsource、userなどの扱い憧れ?のfluentを使ってみました。こちらの記事で紹介したZoomdataを最近触っているのですが、お試しにfluentdでデータ流し込むプラグインを作ってみようかなぁと。(今は、Javaでの接続も書いていて、主にそっちを使っています。いうことで、作ってみました。fluent-plugin-zoomdata。基本的にはtagomoris先生のfluent-plugin-growthforecastを参考(パクリ?)にさせてもらいました。作っている最中もここわからんってツイートに反応していただき、大変助かりました。私はベースがJavaの人間なので、手探り状態でRubyを書いています。そこおかしいんじゃないの?とかあればコメントもらえると嬉しいです。ZoomdataのAPIZoomdataのAPIはこんなかんじで、JSONをHTTPSでPOSTするものになります。指定する必要があるものは、以下の項目です。source:Zoomdataのデータ保存先(Zoomdataでのデータを保存する単位。)user:Zoomdataのユーザ名password:ZoomdataのユーザのパスワードJSONデータ:Zoomdataでグラフ化するデータsourceはデータ保存先の名称で、この単位でZoomdataはデータを保存、描画します。fluentdのタグをこれにするとわかりやすいかなぁ?と考えていったん、実装してみています。作成したプログラムを使いつつ、Zoomdataの検証をしたかったので、つぎのような簡単なプログラムを作って動かしてみました。基本的にJavaの人なので、クライアントはJavaで書いてます。CLIプログラムで適当なJSONを作って、fluent-loggerを使って、fluentdに投げ込みます。fluentdにfluent-plugin-zoomdataを設定して、localのZoomdataサーバに対してHTTPSでJSONをPostする仕組みです。(初keynote)利用しているライブラリなどのバージョンは次の通りtd-agent.x86_64:1.1.12-0fluent-logger:0.2.8Zoomdata:1.0.3バグ?で、Zoomdataにいろんなデータを流し込んでみたのですが、つぎのようなエラーが出て、エラーが出力されたあとはZoomdataにデータが流れ込まなくなってしまいました。`timeout'全ログはこちら。問題を調査しないでブログを書いています、すみません。現象ログが発生した時の症状です。想像とりあえず、ログを見た想像、所感です。問題の箇所はfluent-plugin-zoomdataからZoomdataサーバへのデータ送信部分emit処理内部で、HTTPSでデータをPOSTする処理でエラーが起きてリトライ処理とか書いてないので、emitがコケて、その後データが送信されなくなるemitで例外をつかみそこねてるのがあるから止まってる?とまぁ、ちゃんと仕組みを理解しないでRubyとか書くからこうなるんですねぇ。あとでちゃんと調べて考えて、改良してブログ書きます。上記バグとは別に作りの点でいくつか悩んでる点も書いてみます。BufferedOutputにしてみたいfluentdのバッファリングを使って、Zoomdataが落ちていても使えるようにしたいと思っているのでBufferedOutputで書くのがいいのかなぁとか。いいスライドがあったので、読みながらまずは中身を理解してみよう。Zoomdataのsource、userなどの扱い基本的には設定ファイルで切り替えるのが妥当かなぁと思っています。Zoomdataのsourceやuserが増えるたびにfluentdの設定を書き換えて再起動するのかなぁと。userはしょうが無いにしても、sourceは設定じゃない所で切り替えたいなぁと。切り替えるのにつぎの案があるかなぁと。タグで指定(今実装してるもの)メッセージにメタ情報とボディ構造を設ける設定をどんどん増やす(やりたくない)1と3はまぁ、いいかと。2.のパターンはどうなのかなぁと。毎回のメッセージでヘッダ部分が送信されるのはなんだか無駄だなぁというのが否めないので悩ましいところです。1、2の両方対応できるように作るのもありか。1}}ということで、fluent触って遊ぶの楽しいですね。Rubyの勉強にもなりそうだし。頑張ってみようかなぁと。私以外にニーズは無さそうなプラグインですが。