5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Supershipグループ Advent Calendar 2024Advent Calendar 2024

Day 24

AWS Graviton+Ubuntuでredash構築

Last updated at Posted at 2024-12-23

この記事は、Supershipグループ Advent Calendar 2024の24日目の記事になります。

こんにちは、Supership株式会社のshosho44です。

はじめに

BIツールであるRedashをAWS Graviton + EC2を使用して構築する手順と具体的なコードを紹介します。
基本的に公式が紹介しているUbuntuでの構築方法に沿って構築しており、詰まったポイントの対処法も記載しています。

構築手順

大まかに以下の流れで構築を行います。

  1. EC2インスタンスのコスト把握
  2. EC2インスタンスを立てる
    • VPC作成、subnet作成、EC2インスタンス作成、インターネットゲートウェイアタッチなど(他の記事に詳しいのでこの記事では手順について記載していません)
  3. EC2インスタンスでRedashの環境構築を行う

EC2インスタンスのコスト把握

EC2インスタンスのコストの確認はaws pricing calculatorで行いました。
AWS gravitonとの比較対象としてt2系を選択しましたが、参考にされる場合は求められる非機能要件に沿ってインスタンスファミリーを適宜変更してください。

インスタンス名 オンデマンドの時間単価 vCPU メモリ ストレージ ネットワークパフォーマンス
t2.medium USD 0.0608 2 4GiB EBS のみ 低~中
t4g.medium USD 0.0432 2 4GiB EBS のみ 最大5Gビット

比較した結果、パフォーマンスが変わらなさそうなこと、AWS Gravitonの方がコスト安なことからAWS Graviton t4g.mediumで構築することにしました。

EC2インスタンスでRedashの環境構築を行う

調べた限りではAMIを使用してAWS Graviton上にredash version10を立てることができなさそうでした。(2024/12時点)
そのため、前述した公式から紹介されているUbuntuでの構築方法に沿って構築していきます。
以下のコマンドはすべてEC2にsshして実行します。

aptのアップデート

$ sudo apt update

パッケージのインストール

$ sudo apt -y install docker.io docker-buildx docker-compose-v2
$ sudo apt -y install build-essential curl docker-compose pwgen python3-venv xvfb

ユーザをdockerグループに入れる

$ sudo usermod -aG docker $USER
$ newgrp docker
$ sudo systemctl restart docker
$ sudo chmod 666 /var/run/docker.sock

Node Version Managerのインストール

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

実行終了時、.bashrcに設定を書き込むためのコードがおそらく出てくるのでcli上で実行します。

NodeJS version 18インストール

$ nvm install --lts 18
$ nvm alias default 18
$ nvm use 18

$ nvm list
-> v18.20.5

yarnのインストール

$ npm install -g yarn@1.22.22

redashをgithubからclone

$ git clone https://github.com/getredash/redash
$ cd redash

NodeJS dependenciesインストール

$ yarn
...省略...
error /home/ubuntu/redash/node_modules/puppeteer: Command failed.
Exit code: 1
Command: node install.js
Arguments: 
Directory: /home/ubuntu/redash/node_modules/puppeteer
Output:
The chromium binary is not available for arm64: 
If you are on Ubuntu, you can install with: 

 apt-get install chromium-browser

/home/ubuntu/redash/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserFetcher.js:112
            throw new Error();
            ^

Error
    at /home/ubuntu/redash/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserFetcher.js:112:19

エラーが出るので出力通り以下のコマンドを実行します。

$ apt-get install chromium-browser

再度yarnを行います。

$ yarn
...省略...
no space left on device

容量が足りないというメッセージが出力されました。
こちらの問題はyarnを行う際ではなく次以降の手順で発生する可能性があるため、次の節で対処法を記載します。

コンパイルと実行

$ make build
$ make compose_build
$ docker image list
redash-scheduler ...省略...
...省略...

dockerを立ち上げる

$ make create_database
$ make up
$ docker compose ps
...省略...
redash_email_1       bin/maildev  
...省略...

構築時に起こったno space left on deviceの対処法

結論、EC2起動時にEC2にアタッチされたEBSの容量が足りなかったため拡張して対処しました。
この記事を参考にredashの構築をされている方とエラー原因が違う可能性があるため、エラーが起こった際の調査と具体的な対処法について記載します。

  • 使用容量の確認
$ df
Filesystem ...省略... Use% Mounted on
/dev/root  ...省略... 100% /
  • マウントポイントを確認
$ lsblk
NAME         ...省略... TYPE MOUNTPOINTS
...省略...
nvme0n1      ...省略... disk 
├─nvme0n1p2  ...省略... part /
...省略...

nvme0n1p2がルートディレクトリにマウントされていること、ルートディレクトリの使用率が100%なことを確認しました。
また、AWSのコンソールでnvme0n1がEBSのサイズと同じことを確認しました。
以上からEBSのサイズを上げてnvme0n1p2のサイズを上げたらエラー対処をできるのではとあたりをつけました。

具体的な対処法について記載していきます。

EBSのサイズを上げる

8GB→16GBに変更しました。

EBSのサイズ変更をパーティションに反映

  • filesystemを確認
$ df -T
Filesystem      Type ...省略... Mounted on
/dev/root       ext4 ...省略... /
  • 反映
$ sudo growpart /dev/nvme0n1 2
$ sudo resize2fs /dev/nvme0n1p2

ファイルシステムがext4のため、サイズ変更の反映にresize2fsを使用しました。

  • 反映されているか確認
$ lsblk
NAME         SIZE
...省略...
nvme0n1      16G
├─nvme0n1p2  7G
...省略...
$ df
Filesystem ...省略... Use% Mounted on
/dev/root  ...省略... 47%  /

反映されていることを確認できました。
この状態で失敗したコマンドを再度実行すると成功しました。

アクセス確認

この記事記載の方法で構築したredashは5001番ポートでlistenしているので、5001番を指定してアクセスします。

スクリーンショット 2024-12-23 16.52.39.png

画面を確認できました。

参考資料

https://github.com/getredash/redash/wiki/Local-development-setup
https://qiita.com/hatorijobs/items/c503840c13672e12d188
https://blog.maromaro.co.jp/archives/13848

最後に宣伝です。

Supershipではプロダクト開発やサービス開発に関わる人を絶賛募集しております。
ご興味がある方は以下リンクよりご確認ください。
Supership 採用サイト
是非ともよろしくお願いします。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?