LoginSignup
4
0

Databricks SystemTableのデータを使って監査ログやBillingデータを分析

Last updated at Posted at 2023-07-16

はじめに

前回の記事でUnityCatalogの新機能である SystemTableの機能や有効化する方法をご紹介いたしました。今回はそのデータを使って可視化・分析していきたいと思います。

分析するのにすでに便利なノートブックが用意されておりますので、こちらを利用してご紹介していきます。

セットアップ

上記のサンプルノートブックをセットするために、以下を実行してください。

%pip install dbdemos
import dbdemos
dbdemos.install('uc-04-system-tables')

こちらを実行すると、以下のように必要なノートブックやダッシュボード、データを取得するジョブ、クラスターが作成作成されます。

image.png

ちなみに新規のクラスターを作成したくない場合は、以下のようにするといいようです。(参考記事@manabian)

dbdemos.install(
    'uc-04-system-tables',
    start_cluster = False,
    use_current_cluster = True
)

Billing Table

system.billing.usage のテーブルには、すべてのワークスペースの課金ログが収集されております。それでは、Billing Tableから見ていきましょう。作成されたノートブックのうち、01-blling-tablesのフォルダーを01から実行していきます。

Notebookの中に以下のような注意事項がありました。

価格表に関する注意
価格テーブル(各SKUの$単位の価格情報を含む)は、別のシステムテーブルとしてすぐに利用できるようになる予定です。

その間、ヘルパー関数を使って価格データを挿入しています。このテーブルと以下のクエリはあくまで教育的なものとお考えください。より正確な情報については、契約書を確認してください。

どういうことかというと、DBU(Databricks Units)という単位から価格を計算する際に、SKU単位での単価をかける必要があるのですが、価格の単価テーブルがまだ用意されていないので、今回作成して挿入しているという事で、実際に %run ../_resources/00-setup を実行していますが、この 00-setup内に各単価が記載されており、単価テーブルを作成しておりましたので、ご興味がある方はチェックしてみてください。

最初のノートブックは、実際にJobsやAll PurposeなどSKU毎の検索例などがいくつか載っております。利用方法などをチェックするのに参考になります。

JOBの使用量を確認
image.png

ML(Prophet)を活用した請求予測
02-forecast-billing-tables のノートブックは、MLを活用した請求予測をするノートブックです。以下のイメージ図のように、SKUとWorkspace毎にDailyの使用量を計算して、その時系列データを元に、MLモデルで今後の使用量を予測するというものです。

例えば以下のような結果が確認できます。
image.png

Workflow Job(dbdemos_billing_forecast_init_・・・)としてこのノートブックが登録されているので、Jobをスケジュール実行して、毎日実行するように設定するだけで、予測を日々更新してくれます。

ノートブックをすべて実行すると、上記予測を含めたデータテーブルが作成され、ダッシュボードから確認することができます。ダッシュボードは、dbdemosをセットアップ時に一緒に作成されております。

image.png

監査ログ

DatabricksはLakehouse全体のすべての操作を追跡します。これはガバナンスやLakehouseの利用状況を分析する上で重要です。

これは、system.access.auditテーブルによって可能になります。

このテーブルには以下のような質問に答えるための全ての情報が含まれています:

  • アカウントとワークスペースで実行されたすべての操作
  • Unityカタログオブジェクトに対して実行された操作
  • 誰が何にアクセスしているか
  • いつ誰がテーブルを削除したか
  • 重要なテーブルへのアクセスを監視
  • ...

02-audit-log ノートブックを実行してみてください。以下のような例が確認できます。

Unity Catalogへのアクセスリスト
いつ、誰が、どのテーブルにアクセスしたかわかります。
image.png

Permision変更履歴
いつ、誰がどのような権限変更をしたか確認できます
image.png

Notebook内のcmd7,8のセルで、 created_at というカラムがないとエラーになりましたが、event_time に修正して実行しました

ユーザー数
DailyとMonthlyのアクティブユーザー数の確認
image.png

リネージ情報

system.access.table_lineagesystem.access.column_lineage テーブルにデータが格納されております。

リネージテーブルを使用すると、データ資産のすべてのリネージを追跡および監視できます。

テーブルとカラムのレベルで追跡し、依存関係を見つけ、ワークフロー、SQLクエリ、ダッシュボード、ノートブックなど、テーブルが何を使用しているかを理解することができます。

この情報はデータエクスプローラーUIで直接利用できますが、自動分析を簡単にするためにシステムテーブルとして保存することもできます。

例えば、table_lineageテーブルには以下のような情報が入ってます。
image.png

ダッシュボード

今回のdbdemos(uc-04-system-tables)をインストールすると、ダッシュボードも作成されます。どのような情報が確認出来るかみてみましょう。

日付やワークスペースでフィルタリング出来るようになっており、月々の使用量や来月などの予想まで出してくれます。
image.png
こちらは今後の使用量予想です。SKU単位でも確認できます。
image.png
テーブルやボリュームの数や割合などを確認できます。
image.png

上記のダッシュボードはあくまでサンプルなので、他にもセキュリティに特化した監査ダッシュボードを作成したり、部署毎の使用量などもチェックすることができます。またアラート設定すれば急な利用増加に対しても早急な対策がたてられるでしょう。

ぜひ、System Tableを有効にして運用に活用してみてください。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0