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:
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.
Crea un proyecto
Para configurar Cloud Run y Cloud Scheduler, crea un proyecto nuevo:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs.
Implemente la aplicación
Ahora implementa la herramienta License Tracker en Cloud Run:
En la consola de Google Cloud, haz clic en el botón Activar Cloud Shell para abrir Cloud Shell.
Ve a la consola de Google Cloud.
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.
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.
Crea una cuenta de servicio para la herramienta:
SERVICE_ACCOUNT=$(gcloud iam service-accounts create license-tracker \ --display-name "License Tracker" \ --format "value(email)")
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"
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"
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
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:
En la consola de Google Cloud, ve a Cloud Run > Trabajos.
Selecciona el trabajo de license-tracker para abrir los detalles del trabajo.
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
.De manera opcional, visualiza los registros en Cloud Logging:
Crear un panel
Ahora, crearás un panel de Looker Studio mediante la creación de una copia de un panel de muestra:
Copia las fuentes de datos del panel:
Para cada una de la fuente de datos, haz lo siguiente:
- Haz clic en el vínculo anterior para abrir la fuente de datos.
- Haz clic en Crear una copia de esta fuente de datos.
- Haz clic en Copiar fuente de datos.
- Si asciendes para conectar el panel a BigQuery, haz clic en Autorizar.
- De manera opcional, haz clic en el encabezado y cambia el nombre de la fuente de datos.
- En la lista de proyectos de facturación, selecciona el proyecto que usaste para implementar la herramienta License Tracker.
- Haz clic en Volver a conectar.
- En el cuadro de diálogo Aplicar cambios de conexión, selecciona Aplicar.
Copia el panel:
Abre el panel de muestra.
El panel no está conectado a una fuente de datos, por lo que no se muestra ningún dato.
Haz clic en ... > Crear una copia.
En el cuadro de diálogo Copiar este informe, selecciona tus copias de las fuentes de datos:
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:
- Comparte el panel y otorga permiso al usuario para ver el informe.
- 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 | Tipo de datos | 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 de proyecto del nodo; este valor puede diferir de instance_project_id en el caso de los 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 |
vcpu_count | 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 |
maintenance_policy | 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.
En la consola de Google Cloud, haz clic en el botón Activar Cloud Shell para abrir Cloud Shell.
Ve a la consola de Google Cloud.
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.
Selecciona la región de Cloud Run de tu implementación existente:
gcloud config set run/region REGION
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
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.