えいのうにっき

a-knowの日記です

Re:dash を GCE で試してみた

少し前に話題になった、ビジュアライゼーションツールもしくはダッシュボードアプリケーションの Re:dash

redash.io

そもそも Re:dash とは?みたいなところはググってみてほしいんだけど、BigQuery をデータソースとして扱えるという点もあり、すごく気にはなってた。というのも僕は いまさらだけど、Nginx が出力したアクセスログ(ltsv形式)を fluentd 経由で BigQuery に送ってみたよ - えいのうにっき のように、いくつかのログを既に BigQuery にストアさせていたから。

今回、この Re:dash をあれこれ試してみたので、その過程でのメモをここでも公開する。

各種バージョン情報

$ gcloud -v
Google Cloud SDK 117.0.0

bq 2.0.24
bq-nix 2.0.24
core 2016.07.07
core-nix 2016.07.07
gcloud 
gsutil 4.19
gsutil-nix 4.19

あと Re:dash 自体のバージョンは、諸事情(後述)によりちょっと古くて、 0.9.1

前提環境

ここでの前提としては、Google Cloud Platform にアカウント・プロジェクトを作成済みであることと BigQuery にビジュアライズするデータセットがあること、それと gcloud をインストール・初期設定済みであること。

後者について、まだの場合は Quickstart for macOS  |  Cloud SDK Documentation  |  Google Cloud ここらへんを見ながらやることになると思う。

Re:dash セットアップ済みイメージをもとにインスタンスを立てる

https://docs.redash.io/en/latest/setup.html にある通り、様々な方法で Re:dash を準備できるよう、お膳立てをしてくれている。

今回は Google Compute Engine で Re:dash をセットアップしたインスタンスを作ろうと思うので、以下のとおり、コマンドを実行する。

$ gcloud compute images create "redash-091-b1377-bq" \
--source-uri gs://redash-images/redash.0.9.1.b1377-bq.tar.gz
$ gcloud compute instances create <your_instance_name> \
--image redash-091-b1377-bq --scopes storage-ro,bigquery \
--machine-type g1-small

軽い注意点としては、データソースが BigQuery の場合はそれに特化したイメージが用意されているようなので、今回もそれを使っている点。あと、 --machine-typeインスタンスタイプを g1-small にしている点も、かな。デフォルトだと n1-standard-1 なんだけど、それはさすがにちょっと高いかなっていうのと、逆に一番小さい f1-micro だとちょっと荷が重いのかなと思ったからだ(Re:dash は自身のデータストアとして PostgreSQL を持ってると聞いてたので)。その代わりといっちゃなんだけど、zone(リージョンみたいなもん)を asia-east1-a にしておいた。

上記コマンドを叩いて、実行結果と Web コンソールを確認する。

$ gcloud compute images create "redash-091-b1377-bq" \
--source-uri gs://redash-images/redash.0.9.1.b1377-bq.tar.gz
Created [https://www.googleapis.com/compute/v1/projects/
a-know-home/global/images/redash-091-b1377-bq].
NAME                 PROJECT      FAMILY  DEPRECATED  STATUS
redash-091-b1377-bq  a-know-home                      READY
$ gcloud compute instances create a-know-redash \
--image redash-091-b1377-bq --scopes storage-ro,bigquery \
--machine-type g1-small --zone asia-east1-a
Created [https://www.googleapis.com/compute/v1/projects/
a-know-home/zones/asia-east1-a/instances/a-know-redash].
NAME   ZONE  MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP STATUS
a-know-redash  asia-east1-a  g1-small   10.240.0.4   xxx.xxx.xxx.xx  RUNNING

f:id:a-know:20160718124655p:plain

よし。

あとここでもひとつ注意点があって、これはぼくの GCP プロジェクトの設定問題なのかもだけど、このインスタンスはそのままの状態では http(s) でのアクセスを許可していない状態で立ち上がっている。

f:id:a-know:20160718124740p:plain

なので、このインスタンスについての詳細画面の上部メニューから EDIT を選んで、

f:id:a-know:20160718124904p:plain

http を通すようにしてやろう。

f:id:a-know:20160718124941p:plain

この作業は、インスタンスは無停止で行うことができる。

では早速コンソールを...、、と行きたいところだけど、さきほどのセットアップページには以下のように書いてある。

Please note that currently the Google Compute Engine images are for version 0.9.1. After creating the instance, please run the upgrade process and then proceed to “Setup”. -- http://docs.redash.io/en/latest/setup.html

アップグレードとセットアップをしないといけないらしい。

Re:dash のアップグレードについて

https://docs.redash.io/en/latest/upgrade.html という手順ページが用意されているので、基本的にはここで書かれている手順に従うことになる。

内容を軽く確認してみたところ、

が必要らしく、特に後者の fabric に関しては今回のお試しの段階で開発機に入れたくはなかったので、ちょっと気持ち悪いけど、今回は Re:dash のアップグレードはせず、 0.9.1 のバージョンのまま試してみることにする。ごめんよ。

Re:dash のセットアップ

こちらも セットアップのためのページ https://docs.redash.io/en/latest/setup.html が用意されている。ただこれもよく読んでみると、

Once you created the instance with either the image or the script, you should have a running Re:dash instance with everything you need to get started . Re:dash should be available using the server IP or DNS name you assigned to it. You can point your browser to this address, and login with the user “admin” (password: “admin”). But to make it useful, there are a few more steps that you need to manually do to complete the setup: -- http://docs.redash.io/en/latest/setup.html#setup

ユーザー認証をよりセキュアにするためのもののようなので、こちらについても今回は目を瞑る。><

参考までに、このあたりのことについて日本語で解説されている記事を見つけたので、ここらへんを取り組まれる方は参照されたし。ごめんよごめんよ。

qiita.com

ログインしてみる

インスタンス生成完了時に表示された external な IP アドレスをブラウザのアドレスバーに入れて表示させてみる。

f:id:a-know:20160718125120p:plain

表示された。

ログインは、上述のとおり admin:admin で出来てしまう。今回はお試しなので、そのまま入ってみる。「お試しだから」、もはや免罪符である。

f:id:a-know:20160718125211p:plain

いいね!

データソースとして BigQuery を追加してみる

今回この GCE インスタンスを立てた GCP プロジェクトと同じプロジェクト内に、今回 Re:dash でビジュアライズさせようとしている BigQuery データセットもあるので、認証情報のセットとかは何もしなくても連携できるはず。それ用のイメージをわざわざ選択してるわけだし。

ということで、「New Query」をポチッとしてみる。すると以下の様な表示が。

f:id:a-know:20160718125303p:plain

なるほど。 admin Re:dash ユーザーが属するグループに対してパーミッションを設定してやる感じか。てなわけで Manage Group Permissions をクリック。以下の画面に。

f:id:a-know:20160718125343p:plain

admin をクリックすると↓のような Users タブと Groups タブを持つ画面になるので、 Groups タブを開く。

f:id:a-know:20160718125430p:plain

admin グループにデータソースを紐付けする必要があるようだ。すでに BigQuery が選べるのでそれを選択した。

f:id:a-know:20160718125529p:plain

フルアクセスできる必要はないと思ったので、 View Only にしておいた。

クエリを発行してみる

クエリを発行してみる。BigQuery にはあれこれ投げ入れてるんだけど、 active_visitors_count_2016 という、「自分のブログへのその時点での訪問者数」を取っているテーブルがあるので、手始めにこれを使って、 SELECT * FROM [a-know-home:blog_metricks.active_visitors_count_2016] order by time DESC というクエリを投げてみる。(ちなみにこのテーブルの作り方・分割の仕方( _2016 ってやつ)はセオリーに反しているので、マネしないように... orz)

f:id:a-know:20160718125615p:plain

出た出た!

すると出てきた + New Visualization というタブが「俺をクリックしろ!楽しいぞ!!」と僕に語りかけてきたので、迷わずクリック。

f:id:a-know:20160718125713p:plain

うおおおおおお!!

気がついたら、以下の様なグラフができていた。

f:id:a-know:20160718125759p:plain

たっ...、、楽しい...!

ただこの作業、すっごく重かった。インスタンスタイプを下げているのも理由のひとつかもしれないけど、発行したクエリが全期間を対象としたものだった(23万行くらい)ことによる方が大きい気がする。なので、この先の作業はいいかんじに期間を区切ってやることにする。

あとすごいと思ったのは、このグラフのコンテキストメニュー(?)。

f:id:a-know:20160718125913p:plain

パッと見、以下の様なことができる。

  • download plot as a png
  • save and edit plot in cloud
  • Zoom
  • Pan
  • Zoom in & Zoom out
  • Autoscale
  • Show closest data / Compare data on hober

すごい。

いったんこの場では、画面最下部に「Save」ボタンがあるのでそれを押して保存っぽいことをしておく。

ダッシュボードを作ってみる

このままグラフを作りまくりたい衝動を抑えつつ、トップページに戻り、「Create Dashboard」を選択してみる。

ダッシュボード名だけ入力すると、以下のような画面に。

f:id:a-know:20160718130021p:plain

なるほど、ここにさっき作ったようなグラフを貼っつけていくわけね。

f:id:a-know:20160718130104p:plain

はいはい!完全に理解した!!

何故かここから数十分の記憶がなくって、気がついたら↓のようなダッシュボードが出来上がってた。

f:id:a-know:20160718130157p:plain

きっ、気持ちいい!!

これらのデータは Mackerel にも送ってるんだけど、古いデータを Mackerel 上で確認しようとするとその期間に応じた丸め処理をされてしまうので、「どうしてもナマのデータで可視化しなければならない」みたいなときには、Re:dash 、すんごく良いと思う。

今回は期間の指定も固定日付でやっちゃったけど、 WHERE データ日時 > 現在日時 - 3ヶ月 とかっていうクエリにしておけば、ダッシュボードの表示の更新も常に表示時点での時間をもとにした表示になって、いいかんじになるはず。

まとめ

Re:dash、おもしろし!!!

というわけでみんな、とりあえずいろんなデータを BigQuery に投げ入れておくところからはじめよう!(遠)

関連するかもエントリ



follow us in feedly