查看虚拟机管理器数据

本主题介绍如何配置 Cloud Asset Inventory 和虚拟机管理器的操作系统库存,以便您可以查看虚拟机的运行时信息。

准备工作

在开始之前,请完成以下步骤。

  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 Viewer 角色 (roles/cloudasset.viewer)
      • Owner 基本角色 (roles/owner)

启用操作系统清点

如需启用虚拟机管理器套件中的操作系统清点,请完成设置虚拟机管理器中的相关步骤。

设置权限

确保您的帐号对包含您要导出的资源的根资源拥有 cloudasset.assets.exportOSInventories 权限。您可以单独授予此权限,也可以为根资源授予以下角色之一。

  • Cloud Asset Viewer (roles/cloudasset.viewer) 角色
  • Cloud Asset Owner (roles/cloudasset.owner) 角色

详细了解如何配置权限Cloud Asset Inventory IAM 角色

将虚拟机管理器数据导出到 BigQuery

如需导出给定时间戳的操作系统库存快照,请完成以下步骤。

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

如需导出虚拟机实例的虚拟机实例管理器清点,请运行以下 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 方法。

获取虚拟机管理器数据历史记录

要使用 Cloud Asset API 获取项目中指定资产在给定时间范围内的创建、删除和更新历史记录,请按照以下流程操作。

gcloud

要获取项目中指定资产的所有操作系统资产的历史记录,请运行以下命令。

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

要获取项目中指定资产的所有操作系统清点的历史记录,请运行以下命令。

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 方法。

监控虚拟机管理器数据的变化

gcloud

要使用 gcloud asset feeds create 命令创建已安装 Windows 操作系统的虚拟机的 Feed,请执行以下操作:

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

如需使用 feeds.create() API 创建 Feed 以监控已安装 Windows 操作系统的虚拟机,请执行以下操作:

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

如需了解详情,请点击此处