Google Cloud VMware Engine、PowerCLI と BigQuery による分析
Google Cloud Japan Team
※この投稿は米国時間 2021 年 8 月 31 日に、Google Cloud blog に投稿されたものの抄訳です。
Google Cloud Billing では、請求先アカウントの管理者が Google Cloud の請求データの BigQuery データセットへのエクスポートを構成し、分析や会社間のビルバック(費用の按分請求)などに利用できるようになっています。デベロッパーは、Google Cloud VMware Engine(GCVE)の構成と使用率データを抽出し、内部費用と価格データをそこへ当てはめることで、GCVE リソースについてのビルバックを可能にするカスタムレポートを作成することができます。Windows PowerShell のモジュールのコレクションである VMware PowerCLI を使用すると、データが抽出され、BigQuery に読み込まれます。BigQuery にデータが読み込まれると、アナリストは Looker や Google スプレッドシートを使用して請求レポートやダッシュボードを作成できます。
Google Cloud の請求データから BigQuery データセットへのデータのエクスポートは、比較的単純な作業です。ただし、GCVE から BigQuery にデータをエクスポートするには PowerShell スクリプトが必要です。以下のブログでは、GCVE からデータを抽出し、レポートや分析のために BigQuery に読み込む手順を詳しくご紹介します。
VMware PowerCLI インストールの初期セットアップ
VMware PowerCLI のインストールと構成の主な要件は PowerShell スクリプトの開発と実行に使用するホストと GCVE プライベート クラウドの間のネットワーク接続であり、比較的簡単なプロセスです。
[オプション A] 開発サーバーとして使用するために、たとえば Windows Server 2019 などの Google Compute Engine インスタンスをプロビジョニングします。
[オプション B] あるいは、Powershell 3.0 以上がインストールされた Windows ノートパソコンを使用します。管理者として Powershell ISE を起動します。VMware PowerCLI や必要な依存関係をインストールして構成し、接続テストを実行します。
参照: https://www.powershellgallery.com/packages/VMware.PowerCLI/12.3.0.17860403
VMware PowerCLI での開発
次に、データを抽出して BigQuery に読み込むスクリプトを開発します。なお、この作業にはデベロッパーにBigQuery データセットの作成、テーブルの作成、データの挿入を行う権限が必要です。コードサンプルを含むプロセスの例を以下に示します。
1. PowerCLI モジュールをインポートし、GVCE クラスタに接続します。
2. (省略可)必要に応じて、vCenter シミュレータの Docker コンテナである nimmis/vcsim : vCenter と ESi API ベースのシミュレータを開発目的に合わせて活用します。vCenter シミュレータを設定する方法について詳しくは、次のリンクをご覧ください。https://www.altaro.com/vmware/powercli-scripting-vcsim/
3. BigQuery のデータテーブルを保存するデータセットを作成します。このデータセットには複数のテーブルを含むことができます。
4. データを収集する vCenter のリストを作成します。
5. ファイル名の変数を作成します。
6. 簡単な VM インベントリの場合は、Get-VM コマンドレットを使用してデータを抽出します。また、Get-VMHost や Get-DataStore など、他のコマンドレットを使用してデータを抽出することもできます。vSphere デベロッパー向けドキュメントで利用可能なコマンドレットの詳しい情報や具体的な例をご確認ください。
7. 必要に応じて、json データを表示 / 検証します。
8. BigQuery でテーブルを作成します。この作業を実行するのは一度だけでかまいません。下の例では、まず .json ファイルを Cloud Storage バケットに読み込み、その後、バケット内のファイルからテーブルを作成しています。
9. BigQuery にファイルを読み込みます。
10. サーバーとの接続を解除します。
11. 開発したスクリプトが必要なスケジュールで実行されるように、Windows タスク スケジューラや cron などのスケジューリング ツールを使用してスケジュール設定することを検討してください。
12. BigQuery UI または Google データポータルを使用して、ステージング テーブルを参照するビューやクエリを作成し、レポート作成や分析に必要なデータを抽出して変換します。費用配賦や部門別のビルバックを可能にするため、BigQuery でコスト分析を行う際に使用する日付ディメンション テーブル、価格スケジュール テーブル、その他の関連するルックアップ テーブルなどのサポート テーブルを作成することをおすすめします。BigQuery に Looker を使用して接続し、レポートやダッシュボードを作成します。
例: Google スプレッドシートから BigQuery に接続し、データをインポートします。
カスタムタグの使用
カスタムタグは、GCVE の管理者が VM を特定のサービスやアプリケーションに関連付けることを可能にし、ビルバックや費用配賦に役立ちます。たとえば、サービス名のカスタムタグが付いている VM(例: x-callcenter)をグループ化して、サービス提供に必要な直接コストを計算できます。ジャンプ ボックスや共有 VM には適宜タグを付け、グループ化することで、共有サービスや間接的な費用の配賦を行うことができます。カスタムタグを、プロビジョニングされている容量、利用されている容量、利用可能な容量などの主要な指標と組み合わせることで、GCVE の管理者はインフラストラクチャを最適化し、予算や会計の要件を満たすことができます。
Cloud Scheduler でスケジュール設定されたサーバーレスな請求データのエクスポート
PowerShell をスケジュールされたタスクとして実行するだけでなく、コンテナ内でスクリプトをホストし、ウェブサービスを使用してスクリプトの実行を可能にすることもできます。解決策としては、次のようなものがあります。
ubuntu 18.04 を実行する Docker ファイルを作成します。Python3、Powershell 7、VmWare Power CLI をインストールします。
requirements.txt の例:
Docker ファイルの例:
2. main.py スクリプトでは、subprocess を使用して PowerShell スクリプトを実行します。コンテナを Container Registry に push し、コンテナをデプロイし、ELT を Cloud Scheduler を使用してスケジュール設定します。
-Google Cloud プロフェッショナル サービス、戦略クラウド エンジニア Konrad Schieban
-Google Cloud プロフェッショナル サービス、戦略クラウド エンジニア Matthew Smith
-Google Cloud プロフェッショナル サービス、戦略クラウド エンジニア Mike Hilton