Snowflakeのリソースモニターでクレジット監視を試してみた

2021.08.13

こんにちは!エノカワです。

Snowflakeではリソースの消費に対する支払いにクレジットという測定単位が使用されます。
支払いに直結するため、クレジットの使用状況を確認することが費用を試算する上でポイントになってきます。

こちらの記事ではクレジットの使用状況を確認する方法を試してみました。

クレジットの使用状況は気になりますが、毎日こまめに確認するのは大変ですよね?

Snowflakeではコスト管理を支援するリソースモニターという機能が提供されています。

今回は実際にリソースモニターを使用してクレジット監視を試してみました。

リソースモニター

リソースモニターでは以下で消費されるクレジットの数に制限を課すことができます。

  • ユーザー管理の仮想ウェアハウス
  • クラウドサービスで使用する仮想ウェアハウス

消費したクレジットの数が制限に達するか近くになった場合に、
アラート通知の送信ウェアハウスの一時停止などのさまざまなアクションを実行することができます。

リソースモニター作成画面

それではリソースモニターを作成してみましょう。

ロールの切り替え

リソースモニターはアカウント管理者のみが作成ので、ロールを切り替えておく必要があります。
画面右上のアカウントから「ロールを切り替え」を選択し、ACCOUNTADMINに変更します。

作成画面

「アカウント」メニューから「リソースモニター」を選択します。

「リソースモニターを作成」をクリックします。

リソースモニターの作成画面が表示されました。
この画面で制限するクレジットの数やアクションを設定していきます。

なお、アラート通知を受け取るためには通知受信の有効化を行う必要があります。
作成画面の中央に表示されている「アカウント設定」のリンクから設定することができますが、
今回は後述する別の方法で設定することにします。

アカウント全体のモニター作成

リソースモニターのプロパティを設定していきます。

名前

リソースモニターの名前です。
ACCOUNTADMIN全体をモニターするのでAC_MONITORとします。

クレジットクォータ

割り当てられるクレジットの数です。
ACCOUNTADMIN全体に割り当てるクレジット数は5とします。

モニターレベル

リソースモニターで監視対象とする範囲を指定します。
以下のいずれかを設定することができます。

  • ACCOUNT
    アカウント全体(アカウント内のすべてのウェアハウス)
  • WAREHOUSE
    個々のウェアハウスの特定のセット

本モニターではACCOUNTADMIN全体を監視対象としたいのでACCOUNTを選択します。

スケジュール

モニターの期間や使用済みクレジットのリセット頻度を指定します。
デフォルトのスケジュールでは監視をすぐに開始し、使用済みクレジットは月初めにリセットされます。

「カスタマイズ」をクリックすると以下のような画面が表示され、スケジュールをカスタマイズできます。
今回はカスタマイズせずにデフォルトのままにしておきます。

タイムゾーンも変更できます。

アクションと通知

しきい値に達したときに実行するアクションを指定します。
しきい値はクレジットクォータのパーセンテージとして指定します。

次の3つのアクションをサポートしています。

  • 通知と一時停止
    通知を送信し、ウェアハウスで実行されているすべてのステートメントが完了した後、割り当てられたすべてのウェアハウスを一時停止します。
  • 通知と即時一時停止
    通知を送信し、割り当てられたすべてのウェアハウスを即時一時停止します。
    これにより、その時点でウェアハウスによって実行されていたステートメントがキャンセルされます。
  • 通知
    アクションは実行しませんが、アラート通知を送信します。

今回はそれぞれ90%,100%,50%のしきい値で設定します。

「作成」をクリックすると、アカウント全体のモニターが作成されました!

一覧画面にAC_MONITORが表示されていますね。

個々のウェアハウスのモニター作成

個々のウェアハウスのモニターも作成してみましょう。
一覧画面の左上の「+リソースモニターを作成」をクリックします。

名前はWH_MONITOR、クレジットクォータは1を設定します。
個々のウェハウスをモニターしたいので、モニターレベルはWAREHOUSEを選択します。

対象とするウェアハウスは複数選択することができます。
今回はデモ用に作成していたDEMO_L_WH,DEMO_XL_WHの2つを選択します。
名前の通り、それぞれのウェアハウスサイズはL,XLです。

しきい値の追加

本モニターには通知のみを設定します。

デフォルトでは通知のしきい値は1つしかありませんが、
作成画面の下部にある「+通知のしきい値をさらに追加」をクリックすることで、
しきい値を追加することができます。

また、しきい値は100%以上を指定することが可能です。
100%,120%の2つのしきい値を設定してみましょう。

「作成」をクリックすると、個々のウェアハウスのモニターが作成されました!

一覧画面にWH_MONITORが表示されていますね。

以下のリソースモニターが作成できました。

AC_MONITOR WH_MONITOR
クレジットクォータ 5 1
モニターレベル ACCOUNT WAREHOUSE
通知 50% 100%,120%
一時停止 - 90%
即時一時停止 - 100%

通知受信の有効化

後回しにしていた通知受信の有効化を行います。
通知受信を有効化しておかないと、アラート通知を受け取ることができません。

画面右上のアカウントから「設定」を選択し、設定画面に移動します。

画面左部の「通知」を選択し、通知設定画面を開きます。

通知の受信方法はウェブメールの2通りありますが、両方確認したいのですべてを選択します。

アクションと通知の確認

リソースモニターの作成が完了したので、
ここからは実際にクレジットを消費して通知とアクションがどのように行われるか確認してみましょう。

通知

WH_MONITOR

まずはWH_MONITORの通知を確認してみます。
監視対象になっているウェハアウスDEMO_L_WH,DEMO_XL_WHを使用してクエリをいくつか実行してみます。

・・・【クエリ実行中】・・・

リソースモニターを表示してみます。

WH_MONITORの使用済みクォータが238%になり、バーが赤色になりました。

画面右上の「通知」にバッチが表示されています。クリックしてみましょう。

使用済みのクレジットが133%に達したことによる通知ですね。
同じ内容のメールも受信していました。

ウェブおよびメールによるWH_MONITOR通知が実行されました。

ウェブ、メールともにそれぞれ2つずつ通知がきていました。
WH_MONITORのしきい値には100%,120%の2つを設定していましたが、
大きいサイズのウェアハウスを使用したのですぐに120%を超えてしまい、2つの通知が行われたようです。

AC_MONITOR

AC_MONITORにもしきい値50%で通知を設定しています。
現時点の使用済みクォータは48%なので、引き続きクエリを実行してみましょう。

・・・【クエリ実行中】・・・

リソースモニターを表示してみます。

AC_MONITORの使用済みクォータが61%になり、バーが紫色になりました。

画面右上の「通知」にバッチが表示され、メールも受信していました。
しきい値50%に達したので、通知が実行されたようです。

一時停止

AC_MONITORにはしきい値90%,100%でそれぞれウェアハウスの一時停止即時一時停止を設定しています。
現時点の使用済みクォータは61%なので、引き続きクエリを実行してみましょう。

・・・【クエリ実行中】・・・

リソースモニターを表示してみます。

AC_MONITORの使用済みクオータが103%になり、バーが赤色になりました。

画面右上の「通知」にバッチが表示され、メールも受信していました。
しきい値100%に達したので、通知即時一時停止アクションが実行されたようです。

「ウェアハウス」メニューを選択し、ウェアハウスの状態を確認してみましょう。

ウェアハウスのステータスが一時停止済みになっていますね。

補足

クォータ超過後のクエリ実行

クォータ超過した状態でクエリを実行するとどうなるでしょうか?

実行してみると以下のように表示され、クエリ実行ができませんでした。

クレジットを消費するクエリに制限がかかり、実行できないようになっているようです。
クレジットを消費しないSHOWコマンドなどは実行できました。

リソースモニターの置き換え

リソースモニターが存在する状態で新たにリソースモニターを作成した場合はどうなるでしょうか?

モニターレベルの異なる2つのリソースモニターを新たに作成してみました。

モニターレベル:ACCOUNT

新たに作成するモニターの内容で置き換えられ、以前にモニターされていたすべてのクレジット使用がリセットされる旨の警告が表示されました。

モニターレベル:WAREHOUSE

既にモニターされているウェアハウスは再割り当てされる旨の警告が表示されました。

新たにリソースモニターを作成した後の一覧画面です。
先に作成したAC_MONITOR,WH_MONITORの「レベル」や「ウェアハウス」の項目が空白になっていますね。
新たに作成したACCOUNT_MONITOR,WAREHOUSE_MONITORには値が入っているので、
こちらのモニターに置き換えられたようです。

リソースモニターの編集と削除

一覧画面で対象のモニターを選択した状態で上部にある「編集」「削除」を実行することができます。
編集ではクレジットクォータを増やすことができるので、制限にかかって一時停止していたウェアハウスを再開することができます。

リソースモニター用DDL

リソースモニター用DDLコマンドも用意されています。
作成画面の左下「SQLを表示」をクリックすると、DDLコマンドを使ったSQLを表示することが
できます。

まとめ

以上、リソースモニターによるクレジット監視を試してみました。

画面上の操作で簡単にモニターを設定することができました。
割り当てるクレジット数だけでなく、監視する期間や対象とする範囲(アカウント全体、個々のウェアハウス)
も設定できるので要件に合わせて柔軟に対応できそうだと感じました。

また、しきい値に達した場合に通知だけではなくウェアハウスの即時停止も行うことができるので、
通知の見落としによる使い過ぎ防止にも活用できそうです。

参考