BigQuery への推奨事項のエクスポート
概要
BigQuery へのエクスポートでは、組織に対する推奨事項の日次スナップショットを表示できます。これは、BigQuery Data Transfer Service を使用して行います。エクスポートできるインサイトと推奨事項は次のとおりです。
名前 | Recommender ID |
---|---|
IAM recommender | google.iam.policy.Recommender |
VM マシンタイプ Recommender | google.compute.instance.MachineTypeRecommender |
マネージド インスタンス グループのマシンタイプ Recommender | google.compute.instanceGroupManager.MachineTypeRecommender |
アイドル状態の PD Recommender | google.compute.disk.IdleResourceRecommender |
アイドル状態の VM Recommender | google.compute.instance.IdleResourceRecommender |
アイドル状態のイメージ Recommender | google.compute.image.IdleResourceRecommender |
アイドル状態の IP アドレス Recommender | google.compute.address.IdleResourceRecommender |
Cloud SQL オーバープロビジョニングされたインスタンス Recommender | google.cloudsql.instance.OverprovisionedRecommender |
Cloud SQL アイドル状態のインスタンス Recommender | google.cloudsql.instance.IdleRecommender |
Cloud SQL パフォーマンス Recommender |
google.cloudsql.instance.PerformanceRecommender |
Cloud SQL のアンダープロビジョニング Recommender | google.cloudsql.instance.UnderprovisionedRecommender |
放置されたプロジェクト Recommender | google.resourcemanager.projectUtilization.Recommender |
サービス上限(割り当て)Recommender | google.resourcemanager.serviceLimit.Recommender |
Cloud Run サービス ID Recommender | google.run.service.IdentityRecommender |
GKE 診断 Recommender | google.container.DiagnosisRecommender |
Cloud Billing の費用に関する分析情報 | google.billing.CostInsight |
ファイアウォール インサイト | google.compute.firewall.Insight |
ネットワーク アナライザの分析情報 |
|
始める前に
推奨事項用のデータ転送を作成する前に、次の手順を行います。
- データ転送を管理するために BigQuery Data Transfer Service 権限を付与します。BigQuery ウェブ UI を使用して転送を作成する場合は、ブラウザで
console.cloud.google.com
からのポップアップを許可して権限を表示できるようにする必要があります。詳細については、BigQuery Data Transfer Service の有効化をご覧ください。 - データを保存する BigQuery データセットを作成します。
- データ転送では、データセットを作成するリージョンと同じリージョンが使用されます。データセットと転送が作成された後は、このロケーションは変更できません。
- データセットには、世界中のあらゆるリージョンからの分析情報と推奨事項が含まれます。したがって、このオペレーションでは、処理中にそれらすべてのデータをグローバル リージョンに集約することになります。データ レジデンシーに関する懸念がある場合は、Google Cloud カスタマーケアをご覧ください。
- データセットのロケーションが新しく開始された場合、最初のエクスポート データが利用可能になるまでに時間がかかることがあります。
料金
BigQuery への推奨事項のエクスポートは、Recommender をご利用のすべてのお客様が Recommender の料金階層に基づいて行うことができます。
必要な権限
データ転送を設定する際は、データ転送を作成するプロジェクト レベルで次の権限が必要です。
bigquery.transfers.update
- 転送を作成できます。bigquery.datasets.update
- ターゲット データセットに対するアクションを更新できます。resourcemanager.projects.update
- エクスポート データを保存するプロジェクトを選択できますpubsub.topics.list
- エクスポートに関する通知を受け取るために Pub/Sub トピックを選択できます。
組織レベルで次の権限が必要です。この組織は、エクスポートが設定されている組織に対応しています。
recommender.resources.export
- 推奨事項を BigQuery にエクスポートできます。
費用削減の推奨事項で交渉価格をエクスポートするには、次の権限が必要です。
billing.resourceCosts.get at project level
- プロジェクト レベルの推奨事項で交渉価格をエクスポートできます。billing.accounts.getSpendingInformation at billing account level
- 請求先アカウント レベルの推奨事項で交渉価格をエクスポートできます。
これらの権限がない場合、費用削減の推奨事項は交渉価格ではなく標準価格でエクスポートされます。
権限を付与する
次のロールは、データ転送を作成するプロジェクトに付与する必要があります。
- BigQuery 管理者ロール -
roles/bigquery.admin
- プロジェクト オーナーロール -
roles/owner
- プロジェクト オーナーロール -
roles/owner
- プロジェクト閲覧者ロール -
roles/viewer
- プロジェクト編集者ロール -
roles/editor
- 請求先アカウント管理者ロール -
roles/billing.admin
- 請求先アカウント費用管理者ロール -
roles/billing.costsManager
- 請求先アカウント閲覧者ロール -
roles/billing.viewer
ターゲット データセットに対して転送と更新のアクションを作成するには、次のロールを付与する必要があります。
エクスポート データの保存と、通知を受け取る Pub/Sub トピックの選択のためのプロジェクトを選択する権限を含むロールは複数あります。これらの権限をどちらも使用できるようにするには、次のロールを付与します。
費用削減のプロジェクト レベルの推奨事項で交渉価格をエクスポートするには、billing.resourceCosts.get 権限を含むロールが複数あり、次のいずれかを付与できます。
費用削減の請求先アカウント レベルの推奨事項で交渉価格をエクスポートするには、billing.accounts.getSpendingInformation 権限を含むロールが複数あり、次のいずれかを付与できます。
組織レベルで次のロールを付与する必要があります。
- Google Cloud Console での推奨事項エクスポータ(
roles/recommender.exporter
)ロール。
推奨事項用のデータ転送を作成する
Google Cloud コンソールにログインします。
ホーム画面で、[推奨] タブをクリックします。
[エクスポート] をクリックして BigQuery エクスポート フォームを表示します。
推奨事項データを保存する宛先プロジェクトを選択し、[次へ] をクリックします。
[API を有効にする] をクリックして、エクスポート用の BigQuery API を有効にします。完了には、数秒かかることがあります。設定が完了したら、[続行] をクリックします。
[Configure Transfer] フォームに以下の詳細情報を入力します。
[転送構成名] セクションの [表示名] に、転送名を入力します。転送名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。
[スケジュール オプション] セクションで、スケジュールはデフォルト値([すぐに開始可能])のままにするか、[設定した時間に開始] をクリックします。
[繰り返しの頻度] で、転送を実行する頻度のオプションを選択します。
- 毎日(デフォルト)
- 毎週
- 毎月
- カスタム
- オンデマンド
[開始日と実行時間] に、転送を開始する日付と時刻を入力します。[すぐに開始可能] を選択した場合、このオプションは無効になります。
[転送先の設定] セクションで、宛先データセットには、データを保存するために作成した [データセット ID] を選択します。
[データソースの詳細] セクションで、次の操作を行います。
organization_id のデフォルト値は、現在推奨事項を表示している組織です。推奨事項を別の組織にエクスポートする場合は、組織ビューアのコンソールの上部で変更できます。
(省略可)[通知オプション] セクションで、次の操作を行います。
[作成] をクリックして転送を作成します。
同意のポップアップで [Allow] をクリックします。
転送が作成されると、おすすめハブにリダイレクトされます。リンクをクリックして転送構成の詳細を表示できます。また、次の手順でも転送にアクセスできます。
Google Cloud コンソールの [BigQuery] ページに移動します。
[データ転送] をクリックします。利用可能なすべてのデータ転送を表示できます。
転送の実行履歴を表示する
転送の実行履歴を表示するには、次の手順に沿って操作します。
Google Cloud コンソールの [BigQuery] ページに移動します。
[データ転送] をクリックします。利用可能なすべてのデータ転送を表示できます。
リスト内の該当する転送をクリックします。
[実行履歴] タブに表示されている転送実行のリストで、詳細を表示する転送を選択します。
選択した個別の転送実行に対する [実行の詳細] パネルが表示されます。実行の詳細に表示される可能性がある情報の一部を次に示します。
- ソースデータが利用できないため、転送を延期しました。
- テーブルにエクスポートされた行数を示すジョブ。
- データソースに対する権限がありません。権限を付与し、後でバックフィルをスケジュール設定する必要があります。
データがエクスポートされるタイミング
データ転送を作成した場合は、最初のエクスポートが行われるまで 2 日かかります。最初のエクスポート後、設定時にリクエストした頻度でエクスポート ジョブが実行されます。次の条件が適用されます。
特定の日(D)のエクスポート ジョブは、前日(D-1)のデータを BigQuery データセットにエクスポートします。ただし、これは PST(太平洋標準時)タイムゾーンの場合で、他のタイムゾーンではこれより時間がかかる場合があります。
毎日のエクスポート ジョブは、エクスポート対象のすべてのデータが利用可能になるまで実行されません。その結果、データセットが更新される日時が変動したり、場合によっては遅延が発生したりする可能性があります。そのため、特定の日付のテーブルに対して強い制約や時間的制約などを設けるのではなく、利用可能な最新のデータ スナップショットを使用することをおすすめします。
また、エクスポート データがまだ利用可能でないために転送が保留中であることを示す、次のステータス メッセージが表示されることもあります。エクスポート ジョブは、ソースデータが使用可能になった後に実行されます。
Transfer deferred due to source data not being available
転送のテーブルを表示する
BigQuery に推奨事項をエクスポートした場合、データセットには、日付でパーティション分割された 2 つのテーブルが格納されています。
- recommendations_export
- insight_export
テーブルとスキーマの詳細については、テーブルの作成と使用および、スキーマの指定をご覧ください。
データ転送のテーブルを表示するには、次のようにします。
Google Cloud コンソールの [BigQuery] ページに移動します。
[BigQuery] ページに移動[データ転送] をクリックします。利用可能なすべてのデータ転送を表示できます。
リスト内の該当する転送をクリックします。
[構成] タブをクリックして、データセットをクリックします。
[エクスプローラ] パネルでプロジェクトを展開し、データセットを選択します。[詳細] パネルに説明と詳細が表示されます。データセットのテーブルは、[エクスプローラ] パネルにデータセット名とともに表示されます。
バックフィルのスケジュールを設定する
過去の日付の推奨事項(組織がエクスポートを有効にした日付より後の日付)は、バックフィルをスケジュールすることでエクスポートできます。バックフィルをスケジュールするには、次のようにします。
Google Cloud コンソールの [BigQuery] ページに移動します。
[データ転送] をクリックします。
[転送] ページで、リストから該当する転送をクリックします。
[バックフィルのスケジュール構成] をクリックします。
[バックフィルのスケジュール構成] ダイアログで、[開始日] と [終了日] を選択します。
転送の操作の詳細については、転送の操作をご覧ください。
クエリの例
次のサンプルクエリを使用すると、エクスポートしたデータを分析できます。
推奨事項の費用削減額を表示する(推奨期間は日数で表示)
SELECT name, recommender, target_resources,
case primary_impact.cost_projection.cost.units is null
when true then round(primary_impact.cost_projection.cost.nanos * power(10,-9),2)
else
round( primary_impact.cost_projection.cost.units +
(primary_impact.cost_projection.cost.nanos * power(10,-9)), 2)
end
as dollar_amt,
primary_impact.cost_projection.duration.seconds/(60*60*24) as duration_in_days
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and primary_impact.category = "COST"
未使用の IAM ロールの一覧を表示する
SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and recommender = "google.iam.policy.Recommender"
and recommender_subtype = "REMOVE_ROLE"
より小さいロールに置き換える必要がある、付与済みロールのリストを表示する
SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and recommender = "google.iam.policy.Recommender"
and recommender_subtype = "REPLACE_ROLE"
推奨事項のインサイトを表示する
SELECT recommendations.name as recommendation_name,
insights.name as insight_name,
recommendations.cloud_entity_id,
recommendations.cloud_entity_type,
recommendations.recommender,
recommendations.recommender_subtype,
recommendations.description,
recommendations.target_resources,
recommendations.recommendation_details,
recommendations.state,
recommendations.last_refresh_time as recommendation_last_refresh_time,
insights.insight_type,
insights.insight_subtype,
insights.category,
insights.description,
insights.insight_details,
insights.state,
insights.last_refresh_time as insight_last_refresh_time
FROM `<project>.<dataset>.recommendations_export` as recommendations,
`<project>.<dataset>.insights_export` as insights
WHERE DATE(recommendations._PARTITIONTIME) = "<date>"
and DATE(insights._PARTITIONTIME) = "<date>"
and insights.name in unnest(recommendations.associated_insights)
特定のフォルダに属するプロジェクトの推奨事項を表示する
このクエリは、プロジェクトから最大 5 つのレベルの親フォルダを返します。
SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and "<folder_id>" in unnest(ancestors.folder_ids)
これまでにエクスポートした最新の利用可能日に関する推奨事項を表示する
DECLARE max_date TIMESTAMP;
SET max_date = (
SELECT MAX(_PARTITIONTIME) FROM
`<project>.<dataset>.recommendations_export`
);
SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE _PARTITIONTIME = max_date
スプレッドシートを使用して BigQuery データを調査する
BigQuery でクエリを実行する代わりに、新しい BigQuery データコネクタであるコネクテッド シートを使用して、スプレッドシートの数十億行にのぼる BigQuery データにアクセスし、分析、可視化、共有できます。詳しくは、Google スプレッドシートで BigQuery データを使ってみるをご覧ください。
BigQuery コマンドラインと REST API を使用したエクスポートの設定
-
必要な Identity and Access Management 権限は、Google Cloud Console またはコマンドラインで取得できます。
- サービス アカウントのコマンドライン
- ユーザー向けコマンドライン:
たとえば、コマンドラインを使用してサービス アカウントの組織レベルの recommender.resources.export 権限を取得するには、次のようにします。
gcloud organizations add-iam-policy-binding *<organization_id>* --member=serviceAccount:*<service_acct_name>*' --role='roles/recommender.exporter'
-
Datasource to use: 6063d10f-0000-2c12-a706-f403045e6250
エクスポートを作成します。
bq mk \ --transfer_config \ --project_id=project_id \ --target_dataset=dataset_id \ --display_name=name \ --params='parameters' \ --data_source=data_source \ --service_account_name=service_account_name
ここで
- project_id はプロジェクト ID です。
- dataset は、転送構成のターゲット データセット ID です。
- name は、転送構成の表示名です。転送名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。
- parameters には、作成される転送構成のパラメータを JSON 形式で指定します。推奨事項と分析情報の BigQuery Export では、推奨事項と分析情報をエクスポートする organization_id を指定する必要があります。パラメータの形式: '{"organization_id":"<org id>"}'
- data_source 使用するデータソース: '6063d10f-0000-2c12-a706-f403045e6250'
- service_account_name は、エクスポートの認証に使用されるサービス アカウント名です。サービス アカウントは、転送の作成に使用した
project_id
が所有している必要があります。また、上記の必要な権限がすべて付与されている必要があります。
UI または BigQuery コマンドラインを使用して既存のエクスポートを管理する:
注 - 今後エクスポートの構成を更新するかどうかに関係なく、書き出しはアカウントを設定したユーザーとして実行されます。たとえば、サービス アカウントを使用してエクスポートが設定され、その後ユーザーが BigQuery Data Transfer Service UI を介してエクスポート構成を更新した場合、エクスポートは引き続きサービス アカウントとして実行されます。この場合の recommender.resources.export の権限のチェックは、エクスポートが実行されるたびにサービス アカウントに対して行われます。