Monitora l'utilizzo delle VM e dei nodi single-tenant per i report sulle licenze


Se utilizzi il modello Bring Your Own License per sistemi operativi come Windows Server, le responsabilità contrattuali potrebbero richiedere di monitorare e segnalare il numero di istanze VM, server fisici e core CPU fisici su cui utilizzi queste licenze.

Questo articolo descrive come utilizzare lo strumento open source License Tracker per monitorare il numero di istanze VM, server fisici e core CPU fisici in uso e come visualizzare i risultati utilizzando Looker Studio.

Lo strumento License Tracker funziona analizzando gli audit log di Compute Engine per determinare i posizionamenti per ogni istanza VM. Un posizionamento descrive il periodo di tempo durante il quale un'istanza VM è in esecuzione su un server fisico specifico. Ogni volta che viene eseguita la migrazione di una VM da un server fisico a un altro, si conclude un posizionamento e ne viene avviato un altro.

Ad esempio, considera un'istanza VM che viene avviata e successivamente arrestata diversi mesi dopo. A un certo punto durante il tempo di esecuzione, viene eseguita automaticamente la migrazione della VM da Server 1 a Server 2 e poi di nuovo a Server 1. Questa cronologia corrisponde a 3 posizionamenti:

Più posizionamenti

Alla prima esecuzione di License Tracker, lo strumento analizza l'utilizzo di Compute Engine negli ultimi 90 giorni e scrive il risultato in BigQuery. Durante le esecuzioni successive, lo strumento analizza il delta tra l'ultima esecuzione e il giorno corrente e aggiorna di conseguenza il set di dati BigQuery.

Lo strumento License Tracker sostituisce la funzionalità di generazione di report sull'utilizzo fornita da IAP Desktop.

Costi

Questa guida utilizza componenti fatturabili di Google Cloud, tra cui:

Utilizza il calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.

Esegui il deployment dello strumento License Tracker

Questa sezione descrive come configurare Cloud Run e Cloud Scheduler per eseguire automaticamente lo strumento License Tracker una volta al giorno.

Il seguente diagramma illustra la soluzione descritta in questo articolo:

  • Viene eseguito il deployment dello strumento License Tracker su Cloud Run e lo strumento viene configurato per analizzare i log di uno o più progetti.
  • Una volta al giorno, Cloud Scheduler attiva il job Cloud Run, che di conseguenza fa aggiornare allo strumento License Tracker un set di dati BigQuery.
  • Una dashboard di Looker Studio visualizza i dati di BigQuery e li rende disponibili per gli utenti.

Architettura

Crea un progetto

Per configurare Cloud Run e Cloud Scheduler, crea un nuovo progetto:

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

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  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. Make sure that billing is enabled for your Google Cloud project.

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

    Enable the APIs

Esegui il deployment dell'applicazione

Ora esegui il deployment dello strumento License Tracker in Cloud Run:

  1. Nella console Google Cloud , apri Cloud Shell facendo clic sul pulsante Attiva Cloud Shell Attiva Cloud Shell..

    Vai alla console Google Cloud

  2. Imposta una variabile di ambiente che conterrà il tuo ID progetto:

    gcloud config set project PROJECT_ID
    

    Sostituisci PROJECT_ID con l'ID del tuo progetto.

  3. Imposta la regione Cloud Run in cui eseguire il deployment:

    gcloud config set run/region REGION
    

    Sostituisci REGION con una regione che supporta Cloud Run e Cloud Scheduler.

  4. Crea un service account per lo strumento:

    SERVICE_ACCOUNT=$(gcloud iam service-accounts create license-tracker \
      --display-name "License Tracker" \
      --format "value(email)")
    
  5. Consenti al servizio di creare e accedere a un set di dati BigQuery e di avviare job Cloud Run nello stesso progetto:

    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. Consenti a Cloud Build di eseguire i deployment di Cloud Run e di gestire i job 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 il repository GitHub e passa al branch latest:

    git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git
    cd gce-license-tracker
    git checkout latest
    
  8. Invia una build a Cloud Build:

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

    La build esegue il deployment dell'applicazione License Tracker in Cloud Run e configura Cloud Scheduler per attivare il job una volta al giorno.

    Il completamento della build richiede circa 3 minuti.

Seleziona i progetti da analizzare

Lo strumento License Tracker analizza tutti i progetti Google Cloud che soddisfano tutte le seguenti condizioni:

  • L'API Compute Engine è abilitata.
  • Il progetto concede accesso come Compute Viewer (roles/compute.viewer) e Logs Viewer (roles/logging.viewer) al service account dello strumento.

Per includere un progetto, una cartella o un'intera organizzazione nell'analisi, segui questi passaggi:

Progetto

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

Sostituisci RESOURCE_PROJECT_ID con l'ID del progetto Google Cloudche deve essere analizzato dallo strumento License Tracker.

Cartella

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

Sostituisci RESOURCE_FOLDER_ID con l'ID della cartella che contiene i progetti che devono essere analizzati dallo strumento License Tracker.

Organizzazione

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

Sostituisci ORGANIZATION_ID con l'ID della tua organizzazione.

Avvia l'analisi iniziale

Ora puoi avviare un'analisi iniziale:

  1. Nella console Google Cloud , vai a Cloud Run > Job.

    Vai ai job Cloud Run

  2. Seleziona il job license-tracker per aprire i relativi dettagli.

  3. Fai clic su Esegui.

    A seconda del numero e delle dimensioni dei progetti selezionati, l'analisi iniziale potrebbe richiedere diverse ore.

    Al termine del job, il progetto contiene un set di dati BigQuery denominato license_usage.

  4. Facoltativamente, puoi visualizzare i log in Cloud Logging:

    Vai a Logging

Crea una dashboard

Ora creerai una dashboard di Looker Studio creando una copia di una dashboard di esempio:

  1. Copia le origini dati della dashboard:

    1. Nodi
    2. Nodi concessi in licenza
    3. Istogramma dei nodi
    4. Istogramma delle istanze

    Per ogni origine dati, segui questi passaggi:

    1. Fai clic sul link riportato sopra per aprire l'origine dati.
    2. Fai clic su Crea una copia di questa origine dati.
    3. Fai clic su Copia origine dati.
    4. Se ti viene chiesto di collegare la dashboard a BigQuery, fai clic su Autorizza.
    5. Facoltativamente, fai clic sull'intestazione e rinomina l'origine dati.
    6. Nell'elenco dei progetti di fatturazione, seleziona il progetto utilizzato per eseguire il deployment dello strumento License Tracker.
    7. Fai clic su Riconnetti.
    8. Nella finestra di dialogo Vuoi applicare le modifiche alla connessione?, seleziona Applica.
  2. Copia la dashboard:

    1. Apri la dashboard di esempio.

      La dashboard non è collegata a un'origine dati, pertanto non mostra dati.

    2. Fai clic su … > Crea una copia.

    3. Nella finestra di dialogo Copia questo report, seleziona le copie delle origini dati:

      Finestra di dialogo Copia

    4. Fai clic su Copia report.

      La dashboard ora mostra i dati del tuo set di dati BigQuery.

Concedi ad altri utenti l'accesso alla dashboard

Le origini dati della dashboard sono configurate per utilizzare le credenziali del visualizzatore per accedere a BigQuery. Per concedere l'accesso alla dashboard a un altro utente, devi:

  1. Condividere la dashboard e concedere all'utente l'autorizzazione per visualizzare il report.
  2. Concedere all'utente i ruoli BigQuery Data Viewer (roles/bigquery.dataViewer) e BigQuery Job User (roles/bigquery.jobUser). Puoi concedere questi ruoli a livello di set di dati o di progetto.

Personalizza la dashboard

Puoi personalizzare la dashboard utilizzando l'editor di report di Looker Studio per modificare i grafici esistenti o aggiungerne altri.

Tutti i grafici nella dashboard di esempio si basano sulla vista placements nel set di dati BigQuery. Questa vista contiene tutti i posizionamenti in tutti i progetti e utilizza lo schema seguente:

Colonna Tipo di dati Descrizione
instance_id INTEGER ID istanza
instance_name STRING Nome dell'istanza
instance_zone STRING ID della zona dell'istanza
instance_project_id STRING ID progetto dell'istanza
tenancy STRING S se in esecuzione su un nodo single-tenant, F in caso contrario
node_type STRING Tipo di nodo single-tenant
node_project_id STRING ID progetto del nodo. Questo valore potrebbe essere diverso da instance_project_id in caso di nodi single-tenant condivisi
server_id STRING ID univoco del server fisico
operating_system_family STRING WIN, LINUX o null se non riconosciuto
license STRING Stringa della licenza utilizzata dall'immagine
license_type STRING BYOL, SPLA o null se non riconosciuto
machine_type STRING Tipo di macchina dell'istanza
memory_mb INTEGER Quantità di RAM (in MB) allocata all'istanza
vcpu_count INTEGER Numero di vCPU allocate all'istanza
vcpu_min_allocated INTEGER Numero minimo di vCPU allocate all'istanza. Questo valore potrebbe essere diverso da vcpu_count se stai eseguendo un overcommit delle CPU su VM single-tenant
maintenance_policy STRING Policy di manutenzione per l'istanza
start_date TIMESTAMP Inizio del posizionamento
end_date TIMESTAMP Fine del posizionamento

Puoi utilizzare la vista placement per personalizzare i grafici esistenti o aggiungere grafici personalizzati alla dashboard.

Fai l'upgrade dello strumento License Tracker

Questa sezione descrive come fare l'upgrade di un deployment esistente dello strumento License Tracker per utilizzare una versione più recente dell'applicazione o una configurazione diversa.

  1. Nella console Google Cloud , apri Cloud Shell facendo clic sul pulsante Attiva Cloud Shell Attiva Cloud Shell..

    Vai alla console Google Cloud

  2. Imposta una variabile di ambiente che conterrà il tuo ID progetto:

    gcloud config set project PROJECT_ID
    

    Sostituisci PROJECT_ID con l'ID del progetto che contiene il tuo deployment esistente.

  3. Seleziona la regione Cloud Run del tuo deployment esistente:

    gcloud config set run/region REGION
    
  4. Clona il repository GitHub e passa al branch latest:

    git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git
    cd gce-license-tracker
    git checkout latest
    
  5. Invia una build a Cloud Build:

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

    La build aggiorna il deployment esistente in circa 3 minuti.