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


Si usas licencias adquiridas por el usuario de sistemas operativos como Windows Server es posible que las obligaciones contractuales requieran que supervises e 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 supervisar 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 Looker Studio.

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 Looker Studio 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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  7. Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs.

    Enable the APIs

Implemente la aplicación

Ahora implementa la herramienta License Tracker en Cloud Run:

  1. En la consola de Google Cloud, 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.

Carpeta

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 quieras 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 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

Crear un panel

Ahora, crearás un panel de Looker Studio mediante la creación de una copia de un panel de muestra:

  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 Looker 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:

Columna 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
node_type STRING Tipo de nodo de usuario único
node_project_id STRING ID del proyecto del nodo; este valor puede diferir de instance_project_id en el caso de nodos de usuario único compartidos
server_id STRING ID único del servidor físico
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
machine_type STRING Tipo de máquina de la instancia
memory_mb INTEGER Cantidad de RAM (en MB) asignada a la instancia
cantidad de CPU virtuales INTEGER Cantidad de CPU virtuales asignadas a la instancia
vcpu_min_allocated INTEGER Cantidad mínima de CPU virtuales asignadas a la instancia; este valor puede diferir de vcpu_count cuando tienes un exceso de compromiso de CPU en las VMs de usuario único
Política de mantenimiento STRING Política de mantenimiento, por ejemplo
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.

Actualiza la herramienta License Tracker

En esta sección, se describe cómo puedes actualizar una implementación existente de la herramienta License Tracker para usar una versión más reciente de la aplicación o una configuración diferente.

  1. En la consola de Google Cloud, 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 del proyecto que contiene tu implementación existente.

  3. Selecciona la región de Cloud Run de tu implementación existente:

    gcloud config set run/region REGION
    
  4. 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
    
  5. Envía una compilación a Cloud Build:

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

    La compilación actualiza tu implementación existente y tarda unos 3 minutos en completarse.