VM Manager データの表示

このトピックでは、VM のランタイム情報を表示できるように、Cloud Asset Inventory と VM Manager の OS インベントリを構成する方法について説明します。

始める前に

始める前に、次の手順を行います。

  1. API コマンドを実行するプロジェクトで Cloud Asset Inventory API を有効にします。
    Cloud Asset Inventory API を有効にする

  2. gcloud ツールまたは API を使用して Cloud Asset Inventory API を呼び出すために必要な権限を構成します。

  3. 環境を設定するには、次の手順を実行します。

    gcloud

    gcloud ツールを使用して Cloud Asset Inventory API を呼び出すように環境を設定するには、ローカル クライアントに Cloud SDK をインストールします。

    API

    Unix の curl コマンドで Cloud Asset Inventory API を呼び出すように環境を設定するには、次の手順を行います。

    1. ローカルマシンに oauth2l をインストールし、Google OAuth システムを操作できるようにします。
    2. Unix curl コマンドにアクセスできるかを確認します。
    3. プロジェクト、フォルダ、組織で、次のいずれかのロールがアカウントに付与されていることを確認します。

      • Cloud Asset 閲覧者のロール(roles/cloudasset.viewer
      • オーナーの基本ロール(roles/owner

OS インベントリの有効化

VM Manager スイートの一部である OS インベントリを有効にするには、VM Manager の設定の関連手順を行います。

権限を設定する

エクスポートするアセットを含むルートリソースに対する cloudasset.assets.exportOSInventories 権限がアカウントに付与されていることを確認します。この権限を個別に付与することも、ルートリソースで次のいずれかのロールを付与することもできます。

  • Cloud Asset 閲覧者のロール(roles/cloudasset.viewer
  • Cloud Asset オーナーのロール(roles/cloudasset.owner

詳しくは、権限の構成Cloud Asset Inventory IAM ロールをご覧ください。

BigQuery への VM Manager データのエクスポート

特定のタイムスタンプにおける OS インベントリ スナップショットをエクスポートするには、次の手順を行います。

gcloud

BIGQUERY_TABLE

  gcloud asset export \
     --content-type os-inventory \
     --project 'PROJECT_ID' \
     --snapshot-time 'SNAPSHOT_TIME' \
     --bigquery-table 'BIGQUERY_TABLE' \
     --output-bigquery-force

ここで

  • PROJECT_ID は、メタデータをエクスポートするプロジェクトの ID です。このプロジェクトは、エクスポートの実行元のプロジェクトまたは別のプロジェクトに設定できます。
  • SNAPSHOT_TIME(省略可)は、アセットのスナップショットを作成する時刻です。値は、現在の時刻または過去の時刻に指定する必要があります。デフォルトでは、現在の時刻にスナップショットが作成されます。時刻形式の詳細については、gcloud topic datetimes をご覧ください。
  • BIGQUERY_TABLE は、メタデータのエクスポート先のテーブルです。形式は projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME です。
  • --output-bigquery-force は、宛先テーブルが存在する場合に宛先テーブルを上書きします。

組織またはフォルダのアセットをエクスポートするには、--project の代わりに次のいずれかのフラグを使用します。

API

gcurl -d '{"contentType":"OS_INVENTORY", \
  "outputConfig":{ \
    "bigqueryDestination": { \
      "dataset": "projects/PROJECT_ID/datasets/DATASET_ID",\
      "table": "TABLE_NAME", \
      "force": true \
    } \
  }}' \
  https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:exportAssets

詳細については、exportAssets メソッドをご覧ください。

Cloud Storage への VM Manager データのエクスポート

VM インスタンスの VM Manager インスタンス インベントリをエクスポートするには、次の gcloud ツールコマンドを実行します。

gcloud

gcloud asset export \
 --content-type os-inventory \
 --project PROJECT_ID \
 --output-path "gs://YOUR_BUCKET/NEW_FILE"

API

gcurl -d '{"contentType":"OS_INVENTORY", "outputConfig":{ \
          "gcsDestination": {"uri":"gs://YOUR_BUCKET/NEW_FILE"}}}' \
          https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:exportAssets

詳細については、exportAssets メソッドをご覧ください。

VM Manager のデータ履歴の取得

Cloud Asset API を使用して、プロジェクト内の指定したアセットの特定期間内の作成履歴、削除履歴、更新履歴を取得するには、以下の手順に従います。

gcloud

プロジェクト内の指定したアセットのすべての OS インベントリの履歴を取得するには、次のコマンドを実行します。

YESTERDAY=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ" -d "yesterday")
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset get-history --project='PROJECT_ID' \
  --asset-names='//compute.googleapis.com/projects/my_project_number/global/instances/instancel' --start-time=$YESTERDAY \
  --end-time=$NOW \
  --content-type='os-inventory'
 

API

このセクションで示しているコマンドは、プロジェクトの履歴を取得します。組織の履歴を取得するには、gcurl コマンドで https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_NUMBER:batchGetAssetsHistory REST メソッドを使用します。

  1. アカウントの構成を完了して、Cloud Asset API を呼び出せるか確認します。
  2. 履歴を検索するアセットの完全なリソース名を確認します。Cloud Asset API 形式の名前の一覧については、こちらをご覧ください。次の例では、//compute.googleapis.com/projects/my_project_number/global/instances/instancel を使用しています。
  3. 期間の開始時間と終了時間(RFC 3339 UTC 形式)を決定します。 開始時間のみが必須です。詳細については、TimeWindow をご覧ください。
  4. アセットの履歴を取得するレベルを決定します。次のコマンドの例は、各種アセットの履歴を取得する方法を示しています。

アクセス トークンを取得するには、~/credentials.json ファイルで次のコマンドを実行します。

oauth2l header --json ~/credentials.json cloud-platform

次のような出力が表示されます。y29.xxxxxx はアクセス トークンです。

Authorization: Bearer y29.xxxxxxx

TOKEN 変数をアクセス トークンに設定します。

TOKEN=y29.xxxxxxx

プロジェクト内の指定したアセットのすべての OS インベントリの履歴を取得するには、次のコマンドを実行します。

YESTERDAY=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ" -d "yesterday")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
     -d '{"contentType":"OS_INVENTORY", \
          "assetNames": \
            "//compute.googleapis.com/projects/my_project_number/global/instances/instancel", \
          "readTimeWindow": {"startTime": "'$YESTERDAY'"}}' \
     https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:batchGetAssetsHistory

詳細については、batchGetAssetsHistory メソッドをご覧ください。

VM Manager データの変更のモニタリング

gcloud

Windows OS がインストールされている VM をモニタリングするための gcloud asset feeds create コマンドを使用してフィードを作成するには:

gcloud asset feeds create FEED_ID --project=PROJECT_ID \
--content-type=os-inventory --asset-types="compute.googleapis.com/Instance" \
--pubsub-topic="TOPIC_NAME" --condition-title="CONDITION_TITLE" \
--condition-description="CONDITION_DESCRIPTION" \
--condition-expression="temporal_asset.asset.os_inventory.os_info.short_name == 'windows'"

API

Windows OS がインストールされている VM をモニタリングするための feeds.create() API を使用してフィードを作成するには:

curl -H "Authorization: Bearer $TOKEN" \\
    -H "Content-Type: application/json" -X POST \\
    -d '{"feedId": "FEED_ID",
         "feed": { "assetTypes": ["compute.googleapis.com/Instance"],
         "contentType": "OS_INVENTORY",
         "feedOutputConfig": {"pubsubDestination": {"topic":"TOPIC_NAME"}},
         "condition": {"title": "CONDITION_TITLE",
         "description": "CONDITION_DESCRIPTION",
         "expression": "temporal_asset.asset.os_inventory.os_info.short_name == 'windows'"}}}' \\
    https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER/feeds

詳しくはこちらをご覧ください。