インサイトと推奨事項の 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

始める前に

推奨事項用のデータ転送を作成する前に、次の手順を行うことをおすすめします。

  • データ転送を管理するために BigQuery Data Transfer Service 権限を付与します。BigQuery ウェブ UI を使用して転送を作成する場合は、ブラウザに console.cloud.google.com からのポップアップが表示されることを許可して権限を表示する必要があります。詳細については、BigQuery Data Transfer Service の有効化をご覧ください。
  • データを保存する BigQuery データセットを作成します。
    • すべての推奨事項は米国内のデータセットに移動されます。これは、現時点で米国内のデータセットのみがサポートされているためです。
    • データ転送では、データセットを作成するリージョンと同じリージョンが使用されます。データセットと転送が作成された後は、このロケーションは変更できません。

料金

現在、プレビュー期間中は、Recommender をご利用のすべてのお客様に、推奨事項の BigQuery へのエクスポートを無料でご利用いただけます。一般提供が開始されると、Recommender の料金階層に基づいてご利用いただけます。

必要な権限

データ転送を作成するプロジェクト レベルでは、次の権限が必要です。

  • bigquery.transfers.update - 転送を作成できます。
  • bigquery.datasets.update - ターゲット データセットに対するアクションを更新できます。

データ転送を作成するプロジェクトで、次のいずれかのロールを付与する必要があります。

  • BigQuery 管理者ロール - roles/bigquery.admin
  • 前述の権限を含むカスタムロール

Recommender のエクスポート先の組織レベルでは、次の権限が必要です。

  • recommender.exporter - 推奨事項を BigQuery にエクスポートできます。

この権限を付与するには、次のコマンドを実行する必要があります。

gcloud organizations add-iam-policy-binding *<organization_id>* --member='user:*<user_name>*' --role='roles/recommender.exporter'

制限事項

BigQuery Export 機能が一般提供(GA)されるまで、次の制限が適用されます。

  • BigQuery に推奨事項をエクスポートできるよう、gcloud のみを使用して recommender.exporter 権限を追加してください。
  • コンテンツの概要のデータはまだ移行されていません。
  • 現時点でプロジェクト レベルの推奨事項のみがエクスポートされます。請求先アカウントの CUD の推奨事項のエクスポートは、GA でサポートされます。

推奨事項用のデータ転送の作成

  1. Google Cloud Console にログインします。

    Cloud Console にログインする

  2. ホーム画面で、[推奨事項] タブをクリックします。

  3. [エクスポート] をクリックして BigQuery エクスポート フォームを表示します。

  4. 推奨事項データを保存する宛先プロジェクトを選択し、[次へ] をクリックします。

  5. [API を有効にする] をクリックして、エクスポート用の BigQuery API を有効にします。完了には、数秒かかることがあります。設定が完了したら、[続行] をクリックします。

  6. [Configure Transfer] フォームに以下の詳細情報を入力します。

    • [転送構成名] セクションの [表示名] に、転送名を入力します。転送名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。

    • [スケジュール オプション] セクションで、スケジュールはデフォルト値([すぐに開始可能])のままにするか、[設定した時間に開始] をクリックします。

      • [繰り返しの頻度] で、転送を実行する頻度のオプションを選択します。

        • 毎日(デフォルト)
        • 毎週
        • 毎月
        • カスタム
        • オンデマンド
      • [開始日と実行時間] に、転送を開始する日付と時刻を入力します。[すぐに開始可能] を選択した場合、このオプションは無効になります。

    • [転送先の設定] セクションで、宛先データセットには、データを保存するために作成した [データセット ID] を選択します。

    • [データソースの詳細] セクションで、次の操作を行います。

      • organization_id のデフォルト値は、現在推奨事項を表示している組織です。推奨事項を別の組織にエクスポートする場合は、組織ビューアのコンソールの上部で変更できます。

    • (省略可)[通知オプション] セクションで、次の操作を行います。

      • 切り替えボタンをクリックしてメール通知を有効にします。このオプションを有効にすると、転送の実行が失敗した場合、転送管理者にメール通知が送信されます。
      • [Pub/Sub トピックを選択してください] で、トピック名を選択するか、[トピックを作成する] をクリックします。このオプションで、Pub/Sub の転送実行通知を構成します。

  7. [作成] をクリックして転送を作成します。

  8. 同意のポップアップで [Allow] をクリックします。

  9. 転送が作成されると、おすすめハブにリダイレクトされます。リンクをクリックして転送構成の詳細を表示できます。また、次の手順でも転送にアクセスできます。

    • Cloud Console の [BigQuery] ページに移動します。

      [BigQuery] ページに移動

    • [データ転送] をクリックします。利用可能なすべてのデータ転送を表示できます。

転送の実行履歴の表示

転送の実行履歴を表示するには、次の手順に沿って操作します。

  1. Cloud Console の [BigQuery] ページに移動します。

    [BigQuery] ページに移動

  2. [データ転送] をクリックします。利用可能なすべてのデータ転送を表示できます。

  3. リスト内の該当する転送をクリックします。

  4. [実行履歴] タブに表示されている転送実行のリストで、詳細を表示する転送を選択します。

  5. 選択した個別の転送実行に対する [実行の詳細] パネルが表示されます。実行の詳細に表示される可能性がある情報の一部を次に示します。

    • ソースデータが利用できないため、転送を延期しました。
    • テーブルにエクスポートされた行数を示すジョブ。
    • データソースに対する権限がありません。権限を付与し、後でバックフィルをスケジュールする必要があります。

転送のテーブルの表示

BigQuery に推奨事項をエクスポートした場合、データセットには、日付でパーティション分割された 2 つのテーブルが格納されています。

  • recommendations_export
  • insight_export

テーブルとスキーマの詳細については、テーブルの作成と使用および、スキーマの指定をご覧ください。

データ転送のテーブルを表示するには、次のようにします。

  1. Cloud Console の [BigQuery] ページに移動します。

    [BigQuery] ページに移動

  2. [データ転送] をクリックします。利用可能なすべてのデータ転送を表示できます。

  3. リスト内の該当する転送をクリックします。

  4. [構成] タブをクリックして、データセットをクリックします。

  5. [エクスプローラ] パネルでプロジェクトを展開し、データセットを選択します。[詳細] パネルに説明と詳細が表示されます。データセットのテーブルは、[エクスプローラ] パネルにデータセット名とともに表示されます。

バックフィルのスケジュール設定

過去の日付の推奨事項(組織がエクスポートを有効にした日付より後の日付)は、バックフィルをスケジュールすることでエクスポートできます。バックフィルをスケジュールするには、次のようにします。

  1. Cloud Console の [BigQuery] ページに移動します。

    [BigQuery] ページに移動

  2. [データ転送] をクリックします。

  3. [転送] ページで、リストから該当する転送をクリックします。

    1. [バックフィルのスケジュール構成] をクリックします。

    2. [バックフィルのスケジュール構成] ダイアログで、[開始日] と [終了日] を選択します。

転送の操作の詳細については、転送の操作をご覧ください。

クエリの例

次のサンプルクエリを使用すると、エクスポートしたデータを分析できます。

推奨事項の費用削減額を表示する(推奨期間は日数で表示)

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)