新着記事

カテゴリーの投稿を見る Re:dash

Re:dash ダッシュボードツールを使って、運営しているあらゆるサービスの数値を1ページで見る

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 で各サーバにつなぎ、数値は全部そこで見る。みたいな運用が理想的だと思います。

検索

最近のツイート

  • ytyng

    ytyng @ytyng

    難病に対する基金が設立されました。 #せりか基金 -宇宙兄弟ALSプロジェクト- https://t.co/zmh8TG1mRq
    1 週間 前

  • 大塚びる@ミス漫画全巻準グランプリ

    大塚びる@ミス漫画全巻準グランプリ @biru_otsuka

    ytyng

    やっと、、やっと、、、注文の仕方を失敗して遅くなったけど漫画全巻ドットコムさん宅からエンジェルハート全巻届きましたー♥️書き下ろしの収納ボックス付♥️マジで幸せ…ありがとう北条司先生…ポイントで買う際は私みたいにならないようにne… https://t.co/u7i7t9C5Gs
    4 週間, 1 日 前

  • ytyng

    ytyng @ytyng

    やっぱり Chrome58から、SSL証明書の CN= 見なくなったんだよね。自分の中で「そんなはずあるのか」と思いながら検証したけどやっぱ見てなくて、SANにドメイン書かないといけないみたい。
    1 ヶ月 前

  • ytyng

    ytyng @ytyng

    Chrome58 自己証明書でエラーが出る話、SHA1の対応廃止とCN=の扱い変わった問題で混乱している。SHA256にして、CN を X509v3 Subject Alternative Name (SAN) に書けば大丈夫なのはわかった。
    1 ヶ月 前

  • ytyng

    ytyng @ytyng

    替わりに、と書いたけど前からか。CN= を見なくなった変更ですね。
    1 ヶ月 前