👁️
Redashをローカルで立ち上げる
モニタリングツールの自作を企てているので,類似サービスの調査の一環で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