👁️

Redashをローカルで立ち上げる

2024/01/31に公開

モニタリングツールの自作を企てているので,類似サービスの調査の一環でRedashを見ることにしたので, その時にやった手順を残してみる

環境

実行環境: M1 Mac

事前セットアップ

[ ] Dockerのインストール
[ ] Node.js version ">14.16.0 <17.0.0"のインストール

Redashのクローン

クローンしてくる

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

環境変数の設定

touch .env
python -c 'import secrets; print(secrets.token_hex())'

以上のコマンドで出力された文字列を.envファイルに書き込む
.env

REDASH_COOKIE_SECRET=

コンテナ立ち上げ

docker compose up -d

データベース作成セットアップ

docker-compose run --rm server create_db

docker-compose run --rm postgres psql -h postgres -U postgres -c "create database tests"

エラー処理

5001ポートにアクセスすると以下のようなエラーが出現.

FileNotFoundError: [Errno 2] No such file or directory: '/app/redash/settings/../../client/dist/index.html'

ページのビルドが済んでなかったようなので以下のコードで解消

sudo npm install --no-optional --legacy-peer-deps
sudo npm run build

サインアップ, ログインを済ませて

テストデータソースの作成

一旦分析したいデータも手元にないので,Mysqlデータベースを作成してそこに適当なデータを放り込んでみる

コンテナ作成

docker-compose.yamlファイルにdbを追加

target_db:
    image: mysql:5.7
    ports:
      - "3306:3306"
    container_name: mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: mysql
      MYSQL_DATABASE: mysql_study
      MYSQL_USER: mysql
      MYSQL_PASSWORD: mysql
    platform: linux/amd64

コンテナを立ち上げ直す

docker copmose down
docker compose up -d

データセットのセットアップ

コンテナに入り込んでデータベースに接続, 使用データベースの選択

docker exec -it container_id bash
mysql -u mysql -p
mysql
use mysql_study;

テーブル作成

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    last_login DATE
);

データ作成

INSERT INTO users (username, email, last_login) VALUES
    ('user1', 'user1@example.com', '2024-01-01'),
    ('user2', 'user2@example.com', '2024-01-02'),
    ('user3', 'user3@example.com', '2024-01-03'),
    ('user4', 'user4@example.com', '2024-01-04'),
    ('user5', 'user5@example.com', '2024-01-05'),
    ('user6', 'user6@example.com', '2024-01-06'),
    ('user7', 'user7@example.com', '2024-01-07'),
    ('user8', 'user8@example.com', '2024-01-08'),
    ('user9', 'user9@example.com', '2024-01-09'),
    ('user10', 'user10@example.com', '2024-01-10'),
    ('user11', 'user11@example.com', '2024-01-11'),
    ('user12', 'user12@example.com', '2024-01-12'),
    ('user13', 'user13@example.com', '2024-01-13'),
    ('user14', 'user14@example.com', '2024-01-14'),
    ('user15', 'user15@example.com', '2024-01-15'),
    ('user16', 'user16@example.com', '2024-01-16'),
    ('user17', 'user17@example.com', '2024-01-17'),
    ('user18', 'user18@example.com', '2024-01-18'),
    ('user19', 'user19@example.com', '2024-01-19'),
    ('user20', 'user20@example.com', '2024-01-20');

Redash画面からデータベースへの接続

ホーム画面からConnect a Data Sourceを選択
Mysqlを選んで, セットアップを行う

そうすると,Query作成画面から以下のようにクエリ文を好き勝手に触れる.

元々はWeb上でのユーザーアクティビティの監視, ユーザーの属性データの取得を主眼に置いていたが, Redashのような外部データとの接続も一緒に開発した方が良さそうだなー

Discussion