Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

なぜ作ったか

俺は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さんあざっす!!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした