Visualizar datos del Administrador de VM

En este tema, se muestra cómo configurar Cloud Asset Inventory y el inventario del SO de VM Manager para que puedas ver la información del entorno de ejecución de tus VM.

Antes de comenzar

Antes de comenzar, completa los pasos que se indican a continuación.

  1. Habilita la API de Cloud Asset Inventory en el proyecto en el que ejecutarás los comandos de la API.
    Habilita la API de Cloud Asset Inventory

  2. Configura los permisos necesarios para llamar a la API de Cloud Asset Inventory con la herramienta de gcloud o con la API.

  3. Completa los siguientes pasos para configurar el entorno.

    gcloud

    Si deseas configurar tu entorno para usar la herramienta de gcloud a fin de llamar a la API de Cloud Asset Inventory, instala el SDK de Cloud en tu cliente local.

    API

    Para configurar tu entorno a fin de llamar a la API de Cloud Asset Inventory con el comando curl de Unix, completa los siguientes pasos.

    1. Instala oauth2l en tu máquina local para que puedas interactuar con el sistema Google OAuth.
    2. Confirma que tienes acceso al comando curl de Unix.
    3. Asegúrate de otorgar a tu cuenta una de las siguientes funciones en tu proyecto, organización o carpeta.

      • Función de visualizador de Cloud Asset (roles/cloudasset.viewer)
      • Función básica de propietario (roles/owner)

Habilita el inventario del SO

Para habilitar el inventario del SO, que forma parte del paquete de VM Manager, completa los pasos relevantes en Configura VM Manager.

Configura los permisos

Asegúrate de que tu cuenta tenga el permiso cloudasset.assets.exportOSInventories en el recurso raíz que contiene los elementos que deseas exportar. Puedes otorgar este permiso de forma individual o una de las siguientes funciones en el recurso raíz.

  • Función de visualizador de Cloud Asset (roles/cloudasset.viewer)
  • Función de propietario de recursos de Cloud (roles/cloudasset.owner)

Obtén más información sobre la configuración de permisos y las funciones de IAM de Cloud Asset Inventory.

Exporta datos de VM Manager a BigQuery

Para exportar una instantánea de inventario del SO en una marca de tiempo determinada, completa los siguientes pasos.

gcloud

BIGQUERY_TABLE

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

Aquí:

  • PROJECT_ID es el ID del proyecto cuyos metadatos se exportan. Este proyecto puede ser el mismo proyecto desde el que ejecutas la exportación o uno diferente.
  • SNAPSHOT_TIME es el tiempo en el que quieres tomar una instantánea de tus activos (opcional). El valor debe ser la hora actual o una hora en el pasado. De forma predeterminada, se toma una instantánea a la hora actual. Para obtener información sobre los formatos de hora, consulta gcloud topic datetime.
  • BIGQUERY_TABLE es la tabla a la que exportarás los metadatos, en el formato projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME.
  • --output-bigquery-force reemplaza la tabla de destino, si existe.

Para exportar los activos de una organización o carpeta, puedes usar una de las siguientes marcas en lugar de --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

Obtén más información sobre el método exportAssets.

Exporta datos de VM Manager a Cloud Storage

Para exportar el inventario de instancias de VM de VM Manager, ejecuta el siguiente comando de la herramienta de 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

Obtén más información sobre el método exportAssets.

Obtén el historial de datos de VM Manager

Para obtener el historial de creación, eliminación y actualización de los recursos especificados en un proyecto dentro del plazo determinado mediante la API de Cloud Asset, sigue el proceso que se muestra a continuación.

gcloud

Para obtener el historial de todo el inventario del SO de los elementos especificados en un proyecto, ejecuta el siguiente comando.

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

Los comandos que se muestran en esta sección obtienen el historial de un proyecto. Para obtener el historial de una organización, usa el método https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_NUMBER:batchGetAssetsHistory de REST en el comando gcurl.

  1. Asegúrate de que puedas llamar a la API de Cloud Asset mediante la sección Configura una cuenta.
  2. Determina el nombre completo del recurso del elemento cuyo historial deseas buscar. Consulta la lista de nombres con formato de API de Cloud Asset aquí. En el siguiente ejemplo, se usa //compute.googleapis.com/projects/my_project_number/global/instances/instancel.
  3. Determina una hora de inicio y de finalización para tu período con el formato RFC 3339 UTC. Solo se requiere una hora de inicio. Consulta TimeWindow para obtener más información.
  4. Determine en qué nivel desea obtener el historial de recursos. Los siguientes comandos de ejemplo demuestran cómo obtener el historial de varios tipos de recursos.

Para obtener el token de acceso, ejecuta el siguiente comando con el archivo ~/credentials.json.

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

Deberías ver un resultado similar al siguiente, con y29.xxxxxx como el token de acceso:

Authorization: Bearer y29.xxxxxxx

Configura la variable TOKEN en el token de acceso:

TOKEN=y29.xxxxxxx

Para obtener el historial de todo el inventario del SO de los elementos especificados en un proyecto, ejecuta el siguiente comando.

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

Obtén más información sobre el método batchGetAssetsHistory.

Supervisa cambios de datos de VM Manager

gcloud

Si quieres crear un feed mediante el comando gcloud asset feeds create para supervisar las VM con el SO Windows instalado, haz lo siguiente:

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

Si deseas crear un feed con la API de feeds.create() para supervisar las VM con el SO Windows instalado, haz lo siguiente:

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

Para obtener más detalles, haz clic aquí.