hotoolong's blog

プログラムのことやエンジニアリングに関することを記事にしています。

Re:dashをAWSに構築してみた

最近まであまりRe:dashのことを認識してなかったけど、結構使われてるのですね。 会社で入れてみたら?という話になり、構築してみました。
Qiitaなどの過去記事が散乱してるので、、
古いAMIから作ってしまったりしてしまったけど、 結局はhelpから探して最新版を入れるのがいいみたい。

構築

https://redash.io/help-onpremise/setup/setting-up-redash-instance.html

私が作ったときのが東京リージョンの以下を選択
ami-34cfe853
ただこれが Re:dashのバージョンが1.01になっている。
最新版ではないので後でバージョンアップする。

EC2のインスタンスは t2.micro で構築してたが、
後で面倒なことになるので small 以上で構築することをおすすめします。

インスタンスが立ち上がったら

アップグレードしておく

cd /opt/redash/current
sudo bin/upgrade

Ubuntuでつくっているからなのか再起動時に/etc/init.d配下に起動スクリプトがないと怒られてしまった。
最後の再起動ができてないだけのようなので、手動で再起動してしまう。

sudo supervisorctl restart redash_server

バージョン確認する。

readlink -f /opt/redash/current

最新になっていることを確認

Google認証でログイン

特定のドメインだけで Google認証でログインさせたかったので

cd /opt/redash/current
sudo -u redash bin/run ./manage.py org set_google_apps_domains {{domains}}

{{domains}}の箇所は適宜設定してくだされ。

このときに外部からcvsをインポートしようとするのかImportErrorとかRedisに書き込めないとかエラーになってしまった。
redash の プロセスを落としてから実行させたらエラーは出なくはなったがそもそもメモリ足りてないっぽいので インスタンスをsmall以上にしておいたほうがいい。
以下エラー内容。

Traceback (most recent call last):
File "/opt/redash/redash.1.0.1.b2833/manage.py", line 6, in <module>
from redash.cli import manager
File "/opt/redash/redash.1.0.1.b2833/redash/__init__.py", line 66, in <module>
import_query_runners(settings.QUERY_RUNNERS)
File "/opt/redash/redash.1.0.1.b2833/redash/query_runner/__init__.py", line 171, in import_query_runners
__import__(runner_import)
File "/opt/redash/redash.1.0.1.b2833/redash/query_runner/big_query.py", line 13, in <module>
from redash.utils import JSONEncoder
File "/opt/redash/redash.1.0.1.b2833/redash/utils/__init__.py", line 2, in <module>
import csv
File "/usr/lib/python2.7/csv.py", line 8, in <module>
from _csv import Error, __version__, writer, reader, register_dialect, \
ImportError: /usr/lib/python2.7/lib-dynload/_csv.x86_64-linux-gnu.so: failed to map segment from shared object
Traceback (most recent call last):
File "/opt/redash/redash.1.0.1.b2833/manage.py", line 6, in <module>
from redash.cli import manager
File "/opt/redash/redash.1.0.1.b2833/redash/__init__.py", line 70, in <module>
reset_new_version_status()
File "/opt/redash/redash.1.0.1.b2833/redash/version_check.py", line 36, in reset_new_version_status
_compare_and_update(latest_version)
File "/opt/redash/redash.1.0.1.b2833/redash/version_check.py", line 49, in _compare_and_update
redis_connection.set(REDIS_KEY, latest_version)
File "/usr/local/lib/python2.7/dist-packages/redis/client.py", line 1072, in set
return self.execute_command('SET', *pieces)
File "/usr/local/lib/python2.7/dist-packages/redis/client.py", line 573, in execute_command
return self.parse_response(connection, command_name, **options)
File "/usr/local/lib/python2.7/dist-packages/redis/client.py", line 585, in parse_response
response = connection.read_response()
File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 582, in read_response
raise response
redis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

データソースの登録

最近のバージョンではデータソースの登録はすべて画面からできるようなので、
再起動できたらアクセスしてみて DatasourceにRDSを追加しておくと、SQLを使って簡単にグラフ化できたりする。

以上、色々データを使ってエンジニア以外の人にもデータを見てもらうには結構便利そう。