re:dashセットアップ手順


本記事は[re:dash Advent Calendar 2015](http://qiita.com/advent-calendar/2015/redash)の1日目の記事です。

# 最初に
[re:dash](http://redash.io/)は、オープンソースのデータ可視化・共有プラットフォームです。
多くのデータソースに対応しており、クエリの定期実行や権限制限・APIといった機能が豊富なことに加え、アップデートも活発なため最近注目を浴びています。

データソースは、PostgreSQL(Redshift), MySQL, BigQuery, Graphite, MongoDB, Elasticsearch, InfluxDB, Presto, Hive, Impala, URL, Google Spreadsheets, Pythonコードに対応しています。
特にユニークなのは、URL, Pythonです。
URLは、決められた形式のJSONフォーマット( http://docs.redash.io/en/latest/dev/results_format.html )を返すようにしておけば、データソースとして扱うことが出来ます。
Pythonコードは、URLと同様のJSONフォーマットを返すコードを書いてやるとデータソースとして扱えます。



今回は、re:dashのインストールから、インストール後の設定までを書きたいと思います。


# インストール
re:dashそのものは、pythonと依存ライブラリがあれば起動しますが、実際に使用するには、postgreSQL(クエリの実行結果やデータの保存)、redis(タスクキューで使用)、nginxが必要になります。
AWSやGoogle Compute Engineの場合はセットアップ済みのイメージが用意されているため、それを用いるのが無難です。

それ以外の環境や、専用イメージが嫌いな方は、https://github.com/getredash/redash/tree/master/setup にプロビショニングスクリプトがいくつか用意されているため、都合が合うものを使用してください。
スクリプトによっては、バージョン番号やダウンロードURLが古かったり、自分の環境と異なったりで上手く動かないことがあるので、泣かずに適宜修正します。

今回は、ubuntu用のスクリプトを用いてubuntu15.10にインストールを行いました。
```
$ wget https://raw.githubusercontent.com/getredash/redash/master/setup/ubuntu/bootstrap.sh
$ sudo sh bootstrap.sh
```

自分の環境ではpostgresのバージョンが9.3となっている所を9.4と直す必要がありましたが、あとはすんなりとインストールは行えました。

# アップデート
プロビショニングスクリプトを使った場合は、latestバージョンになっていないと思うので、アップグレードを行います。
アップデートにはfabricを用います。
どの道、頻繁にアップデートをする機会があると思うので、ここでまとめて設定しちゃった方がいいです。

前提として、

- re:dashサーバ上でパスワード無しでsudo出来るユーザがいる
- 上記ユーザでre:dashサーバにSSHログインが出来る
が必要になります。これが気になる人は、fabricスクリプトを修正して使ってください。

```
$ sudo pip install fabric requests
$ wget https://gist.githubusercontent.com/arikfr/440d1403b4aeb76ebaf8/raw/f9ae30f6b0968987a5957aba33bd393e542cb549/fabfile.py
$ fab -H{re:dashサーバのホスト} -u{ログインユーザ名} -i{鍵認証の場合は鍵のパス} deploy_latest_release
```

# 設定
## 初回ログイン
インストール後は80番ポートでアクセスできるようになっているので、ブラウザで表示後、admin/adminでログインします。
/admin/user　にアクセスすると、ユーザ一覧が確認出来るので、デフォルトのadminユーザのEmailアドレスとパスワードを変更します。
その後、ログアウト後、変更後のEmailアドレスとパスワードでログイン出来ることを確認します。

## Google OAuthを使用する場合
Google OAuthを使用する場合は、Google ConsoleでウェブアプリケーションのクライアントIDとクライアントシークレットを取得し、/opt/redash/.envに以下の設定を記述します。

```/opt/redash/.env
export REDASH_GOOGLE_CLIENT_ID="" # Google Consoleで取得したクライアントID
export REDASH_GOOGLE_CLIENT_SECRET="" # Google Consoleで取得したクライアントシークレット
```

会社等でGoogle Appsを使用している場合は、以下の設定でログイン可能なドメインを限定できます。

```/opt/redash/.env
export REDASH_GOOGLE_APPS_DOMAIN="sample.com"
```

パスワード認証をオフにするには、初期ユーザで、googleアカウントユーザのGroupsにadminを追加してやった後に、以下の設定を追加します。

```/opt/redash/.env
export REDASH_PASSWORD_LOGIN_ENABLED=false # パスワードログインを禁止
```

## メールサーバの設定
re:dashでは、クエリの実行結果を条件にして、アラートメールを送信する機能があります(近々、hipchatでの通知も対応するそうです)。
使用する場合は。/opt/redash/.envに以下の設定を記述します。

```/opt/redash/.env
export REDASH_MAIL_SERVER="" # デフォルト値はlocalhost
export REDASH_MAIL_PORT="" # デフォルト値は25
export REDASH_MAIL_USE_TLS="" # デフォルト値はfalse 
export REDASH_MAIL_USE_SSL="" # デフォルト値はfalse 
export REDASH_MAIL_USERNAME="" # デフォルト値はNone
export REDASH_MAIL_PASSWORD="" # デフォルト値はNone
export REDASH_MAIL_DEFAULT_SENDER="" # 送信元Emailアドレス
export REDASH_HOST="" # re:dashサーバのアドレス("https://demo.redash.io"みたいに指定)
```
REDASH_HOSTは、アラートメールのクエリ参照URLを生成するために使います。
そのため、メールを受け取る人がアクセス出来るアドレスにしておきます。

## データソースの設定
admin権限を持つユーザでログインしていると、ヘッダの右側のDBっぽい絵のリンクからデータソース一覧画面に飛び、適宜データソースの追加・編集を行います。
(バージョンが古いと、Data Sourceというテキストリンクになっていると思います。)
一つ注意点としては、re:dashはRedshift対応を謳っていますが、データソースとしてRedshiftという区分は存在しません。
Redshiftを使用する際は、データソースの種別をPostgreSQLした上で必要な情報を記述します。

## 権限の種類の追加
初期状態では、権限はadminとdefaultの2種類しか存在しません。
/admin/group/にアクセスして、必要に応じて権限の追加・編集を行います。

defaultは、登録時に自動的に付与される権限にも関わらず、ダッシュボードやクエリの編集・クエリの実行が行えてしまうので危険極まりないのです。
defaultはview系の権限だけに制限しておくほうが無難かと思います。

# 使う
実際の使用例に関しては、iPROSさんのスライドが参考になります。
http://www.slideshare.net/toyama0919/redash-is-awesome
http://www.slideshare.net/jumpeiyokota1/redash-use-cases-at-ipros

また、[デモサイト](https://demo.redash.io)にも使用例が多く載っているので参考にするといいでしょう。
デモサイトはメールサーバの設定もしてあるため、メールアラートのテストにも使えます。


# 最後に
re:dashは、アップデートの頻度が高いとはいえ、足りない機能や使いづらい部分が少なからずあります。
しかし、ソースコードの量はそれほど多くなく改良も容易な上、PRを積極的に受け入れてくれる雰囲気はあります。
OSS活動をしたことがない方も、re:dashへのコミットをきっかけにOSSをはじめてみませんか?