BigQueryにはKibanaのような可視化ツールが付いてないのだけど、Googleスプレッドシートを使うとGoogle Apps ScriptからBigQueryのクエリを呼び出せるので、グラフを描いたり簡単なダッシュボードを作れる。しかし自分でApps Scriptを書くのも面倒! という人のために、コピーしてぽちぽち設定すればすぐに使えるBigQuery DashboardというGoogleスプレッドシートのひな形を作ったので、使い方を簡単に紹介したい。
例えばこんなふうに、セルにSQLを書くと、
こんなグラフが表示されて、定期的に自動更新もできる。Apps Scriptを知らなくてもOK。
なお、BigQueryをまだ試したことない...って人は、この記事を参照のこと。
設定方法
設定方法は以下のとおり。なお、UI表記は英語版のGoogleスプレッドシートをベースとしているのであしからず。。
-
このスプレッドシートを開き、
File
-Make a copy
を選択 - 新たに作成されたスプレッドシートのURLを選択してクリップボードにコピーしておく
-
Tools
-Script editor...
メニューを選択 - スクリプトエディタで
bq_query.gs
を開く。<<PLEASE PUT YOUR SPREADSHEET URL HERE>>
とある部分にURLをペースト - BigQueryで使用しているプロジェクトIDを
<<PLEASE PUT YOUR PROJECT ID HERE>>
の部分にペーストする。File
-Save
メニューを選択して保存 -
Resources
-Advanced Google services
メニューを選択し、BigQuery API
をオンにする - ダイアログ上の
Google Developers Console
リンクをクリック。APIリストが表示されるので、BigQuery API
をクリックし、OFF
からON
に変更する。するとEnabled APIs
リスト上にBigQuery API
が表示される - コンソールを閉じ、ダイアログの
OK
ボタンをクリック
サンプルクエリの実行
このシートにはサンプルクエリが付属しているので、以下の手順で試すことができる。
-
BQ Queries
シートを開く。ここにあるgsod_temparature_LINE
は、米国の過去の気象情報データを集計するサンプルクエリだ -
Dashboard
-Run All BQ Queries
メニューを選択。初回実行時にはAuthorization Required
ダイアログが表示されるので、Continue
およびAccept
ボタンをクリック -
gsod_template
シートが追加される。このシートを開いてクエリ結果が追加されていることを確認 -
BigQuery Dashboard
シートを開いて、グラフが追加されたことを確認
これで準備はOK。
Fluentd+BigQueryデモでダッシュボードを試す
では、Fluentd+BigQueryデモで集めたnginxアクセスログを可視化するダッシュボードを作ってみよう。以下のクエリをBQ Queries
シートに追加し、query nameはaccess_log_LINE
、intervalは1
分に設定しておく。
SELECT
STRFTIME_UTC_USEC(time * 1000000, "%Y-%m-%d %H:%M:%S") as tstamp,
count(*) as rps
FROM bq_test.access_log
GROUP BY tstamp ORDER BY tstamp DESC LIMIT 100;
自動更新の設定手順
グラフの自動更新は以下の手順で設定できる。
- スクリプトエディタを選択し、
Resources
-Current project's triggers
を選択 -
Click here to add one now
をクリック -
Run
メニューからrunQueries
を選び、Events
ではTime-driven
Minutes timer
Every minute
をそれぞれ選択、Save
をクリック -
BQ Queries
シートにてinterval (min)
カラムに1
をセット
これにより、上記クエリが1分ごとに自動実行される。0
をセットすれば自動更新を停止できる。
Apache Benchで負荷テスト
ここまでの設定によりnginxのアクセス数がグラフ表示されるが、ブラウザからぷちぷちアクセスしても面白いグラフは表示されないので、MacやLinuxから以下のコマンドでApache Benchを起動して負荷をかけてみる。なお、YOUR_EXTERNAL_IP
の部分にはGCEインスタンスのExternal IPアドレスを入れる。
$ ab -c 100 -n 1000000 http://YOUR_EXTERNAL_IP/
BigQuery Dashboard
を選択し、Dashboard
- Run All BQ Queries
メニューを選択。access_log
グラフがダッシュボード上に表示されるはずだ。また、1分に1回自動更新されることも確認する。
-
Ctrl+C
を入力してApache Benchを停止する。
ダッシュボードの使い方
このダッシュボードのおもな使い方は以下のとおり。
- query nameで指定した名前のシートがない場合は、新しいシートが作成される
- query nameが
_AREA
,_BAR
,_COLUMN
,_LINE
,_SCATTER
, もしくは_TABLE
で終わる場合は、それぞれに対応したグラフが作成される - query nameが
_AREA_STACKED
,_BAR_STACKED
もしくは_COLUMN_STACKED
で終わる場合は、スタックされたグラフが作成される - クエリの最後に
LIMIT 100
を付け、100行以下に制限する - クエリ結果の最初のカラムはタイムスタンプもしくは日付である必要がある
以上、BigQuery Dashboardの使い方を説明した。英語版のドキュメントは俺の下手な英語を同僚のプレストンがしっかり直してくれた。プレストンあざす!!
Disclaimer この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。