Realiza un seguimiento del uso de VM y de nodos de usuario único para generar informes de licencias

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Si usas licencias adquiridas por el usuario de sistemas operativos como Windows Server es posible que las obligaciones contractuales requieran que informes la cantidad de instancias de VM, servidores físicos y núcleos de CPU físicos en los que las usas.

En este artículo, se describe cómo usar la herramienta de código abierto License Tracker para hacer un seguimiento de la cantidad de instancias de VM, servidores físicos y núcleos de CPU físicos que usas, y cómo puedes visualizar los resultados con DataStudio.

La herramienta License Tracker funciona mediante el análisis de los registros de auditoría de Compute Engine para determinar las ubicaciones de cada instancia de VM. Una posición describe el período durante el cual una instancia de VM se ejecuta en un servidor físico específico. Cada vez que se migra una VM de un servidor físico a otro, se marca el final de una ubicación y se inicia otra.

Como ejemplo, considera una instancia de VM que se inicia y, varios meses después, vuelve a detenerse. En algún momento de su tiempo de ejecución, la VM se migra de forma automática de Server 1 a Server 2 y, luego, vuelve a Server 1. Este historial corresponde a 3 ubicaciones:

Varias ubicaciones

Cuando ejecutas la herramienta License Tracker por primera vez, esta analiza el uso de Compute Engine de los últimos 90 días y escribe su resultado en BigQuery. En las ejecuciones posteriores, la herramienta analiza el delta entre la última ejecución y el día actual y actualiza el conjunto de datos de BigQuery según corresponda.

La herramienta de seguimiento de licencias reemplaza la función de informes de uso proporcionada por IAP Desktop.

Costos

En esta guía se usan componentes facturables de Google Cloud, que incluyen los siguientes:

Usa la calculadora de precios para generar una estimación de los costos según el uso previsto.

Implementa la herramienta License Tracker

En esta sección, se describe cómo configurar Cloud Run y Cloud Scheduler para ejecutar de forma automática la herramienta License Tracker una vez al día.

En el siguiente diagrama, se ilustra la solución descrita en este artículo:

  • La herramienta License Tracker se implementa en Cloud Run y se configura para analizar los registros de uno o más proyectos.
  • Una vez al día, Cloud Scheduler activa el trabajo de Cloud Run, lo que hace que la herramienta License Tracker actualice un conjunto de datos de BigQuery.
  • Un panel de DataStudio permite visualizar los datos de BigQuery y los pone a disposición de los usuarios.

Arquitectura

Crea un proyecto

Para configurar Cloud Run y Cloud Scheduler, crea un proyecto nuevo:

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

  4. Habilita las API de Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run.

    Habilita las API

  5. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  6. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

  7. Habilita las API de Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run.

    Habilita las API

Implemente la aplicación

Ahora implementa la herramienta License Tracker en Cloud Run:

  1. En Google Cloud Console, haz clic en el botón Activar Cloud ShellActiva Cloud Shell. para abrir Cloud Shell.

    Ve a la consola de Google Cloud.

  2. Configura una variable de entorno para que contenga tu ID del proyecto:

    gcloud config set project PROJECT_ID
    

    Reemplaza PROJECT_ID por el ID de tu proyecto.

  3. Configura la región de Cloud Run en la que se implementará:

    gcloud config set run/region REGION
    

    Reemplaza REGION por una región que admita Cloud Run y Cloud Scheduler.

  4. Crea una cuenta de servicio para la herramienta:

    SERVICE_ACCOUNT=$(gcloud iam service-accounts create license-tracker \
      --display-name "License Tracker" \
      --format "value(email)")
    
  5. Permite que el servicio cree y acceda a un conjunto de datos de BigQuery y, luego, inicie trabajos de Cloud Run en el mismo proyecto:

    gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \
      --member "serviceAccount:$SERVICE_ACCOUNT" \
      --role "roles/bigquery.admin"
    
    gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \
      --member "serviceAccount:$SERVICE_ACCOUNT" \
      --role "roles/run.invoker"
    
  6. Permite que Cloud Build realice implementaciones de Cloud Run y administre los trabajos de Cloud Scheduler:

    PROJECT_NUMBER=$(gcloud projects describe $(gcloud config get-value core/project) --format='value(projectNumber)') \
    
    gcloud iam service-accounts add-iam-policy-binding $SERVICE_ACCOUNT \
      --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
      --role "roles/iam.serviceAccountUser"
    
    gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \
      --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
      --role "roles/run.developer"
    
    gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \
      --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
      --role "roles/cloudscheduler.admin"
    
  7. Clona el repositorio de GitHub y cambia a la rama latest:

    git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git
    cd gce-license-tracker
    git checkout latest
    
  8. Envía una compilación a Cloud Build:

    gcloud builds submit . --substitutions=_REGION=$(gcloud config get-value run/region)
    

    La compilación implementa la aplicación de License Tracker en Cloud Run y configura Cloud Scheduler para activar el trabajo una vez al día.

    La compilación toma unos 3 minutos en completarse.

Selecciona proyectos para analizar

La herramienta de seguimiento de licencias analiza todos los proyectos de Google Cloud para los que se aplican las siguientes condiciones:

  • La API de Compute Engine está habilitada.
  • El proyecto otorga acceso de visualizador de Compute (roles/compute.viewer) y visualizador de registros (roles/logging.viewer) a la cuenta de servicio de la herramienta.

Para incluir un proyecto, una carpeta o toda una organización en el análisis, haz lo siguiente:

Proyecto

SCOPE_ID=RESOURCE_PROJECT_ID
SCOPE_TYPE=projects

gcloud projects add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/compute.viewer" \
  --condition None
gcloud projects add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/logging.viewer" \
  --condition None

Reemplaza RESOURCE_PROJECT_ID por el ID del proyecto de Google Cloud que deseas analizar con la herramienta License Tracker.

Folder

SCOPE_ID=RESOURCE_FOLDER_ID
SCOPE_TYPE=folders

gcloud resource-manager folders add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/compute.viewer" \
  --condition None
gcloud resource-manager folders add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/logging.viewer" \
  --condition None

Reemplaza RESOURCE_FOLDER_ID por el ID de la carpeta que contiene los proyectos que analizas con la herramienta License Tracker.

Organización

SCOPE_ID=ORGANIZATION_ID
SCOPE_TYPE=organizations

gcloud organizations add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/compute.viewer" \
  --condition None
gcloud organizations add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/logging.viewer" \
  --condition None

Reemplaza ORGANIZATION_ID por el ID de tu organización.

Comienza con el análisis inicial

Ahora puedes comenzar un análisis inicial:

  1. En la consola de Google Cloud, ve a Cloud Run > Trabajos.

    Ir a Trabajos de Cloud Run

  2. Selecciona el trabajo de license-tracker para abrir los detalles del trabajo.

  3. Haz clic en Ejecutar.

    Según la cantidad y el tamaño de los proyectos que seleccionaste, el análisis inicial puede tardar varias horas en completarse.

    Cuando se completa el trabajo, tu proyecto tendrá un conjunto de datos de BigQuery llamado license_usage.

  4. De manera opcional, visualiza los registros en Cloud Logging:

    Ir a Logging

Crea un panel

Ahora, debes copiar un panel de muestra para crear un panel de DataStudio:

  1. Copia las fuentes de datos del panel:

    1. Nodos
    2. Nodos con licencia
    3. Histograma de nodos
    4. Histograma de instancias

    Para cada una de la fuente de datos, haz lo siguiente:

    1. Haz clic en el vínculo anterior para abrir la fuente de datos.
    2. Haz clic en Crear una copia de esta fuente de datos.
    3. Haz clic en Copiar fuente de datos.
    4. Si asciendes para conectar el panel a BigQuery, haz clic en Autorizar.
    5. De manera opcional, haz clic en el encabezado y cambia el nombre de la fuente de datos.
    6. En la lista de proyectos de facturación, selecciona el proyecto que usaste para implementar la herramienta License Tracker.
    7. Haz clic en Volver a conectar.
    8. En el cuadro de diálogo Aplicar cambios de conexión, selecciona Aplicar.
  2. Copia el panel:

    1. Abre el panel de muestra.

      El panel no está conectado a una fuente de datos, por lo que no se muestra ningún dato.

    2. Haz clic en ... > Crear una copia.

    3. En el cuadro de diálogo Copiar este informe, selecciona tus copias de las fuentes de datos:

      Cuadro de diálogo Copiar

    4. Haz clic en Copiar informe.

      El panel ahora muestra los datos de tu conjunto de datos de BigQuery.

Otorga acceso al panel a otros usuarios

Las fuentes de datos del panel están configuradas para usar las credenciales del visualizador a fin de acceder a BigQuery. Para otorgar acceso a otro usuario al panel, debes hacer lo siguiente:

  1. Comparte el panel y otorga permiso al usuario para ver el informe.
  2. Otorga los roles de visualizador de datos de BigQuery (roles/bigquery.dataViewer) y usuario de trabajo de BigQuery (roles/bigquery.jobUser) al usuario. Puedes otorgar estos roles a nivel de conjunto de datos o de proyecto.

Personaliza el panel

Puedes personalizar el panel mediante el editor de informes de Data Studio para modificar los gráficos existentes o agregar gráficos adicionales.

Todos los gráficos en el panel de muestra se basan en la vista placements del conjunto de datos de BigQuery. Esta vista contiene todas las posiciones de todos los proyectos y usa el siguiente esquema:

Column Data type Descripción
instance_id INTEGER ID de instancia
instance_name STRING Nombre de la instancia
instance_zone STRING ID de zona de la instancia
instance_project_id STRING ID del proyecto de la instancia
tenancy STRING S si se ejecuta en un nodo de usuario único, de lo contrario, F
server_id STRING ID único del servidor físico
node_type STRING Tipo de nodo de usuario único
operating_system_family STRING WIN, LINUX o null si no se reconoce
licencia STRING String de licencia que usa la imagen
license_type STRING BYOL, SPLA o null si no se reconoce
start_date TIMESTAMP Inicio de la unicación
end_date TIMESTAMP Fin de la ubicación

Puedes usar la vista placement cuando personalices gráficos existentes o agregues tus propios gráficos al panel.