なぜ作ったか
俺は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
でこんな感じに書けばよい。
<match *>
type http
use_ssl true
include_tag true
endpoint_url https://localhost.local/api/
http_method post
serializer form
</match>
use_ssl
をtrue
に設定するとhttps通信になる。ログの各行ごとに指定した送り先にhttpsで送ってくれる。また、イベントログのプロパティにfluentdのタグを含めるinclude_tag
オプションも実装した。これは後でGAS連携時に使う予定。
fluentd > Google Apps Script連携できるね!
fluentとGASの組み合わせってあまり聞かないけど、便利じゃないだろうか? 週末に作ったnginx + norikra on dockerとGoogle Spreadsheetを連携させるとこんな感じ:
Caveats
- さっきできたばっかりだしRuby書いたの数年ぶりなのでバグあるかも
- 各行ごとに1リクエストが飛ぶので、norikraみたいに集計結果をパラパラと送ってくるソースにしか使えない
- SSL接続先の検証はデフォルトでは行わない。コメントアウトしてある
VERIFY_PEER
を入れて、OpenSSL::X509::DEFAULT_CERT_FILE
が指す場所にcert.pem
を置けば検証してくれる - GASで使うとき、doPost()で受けるURLにはGoogleアカウントによる認証はかけられない
Acknowledgements
- ほとんどのコードはentoさんの書いたものです。entoさんあざっす!!