Heroku, Rails, BigQueryを使って日付毎にログを保存して、APIエンドポイント毎のコール数を知りたい
なぜ?
WEBページのPVやAUはGoogle Analyticsを見ればわかるが、ページによってはタブの遷移などでURLが割り振られていない動作があり、それはAPIコールの回数を解析することでしか知ることができない。そして解析はSQLを使っていい感じにやりたい。
やりかた : サーバ
参考にさせていただいた以下の記事通りにやればほとんど出来るが一部変更点がある。
変更点
$ heroku drains:add https://my-fluentd-app.herokuapp.com/log -a myapp
→$ heroku drains:add https://my-fluentd-app.herokuapp.com/access_log -a myapp
td-agent.confの一部を以下のように変更した。(pathにクエリパラメータを含めないようにし、テーブル名を変えた)
format /\<.*\>\d (?<strtime>.+)\..* method=(?<method>.+) path=((?<path>[^\?]+)(\?.*)?) host=(?<host>.+) request_id=(?<request_id>.+) fwd=(?<fwd>.+) dyno=(?<dyno>.+) connect=(?<connect>.+) service=(?<service>.+) status=(?<status>.+) bytes=(?<bytes>.+) protocol=https$/
table api_call_%{time_slice}
field_string strtime,path,host,status,method,client,fwd,service,bytes,request_id,dyno,connect
やりかた:BigQuery
SELECT path, COUNT(*) AS count FROM `hogehoge.fugafuga.api_call_*` WHERE _TABLE_SUFFIX BETWEEN '20191001' AND '20191031' GROUP BY path LIMIT 1000