Redash v10.0.0 から v25.1.0 に大幅アップグレード
はじめに
下記の記事の通り、primeNumber では ECS で Redash を稼働させています。
その後、2021/11/24 の v10.1.0 を最後に停止していた Redash のリリース(v25.1.0)があったのでアップグレードを行いました。(Releases · getredash/redash)
Release v25.1.0 · getredash/redash では v10.1.0 からのアップグレードが記載されています。
v10.0.0 を利用していたので、まずは v10.1.0 にアップグレードし、その後 v25.1.0 にアップグレードしました。
利用者目線での機能差分 by ChatGPT
Redash を v10.1.0 から v25.1.0 にアップデートすることで、ユーザーインターフェースに以下のような改善・変更があります。
🎨 クエリエディタの改善
- クエリ補完(オートコンプリート)の精度が向上し、SQL 編集がより快適に。
- クエリ保存後の画面遷移やボタン配置が改善。
- クエリパラメータの入力 UI が直感的に改善(例:日付入力、ドロップダウンなど)。
📊 ビジュアライゼーションの改良
- チャート編集画面で軸・凡例・色などの設定 UI が整理され、編集しやすく。
- 一部のチャートに新オプション追加(例:凡例の表示位置、データラベルのオンオフ)。
- 日付軸のフォーマット指定の柔軟性が向上。
🧾 ダッシュボード機能の拡張
- ダッシュボード内ウィジェットのリサイズ操作が改善。
- ウィジェットのドラッグ&ドロップ配置がスムーズに。
- テキストウィジェットの Markdown 表示が改良(レイアウト崩れの修正など)。
🔍 クエリ・ダッシュボード検索の改善
- クエリ/ダッシュボードの検索でフィルタや候補の表示が改善。
- タグ機能が強化され、タグでの絞り込みがしやすく。
🌐 UI 表示ラベル・メッセージの改善
- ボタンやエラーメッセージなどの UI 文言がわかりやすく整理。
- 一部通知メッセージが操作ガイド付きの内容に変更。
👤 アカウント・ログイン画面の改善
- ログイン画面でのスタイル不具合が修正。
- パスワード変更の UI が改善され、入力エラー時のメッセージが明確に。
📌 補足
- 管理者向け機能(SAML 認証設定・Docker マイグレーション・セキュリティパッチなど)は本ドキュメントには含んでいません。
- より詳細な技術的な変更については以下を参照ください:
🔗 GitHub 差分(v10.1.0...v25.1.0)
✅ 対象者
- Redash を日常的に利用している一般ユーザー
- クエリ作成者
- ダッシュボードの閲覧・共有を行うユーザー
本稿では Tips を添えて ECS で稼働している Redash のアップグレード手順を説明します。
ECS で稼働している Redash のアップグレード手順
Redash のアップグレードには DB のマイグレーションが不要な場合と必要な場合があります。
今回のアップグレードはちょうど両方のケースを含んでいました。
- v10.0.0 → v10.1.0: DB のマイグレーションが不要
- v10.1.0 → v25.1.0: DB のマイグレーションが必要
今回は具体的なバージョンを示しながら手順を紹介しますが、DB のマイグレーションが必要/不要な場合のアップグレード手順として以降のアップグレードの際にも流用可能な見込みです。
v10.0.0 から v10.1.0 へのアップグレード(DB マイグレーション不要)
ref: Release v10.1.0 · getredash/redash
v10.1.0 から v25.1.0 へのアップグレード(DB マイグレーション必要)
ref: Release v25.1.0 · getredash/redash
- [事前作業] DB マイグレーションタスクのイメージを更新しておく
- [事前作業] Redash 本体のイメージを更新するための PR の Approval を取得しておく
- サービス停止
- DB のバックアップ
- DB のマイグレーション
- アップグレード
- サービス再開
- 動作確認
手順詳細
ECS Service や Task の粒度など、アーキテクチャは過去の記事を参照していただければと思います。
[事前作業] DB マイグレーションタスクのイメージを更新しておく
Redash 本体(server, scheduler, worker など)よりも前に、DB マイグレーションを行う ECS Task のイメージを更新しておきます。
DB マイグレーションは公式では docker-compose run --rm server manage db upgrade
と案内されており、server コンテナでコマンドを実行していることがわかります。
そのため、DB マイグレーションは server の ECS Task をベースに定義しました。
@@ -3,14 +3,8 @@
{
- "name": "server",
- "image": "redash/redash:10.1.0.b50633",
+ "name": "db-migrate",
+ "image": "redash/redash:25.1.0",
"cpu": 0,
- "portMappings": [
- {
- "containerPort": 5000,
- "hostPort": 5000,
- "protocol": "tcp"
- }
- ],
+ "portMappings": [],
"essential": true,
- "command": ["server"],
+ "command": ["manage", "db", "upgrade"],
"environment": [
@@ -70,3 +64,3 @@
"awslogs-region": "ap-northeast-1",
- "awslogs-stream-prefix": "server"
+ "awslogs-stream-prefix": "db-migrate"
}
@@ -76,3 +70,3 @@
],
- "family": "redash-server",
+ "family": "redash-db-migrate",
"networkMode": "awsvpc",
@@ -111,3 +105,3 @@
"key": "Name",
- "value": "redash-server"
+ "value": "redash-db-migrate"
}
[事前作業] Redash 本体のイメージを更新するための PR の Approval を取得しておく
primeNumber では ECS で稼働する Redash の構成管理は Terraform で行っています。
PR がマージされると、terraform apply が実行され、ECS のタスク定義が更新されます。
tf ファイルの管理方法はそれぞれだと思いますので、ECS のタスク定義ベースで説明します。
以下のような差分となるようにしておきます。
@@ -4,3 +4,3 @@
"name": "server",
- "image": "redash/redash:10.1.0.b50633",
+ "image": "redash/redash:25.1.0",
"cpu": 0,
サービス停止
Redash のコンポーネントごとに ECS Service を定義しているため、個別に全て停止します。
公式では docker-compose stop server scheduler ...
のように案内される部分です。
ECS_CLUSTER=redash
SERVICES=(
redash-adhoc-worker
redash-scheduled-worker
redash-scheduler
redash-server
redash-worker
)
for SERVICE in "${SERVICES[@]}"; do
echo "Setting desired count to 0 for $SERVICE..."
aws ecs update-service \
--no-cli-pager \
--cluster "$ECS_CLUSTER" \
--service "$SERVICE" \
--desired-count 0
done
DB のバックアップ
Redash のための DB として RDS(PostgreSQL) を利用しています。
もしアップグレードで問題が発生した際に直前のデータで復旧できるように、明示的に手動でスナップショットを取得しておきます。
Amazon RDS のシングル AZ DB インスタンスの DB スナップショットの作成 - Amazon Relational Database Service
DB のマイグレーション
[事前作業] DB マイグレーションタスクのイメージを更新しておく で更新されたタスク定義を利用して one-shot タスクを実行します。
aws ecs run-task --cluster redash --task-definition "redash-db-migrate:N" --launch-type FARGATE --network-configuration "awsvpcConfiguration={subnets=[subnet-xxxxx],securityGroups=[sg-yyyyy]}"
アップグレード
[事前作業] Redash 本体のイメージを更新するための PR の Approval を取得しておく の PR をマージして、ECS のタスク定義を更新します。
サービス再開
アップグレード を実行するとタスク定義のみでなく、ECS Service も更新されるようになっています。
(Terraform の ECS Service のリソースが ECS Task のリソースに依存するようにしているため)
ECS Service が更新されることで、新しいタスク定義を利用したタスクが起動するため、サービスが再開されることになります。
動作確認
WebUI をぽちぽちして確認するなり、自前のチェックスクリプトを実行するなり、各々の確認方法で動作確認を行います。
さいごに
v10.0.0 から v25.1.0 ということで大幅なアップグレードとなりましたが、特に問題なく完了しました。
v25.1.0 が久しぶりのリリースだったのですが、それも 2025/01/09 だったということで継続的なアップデートが行われているのかは気になるところです。
(私は副業でのジョインではあるのですが) TROCCO を開発する primeNumber では、このような取り組みを行う SRE エンジニアを絶賛募集中とのことです!
取り組んでいる内容の具体例は 2024年ふりかえり 〜SREとSecurityとEMと時々CorpIT〜 などをご参照いただければと思います!
Discussion