Re:dash とは
リダッシュ。公式サイトはこちらになります。
http://redash.io/
公式サイトには動作可能デモもあるので、試しに触っていただくとわかりやすいと思うのですが、簡潔に言うと
- Webアプリ上で SQL などクエリー文を登録
- 結果を表やグラフで、そのまま表示
- その表やグラフのけっかをまとめて1つのページに組み合わせることができる
というツールです。「ダッシュボード」を作るWebアプリですね。
TORICO では、2016年に Redash を使い始めましたが、使い勝手が良いので継続して使っていきたいです。
オープンソースです。
https://github.com/getredash/redash/
クエリーは定期的に実行してくれます。設定も、「10分ごと」「12時間に1回」「1週間に1回」のようなざっくりした指定ができるのがとても便利です。時刻指定で毎日実行させることもできます。
クエリーはページを表示する毎に実行されるわけではないので、少し重いクエリーでも気兼ねなく実行できます。今までは自前でダッシュボード作って、クエリーをいちいちキャッシュするようなコードを書いてましたが、Redash ではプルダウンから選ぶだけなので簡単で良いです。
グラフ(ビジュアライゼーション) いくつか
棒グラフ、線グラフの他にも、使い勝手の良いビジュアライゼーションがいくつか入っています。
ピボットテーブル
二次元でのクエリ結果… 例えば、日付 ✕ アイテム ✕ 販売数 ですとか、四半期間 ✕ サービス ✕ 売上 のようなクエリ結果を、整形せずともきれいな二次元表として表示できます。
カウンター
ただ数字を表示します。ダッシュボードの上部に、達成率などを表示すると使い勝手が良さそうですね。
コホート表
お客様継続率の表示に使うやつですね。
https://demo.redash.io/queries/67
※デモを見ていただくとわかるのですが、コホートの分析結果 までを自前で作る必要があります。
Redash がやってくれるのは、分析結果から表を生成する所だけです。
ユーザーID と デイリーアクセスのログ だけでは、この表は作れずに、一度分析した結果を DB に格納するとか、それなりの解析ができるクエリーを自分で作らないといけないです。
その他、株価チャートなどに使う箱ひげ図、地図上プロット、パイチャート、XY相関表のようなものを表示できます。
インストール方法
参考: http://docs.redash.io/en/latest/setup.html
AWS、Google Compute Engine でイメージが公開されていますので、これを使うのが一番手っ取り早いでしょう。
上記参考サイトの特定リージョン ( 日本なら ap-northeast-1 ) の、AMI のリンクをクリックして、ボタンをクリックしていけばすぐに出来ます。
Ubuntu 用のプロビジョニングスクリプトが用意されているようなので、Ubuntu であれば自分でインストールも出来なくはなさそうです。
SSL 設定
イメージから立ち上げた場合、nginx が HTTP サーバとなります。
SSL証明書をサーバにコピーし、/etc/nginx/sites-available/redash を修正してその SSL 証明書を使うようにすれば、redash は問題なく HTTPS で動きます。
ドキュメントはこちらです http://docs.redash.io/en/latest/misc/ssl.html
離れたネットワークの DB に接続する
インフラが AWS で完結している場合は、セキュリティグループなんかで権限管理すれば RDS など DB への接続は問題無いと思いますが、AWS の外にあるサーバなどにも繋ぎたい所です。
MySQL over SSL で接続する、などの手も考えられますが、セキュリティ周りの調整がシビアになりそうです。
平文通信を SSHトンネルの中を通すのが簡単でしょう。
常時 SSH トンネルをキープするツールとして、autossh というものがあり便利です。
インストール
$ sudo apt-get install autossh
このように起動します。
$ autossh -M 0 -f -N -L 127.0.0.1:13306:127.0.0.1:3306 user@example.com
-M 0 … 接続確認ポートを使わない
-f … デーモンモード
-N … SSH接続設定
参考: autossh - MQTT and …
この設定の場合、
1. まず、SSH で user ユーザーで example.com ホストへ接続する
2. example.com ホストから見た、127.0.0.1:3306 ポートを、
3. authossh 起動ホストの、127.0.0.1:13306 にバインドする
となります。
この autossh が起動している状態で、redash サーバ上で
$ mysql --host=127.0.0.1 --port=13306 --user=hoge --password
とすれば、接続先の example.com の中で起動している MySQL サーバに、SSH 越しに接続できるというわけです。
※ redash イメージは MySQL クライアントコマンドは入ってないので、実際には上のコマンドは事前に
$ sudo apt-get install mysql-client-core なんかでインストールしておく必要があります。
SSH 秘密鍵の作成
SSH で redashサーバからリモートサーバに接続する際は、SSH キーペアの作成が必要です。
定番ですが一応書いておきます。
redashサーバ上で
$ ssh-keygen -C redash-server@example.com
.ssh/id_rsa
, .ssh/id_rsa.pub
が出来ます。
-C 以下は公開鍵に書き込まれるコメント
id_rsa を上書きしたくない場合は -f でパスを指定
$ ssh-keygen -f ~/secret -C redash-server@example.com
id_rsa.pub
の内容を、接続先サーバの ~/.ssh/authorized_keys
に追記 (ファイルが無ければ作成)
これで、redash から接続先サーバに SSH で接続できるようになります。
アップデート方法
Redash は頻繁にアップデートされていますので、追従してサーバをアップデートするとバグが直ってたり新しい機能が使えたりするので幸せです。
ドキュメント http://docs.redash.io/en/latest/upgrade.html
アップデートの前に、EC2インスタンスのイメージをバックアップのために作っておくと良いでしょう。
アップデートは、mac など手元のPC から fabric を使って行います。fabric は、Python のデプロイツールです。capistrano みたいなやつです。TORICOでも多くのケースで使っています。
$ pip install fabric requests
で fabric をインストールし、
https://gist.github.com/arikfr/440d1403b4aeb76ebaf8
ここから fabfile.py
をダウンロードします。
fabfile.py があるディレクトリ (もしくはそれ以下のディレクトリ) で、
fab -H{your re:dash host} -u{the ssh user for this host} -i{path to key file for passwordless login} deploy_latest_release
このように、deploy_latest_release
を実行すると簡単にアップデートできます。
この fabfile には deploy_latest_release 以外にもいくつかのタスクが登録されています。
タスク一覧を表示するには
$ fab -l
Redash を使ってみての感想
非常に良いです。TORICO では、複数のサービスを様々な環境下でリリースしていますが、それらの数値をまとめて1つのページに簡単に出来るのは便利です。IAM が作られているので環境構築が簡単だというのも良いですね。
会社、もしくは部署で1つ作っておいて、autossh で各サーバにつなぎ、数値は全部そこで見る。みたいな運用が理想的だと思います。