Ruby
AWS
redshift
LivesenseDay 19

AWS Redshiftの運用を楽にするWebコンソールを作った

More than 1 year has passed since last update.

Screen Shot 2016-12-17 at 22.45.46.png


はじめに

AWS Redshiftは、PostgreSQL 8.0.2をベースに作られた列思考DBです。


DWHとして使われることが多く、GCP BigQueryがクエリ課金であるのに対し、AWS Redshiftは時間課金です。そのためRedshiftは、大規模なデータソースに対して高頻度にSQLを実行する場合に、非常にコストを抑えることができる製品です。

一方で、非常に高負荷なSQLが実行されたときに、他のクエリの実行に影響が出たり、はたまたテーブルを定期的にVACUUMしたりと、ある程度のモニタリングや管理が必要になります。

それらのモニタリングを楽にするRedshiftコンソール(Spectrometer)を作ったので、紹介させていただきます。Redshift(赤方偏移)にちなんで、Spectrometer(分光器)という名前です。


機能


  • Digest認証


    • Redshiftの接続ユーザ/パスワードで認証します

      (スーパーユーザ権限が必要です)



  • AWS ClowdWatchのメトリクス表示


    • CPUUtilization、Percentage Disk Space Usedなど



  • Admin View

Admin View
表示内容

Query Timelines
直近の長時間クエリをタイムライン&リスト表示(AWS コンソールのアレに近いもの)

Schema Tables
スキーマとテーブルのリスト

Stats Queries
クエリの実行回数グラフ

WLM Queue state
WLMキューの状態 (STV_WLM_SERVICE_CLASS_STATE)

Inflight Queries
実行中のクエリの表示 & キャンセルの実行

Slow Queries
スロークエリ一覧

Stats Off Tables
統計情報の古いテーブルのリスト (VACUUM & ANALYZEの実行推奨リスト)

Vacuum Results
VACUUMの実行一覧

Cluster Restart
Redshiftクラスタのリスタート履歴

User list
ユーザの名前と直近のクエリ実行回数のリスト表示

Error list
エラー一覧(STL_ERROR)

Load Error list
データロードエラー一覧(STL_LOAD_ERROR)

※ 2016年12月18時点のものです


セットアップ

こちらのREADMEを参考にセットアップしてください。

Redshiftに接続するスーパーユーザの情報をdatabase.ymlに、

AWS CloudWatchからメトリクスを取得するためにaws.ymlの設定が必要です。


蛇足

実は他にもRedshift Consoleという名前そのままのものがありましたが、リポジトリ所有者のEverythingMeが解散してしまっていることと、1年以上メンテナンスされていない様子だったので1から作り直しました。

Livesense Advent Calendar 2016の19日目の記事でした。