2020年最新AWSでRe:Dashを立ち上げてサイトの定点観測を楽にした話


会員数とか購買金額とかサイトのDBに埋もれている情報を可視化して定点観測したいという要望はよくあると思いますが、バッチ起動してメールで送るとか色々やり方ある中でRe:Dashを使うという解決策もあります。
https://redash.io/
Re:DashはRDBなどあらゆるデータソースからの算出結果をダッシュボードにするというサービスです。
ASP使うと最低$48からですが、自分でAWSとかでホスティングすると無料にになります。
詳細な使い方は色んな所で紹介されているので端折りますが、今回はAWS上にRe:Dashのサーバ立ち上げて定点観測のできる状態にしたというやり方について紹介します。AWSでサービス作っている方には便利なサービスと思います。非エンジニアのメンバーにもSQL覚えてもらって自分たちで必要な数値計測をやってもらうという使い方している現場もあるようです。

ポイント

  • 本番サーバに負荷をかけないためDBのリードレプリカを作成
  • サーバにサブドメで名前をつけて覚えやすい名前でアクセスできるように
  • SSL証明書も取ってhttpsでアクセスできるようにする

リードレプリカ

RDSにはワンタッチでリードレプリカ(DBの読み取り専用コピー)が作成できる機能があります。

EC2立ち上げ

AWSでEC2作成でAMI検索する際に「redash ap-northeast1」と入力すると色々と候補が出てくると思います。今回は現時点で最新のVersion8が入っているものを選択しました。ちなみにこのAMIの中身はDockerで構築された環境となるので多少のDocker知識は必要ですが、以下に書いてあることをそのままやれば大丈夫なはずです。

サーバはRedashのサイトにも記載されている通りt2.smallでOKのようです。
https://redash.io/help/open-source/setup#setup-redash-instance-setup
SSHでログインする際にはいつものec2-userは使えずubuntuなのでそちらも注意です。
この時点で立ち上がったサーバのIPでブラウザを立ち上げるとRedashが使えます。まずは管理用アカウントを作成してください。
その上でメールの設定を行います。これやらないとRe:Dashでユーザの新規登録ができません。

$ssh -i .ssh/secret.pem ubuntu@(server-ip)
$cd /opt/redash
$sudo vi env

環境ファイルがあるので以下の行を足します。

REDASH_MAIL_SERVER=smtp.mailserver.jp
REDASH_MAIL_PORT=25
REDASH_MAIL_USE_TLS=false
REDASH_MAIL_USE_SSL=false
[email protected]
REDASH_MAIL_PASSWORD=password
[email protected]
REDASH_HOST=https://someurl.com

反映するためDockerのコンテナを再起動します。
正しくメールの設定が施されているか確認するため下記のコマンドでテストメールを送ります。

$sudo docker-compose up -d
$sudo docker-compose run --rm server manage send_test_mail

ACM

前後しましたが設定したいサブドメインを決めてACMでSSL証明書を作成します。以下リンクを参照。
https://dev.classmethod.jp/articles/certificate-manager-dns-validation-support/

ELB

ACMをサーバに設定するのであればロードバランサー配下じゃないとダメなので新規にELB構築します。以下はクラシックロードバランサーの例です。ポイントはリスナーはHTTPとHTTPSで設定して、インスタンスをバランサーに紐付ける形式にすること。あとはヘルスチェックは/loginといった存在するURLにしてあげる必要があることくらいでしょうか?ヘルスチェックはちゃんと設定しないとNGだと勝手にバランサーからインスタンスが切り離されて接続できないオチになるのできちんとやりましょう。




Route53

ここまで来たら設定したいサブドメインのAレコードにエイリアスとしてバランサーを設定します。

本当はBASIC認証の設定もしたいところですが、気が向いたら続きを書きます。
これだけやるのにある程度知識ある人なら1時間〜2時間でやるかなーと。ネットワークのある程度の知識は必要かもしれません。ではでは。