LoginSignup
11
11

More than 5 years have passed since last update.

今日はfluent-plugin-out-httpsを作った話

Last updated at Posted at 2014-03-03

なぜ作ったか

俺はfluentのログをGoogle Apps ScriptのdoPost()で受け取りたい。そしてGASでグラフを描きたいんだ! しかしdoPost() はhttpsしか受け付けてくれない。

fluentプラグインの一覧を見ても、どうもhttpsで出力するプラグインってなさげ。httpはentoさんのfluent-plugin-out-httpがあるのだけど。

というわけで、今日の午後はentoさんのhttpプラグインをfolkしてhttps版を作ることにした。なんとか動いた。人生初のfluentプラグインだ! わーい\(-o-)/

使い方

githubに置いといた:fluent-plugin-out-https

td-agent/pluginフォルダにout_https.rbを入れて、td-agent.confでこんな感じに書けばよい。

td-agent.conf
<match *>
  type              http
  use_ssl           true
  include_tag       true
  endpoint_url    https://localhost.local/api/
  http_method     post
  serializer      form
</match>

use_ssltrueに設定するとhttps通信になる。ログの各行ごとに指定した送り先にhttpsで送ってくれる。また、イベントログのプロパティにfluentdのタグを含めるinclude_tagオプションも実装した。これは後でGAS連携時に使う予定。

fluentd > Google Apps Script連携できるね!

fluentとGASの組み合わせってあまり聞かないけど、便利じゃないだろうか? 週末に作ったnginx + norikra on dockerとGoogle Spreadsheetを連携させるとこんな感じ:

Untitled.png

Caveats

  • さっきできたばっかりだしRuby書いたの数年ぶりなのでバグあるかも
  • 各行ごとに1リクエストが飛ぶので、norikraみたいに集計結果をパラパラと送ってくるソースにしか使えない
  • SSL接続先の検証はデフォルトでは行わない。コメントアウトしてあるVERIFY_PEERを入れて、OpenSSL::X509::DEFAULT_CERT_FILEが指す場所にcert.pemを置けば検証してくれる
  • GASで使うとき、doPost()で受けるURLにはGoogleアカウントによる認証はかけられない

Acknowledgements

  • ほとんどのコードはentoさんの書いたものです。entoさんあざっす!!
11
11
9

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11