オープンソースのDashboardツールredash。
postgresからAWS redshiftなど各種DB/DWHの情報をビジュアライズできるツール。
最近ではAirbnb社が開発したsupersetも注目されてますが、流行りのredashをインストールしてみた。
AWS EC2にdockerベースのredashを一から設定して起動するまでのセットアップメモ。
ポイントは以下
- redash、postgresql、nginx、redisで構成
- 全部公式のdockerイメージがある
- docker-composeで簡単一括実行
- 諸々のソースはredash公式のGit Hubリポジトリに公開されている。
※nginxはwebサーバ、postgreはクエリの実行結果やデータの保存、redisはタスクキューに使用するらしい。
###1) EC2に最低限必要なツールをセットアップ
※amazon linux t2microインスタンスを利用
最初のおまじないと、docker & gitインストール
sudo yum update -y
sudo yum install -y docker git
sudo権限なしでdockerコマンドを使えるようにする
sudo usermod -a -G docker ec2-user
exit #一旦ログオフし再接続が必要
docker-composeインストール
※yum install docker-composeとかできると見せかけてできない
※最新バージョンは下記で確認。1.11.2の部分を適宜書き換える。
https://github.com/docker/compose/releases
sudo curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
###2) Git Hubからredash一式をgit close
git clone https://github.com/getredash/redash.git
###3) redashのdocker-compose.ymlを編集
cloneしたredash/docker-compose.ymlを編集する。
もともとのdocker-compose.ymlはプロダクション利用には不向きの設定らしく、redash/docker-compose.production.ymlをコピーし、編集する。
編集ポイントは、postgresqlのvolumeとpassword関連。デフォルトではコメントアウトまたは何も記載がない。
docker-compose.yml
# This is an example configuration for Docker Compose. Make sure to atleast update
# the cookie secret & postgres database password.
#
# Some other recommendations:
# 1. To persist Postgres data, assign it a volume host location.
# 2. Split the worker service to adhoc workers and scheduled queries workers.
version: '2'
services:
server:
image: redash/redash:latest
command: server
depends_on:
- postgres
- redis
ports:
- "5000:5000"
environment:
PYTHONUNBUFFERED: 0
REDASH_LOG_LEVEL: "INFO"
REDASH_REDIS_URL: "redis://redis:6379/0"
REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
REDASH_COOKIE_SECRET: veryverysecret
worker:
image: redash/redash:latest
command: scheduler
environment:
PYTHONUNBUFFERED: 0
REDASH_LOG_LEVEL: "INFO"
REDASH_REDIS_URL: "redis://redis:6379/0"
REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
QUEUES: "queries,scheduled_queries,celery"
WORKERS_COUNT: 2
redis:
image: redis:3.0-alpine
postgres:
image: postgres:9.5.6-alpine
volumes: #コメントアウトを取る
- /home/ec2-user/postgres-data:/var/lib/postgresql/data
environment: #追加する
- POSTGRES_USER:'test'
- POSTGRES_PASSWORD:'pwd'
- POSTGRES_DB:'mydb'
nginx:
image: redash/nginx:latest
ports:
- "80:80"
depends_on:
- server
links:
- server:redash
postgresのデータは永続化するためホストにvolumeマウントする。
上記設定に応じてホスト側にマウントパスディレクトリを作成しておく。
sudo mkdir -p /home/ec2-user/postgres-data
###4) docker-composeでredash(及び関連ツール)起動
docker-compose run --rm server create_db
データベースの初期化
docker-compose up
redash起動
バックグラウンド実行は -d オプションを追加
###5) ブラウザで確認
EC2側で設定したパブリックIP宛にブラウザで起動すると、Redisログインページが表示される。
※EC2のSG等で80番のインバウンドが許可されていること。
###6) CLIでユーザ追加
通常はコンソールからユーザ追加可能だが、メール連携による認証フローが必要。
閉域環境利用など手順を簡略化したい場合は、CLIで追加可能
manage.py users create [メールアドレス(適当)] "[ユーザ名]"
参考)
http://qiita.com/wizpra-koyasu/items/aa8b3fc069816d91ae05
#最新版状況
2019/7時点
・v7.0.0が出た
・docker-compose.production.yamlがなくなっており、redash/setup/docker-compose.yamlを使う
・Utuntu18.04用のセットアップスクリプトが提供されており、構築がもっと簡単に