Si trae sus propias licencias para sistemas operativos como Windows Server, las obligaciones contractuales pueden requerir que supervise e informe en cuántas instancias de VM, servidores físicos y núcleos de CPU físicos está utilizando estas licencias.
Este artículo describe cómo puede utilizar la herramienta de código abierto License Tracker para monitorear la cantidad de instancias de VM, servidores físicos y núcleos de CPU físicos que está utilizando, y cómo puede visualizar los resultados utilizando Looker Studio.
La herramienta License Tracker funciona analizando los registros de auditoría de Compute Engine para determinar las ubicaciones de cada instancia de VM. Una ubicación describe el período de tiempo durante el cual una instancia de VM se ejecuta en un servidor físico específico. Cada vez que se migra una máquina virtual de un servidor físico a otro, se marca el final de una ubicación y se inicia otra.
Como ejemplo, considere una instancia de VM que se inicia y, varios meses después, se detiene nuevamente. En algún momento durante su tiempo de ejecución, la VM se migra automáticamente del Server 1
al Server 2
y luego nuevamente al Server 1
. Esta historia corresponde a 3 colocaciones:
Cuando ejecuta la herramienta License Tracker por primera vez, analiza el uso de Compute Engine de los últimos 90 días y escribe su resultado en BigQuery. En 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 en consecuencia.
La herramienta License Tracker reemplaza la función de informes de uso proporcionada por IAP Desktop .
Costos
Esta guía utiliza componentes facturables de Google Cloud, incluido:
Utilice la calculadora de precios para generar una estimación de costos basada en su uso proyectado.
Implementar la herramienta de seguimiento de licencias
Esta sección describe cómo configurar Cloud Run y Cloud Scheduler para ejecutar automáticamente la herramienta License Tracker una vez al día.
El siguiente diagrama 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 Cloud Run, lo que hace que la herramienta License Tracker actualice un conjunto de datos de BigQuery.
- Un panel de Looker Studio visualiza los datos de BigQuery y los pone a disposición de los usuarios.
Crear un proyecto
Para configurar Cloud Run y Cloud Scheduler, cree un nuevo proyecto:
- 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.
Implementar la aplicación
Ahora implementa la herramienta License Tracker en Cloud Run:
En la consola de Google Cloud, abra Cloud Shell haciendo clic en Activar Cloud Shell
botón.
Establezca una variable de entorno para que contenga el ID de su proyecto :
gcloud config set project PROJECT_ID
Reemplace PROJECT_ID con el ID de su proyecto.
Configure la región de Cloud Run para implementar en:
gcloud config set run/region REGION
Reemplace REGION con una región que admita Cloud Run y Cloud Scheduler .
Cree una cuenta de servicio para la herramienta:
SERVICE_ACCOUNT=$(gcloud iam service-accounts create license-tracker \ --display-name "License Tracker" \ --format "value(email)")
Permita que el servicio cree y acceda a un conjunto de datos de BigQuery e 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"
Permita que Cloud Build realice implementaciones de Cloud Run y administre 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
latest
rama:git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git cd gce-license-tracker git checkout latest
Envíe una compilación a Cloud Build:
gcloud builds submit . --substitutions=_REGION=$(gcloud config get-value run/region)
La compilación implementa la aplicación License Tracker en Cloud Run y configura Cloud Scheduler para activar el trabajo una vez al día.
La construcción tarda unos 3 minutos en completarse.
Seleccionar proyectos para analizar
La herramienta License Tracker analiza todos Google Cloud proyectos para los cuales se aplican todas las condiciones siguientes:
- La API de Compute Engine está habilitada.
- El proyecto otorga acceso a Compute Viewer (
roles/compute.viewer
) y Logs Viewer (roles/logging.viewer
) a la cuenta de servicio de la herramienta.
Para incluir un proyecto, carpeta o una organización completa en el análisis, haga 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
Reemplace RESOURCE_PROJECT_ID con el ID del Google Cloudproyecto que desea que analice 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
Reemplace RESOURCE_FOLDER_ID con el ID de la carpeta que contiene los proyectos que desea que analice 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
Reemplace ORGANIZATION_ID con el ID de su organización .
Iniciar el análisis inicial
Ahora puede iniciar un análisis inicial:
En la consola de Google Cloud, vaya a Cloud Run > Jobs .
Seleccione el trabajo de seguimiento de licencias para abrir los detalles del trabajo.
Haga clic en Ejecutar .
Dependiendo de la cantidad y el tamaño de los proyectos que seleccionó, el análisis inicial puede tardar varias horas en completarse.
Cuando se completa el trabajo, su proyecto contiene un conjunto de datos de BigQuery denominado
license_usage
.Opcionalmente, vea registros en Cloud Logging:
Crear un panel
Ahora puede crear un panel de Looker Studio creando una copia de un panel de muestra:
Copie las fuentes de datos del panel:
Para cada una de las fuentes de datos, haga lo siguiente:
- Haga clic en el enlace de arriba para abrir la fuente de datos.
- Haga clic en Hacer una copia de esta fuente de datos .
- Haga clic en Copiar fuente de datos .
- Si te promocionan para conectar el panel a BigQuery, haz clic en Autorizar .
- Opcionalmente, haga clic en el encabezado y cambie el nombre de la fuente de datos.
- En la lista de proyectos de facturación, seleccione el proyecto que utilizó para implementar la herramienta License Tracker.
- Haga clic en Reconectar .
- En el cuadro de diálogo Aplicar cambios de conexión , seleccione Aplicar .
Copie el panel:
Abra el panel de muestra .
El panel no está conectado a una fuente de datos, por lo que no muestra ningún dato.
Haga clic en ... > Hacer una copia.
En el cuadro de diálogo Copiar este informe , seleccione sus copias de las fuentes de datos:
Haga clic en Copiar informe .
El panel ahora muestra los datos de su conjunto de datos de BigQuery.
Conceder acceso a otros usuarios al panel
Las fuentes de datos del panel están configuradas para usar las credenciales del espectador para acceder a BigQuery. Para otorgar acceso a otro usuario al panel, debe:
- Comparta el panel y otorgue permiso al usuario para ver el informe.
- Otorga las funciones de Visor de datos de BigQuery (
roles/bigquery.dataViewer
) y Usuario de trabajo de BigQuery (roles/bigquery.jobUser
) al usuario. Puede otorgar estos roles a nivel de conjunto de datos o de proyecto .
Personaliza el panel
Puede personalizar el panel utilizando el editor de informes de Looker Studio para modificar los gráficos existentes o agregar gráficos adicionales.
Todos los gráficos del panel de muestra se basan en la vista placements
del conjunto de datos de BigQuery. Esta vista contiene todas las ubicaciones en todos los proyectos y utiliza el siguiente esquema:
Columna | tipo de datos | Descripción |
---|---|---|
id_instancia | ENTERO | ID de instancia |
nombre_instancia | CADENA | Nombre de la instancia |
zona_instancia | CADENA | ID de zona de la instancia |
id_proyecto_instancia | CADENA | ID del proyecto de la instancia |
tenencia | CADENA | S si se ejecuta en un nodo de único inquilino, F en caso contrario |
tipo_nodo | CADENA | Tipo de nodo de único inquilino |
nodo_proyecto_id | CADENA | ID del proyecto del nodo; este valor puede diferir de instance_project_id en el caso de nodos compartidos de único inquilino |
id_servidor | CADENA | ID único del servidor físico |
familia_sistema_operativo | CADENA | WIN , LINUX o null si no se reconoce |
licencia | CADENA | Cadena de licencia utilizada por imagen |
tipo_licencia | CADENA | BYOL , SPLA o null si no se reconoce |
tipo_máquina | CADENA | Tipo de máquina de instancia |
memoria_mb | ENTERO | Cantidad de RAM (en MB) asignada a la instancia |
cuenta_vcpu | ENTERO | Número de vCPU asignadas a la instancia |
vcpu_min_allocated | ENTERO | Número mínimo de vCPU asignadas a la instancia; este valor puede diferir de vcpu_count cuando se sobrecomprometen CPU en máquinas virtuales de único inquilino |
política_mantenimiento | CADENA | Política de mantenimiento por ejemplo. |
fecha_inicio | MARCA DE TIEMPO | Inicio de la colocación |
fecha_final | MARCA DE TIEMPO | Fin de la colocación |
Puede utilizar la vista placement
al personalizar gráficos existentes o agregar sus propios gráficos al panel.
Actualice la herramienta License Tracker
Esta sección describe cómo puede actualizar una implementación existente de la herramienta License Tracker para usar una versión más nueva de la aplicación o una configuración diferente.
En la consola de Google Cloud, abra Cloud Shell haciendo clic en Activar Cloud Shell
botón.
Establezca una variable de entorno para que contenga el ID de su proyecto :
gcloud config set project PROJECT_ID
Reemplace PROJECT_ID con el ID del proyecto que contiene su implementación existente.
Seleccione la región de Cloud Run de su implementación existente:
gcloud config set run/region REGION
Clona el repositorio de GitHub y cambia a la
latest
rama:git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git cd gce-license-tracker git checkout latest
Envíe una compilación a Cloud Build:
gcloud builds submit . --substitutions=_REGION=$(gcloud config get-value run/region)
La compilación actualiza su implementación existente y tarda aproximadamente 3 minutos en completarse.