Rastrear o uso de nós de VM e de locatário individual para gerar relatórios de licença

Se você usar licenças adquiridas pelo usuário (BYOL) em sistemas operacionais como o Windows Server, as obrigações contratuais podem exigir que você rastreie e gere relatórios sobre o número de instâncias de VM, servidores físicos e núcleos de CPU física em que essas licenças estão sendo usadas.

Neste artigo, descrevemos como usar a ferramenta de código aberto Rastreador de Licenças para rastrear o número de instâncias de VM, servidores físicos e núcleos de CPU física que você está usando e como visualizar os resultados usando o Looker Studio.

A ferramenta Rastreador de Licenças analisa os registros de auditoria do Compute Engine para determinar o posicionamento de cada instância de VM. Um posicionamento descreve o período em que uma instância de VM é executada em um servidor físico específico. Cada vez que uma VM é migrada de um servidor físico para outro marca o fim de um posicionamento e início de outro.

Por exemplo, considere uma instância de VM iniciada e, vários meses depois, interrompida novamente. Em algum momento durante o tempo de execução, a VM é migrada automaticamente de Server 1 para Server 2 e posteriormente de volta para Server 1. Esse histórico corresponde a 3 posicionamentos:

Vários posicionamentos

Quando você executa a ferramenta Rastreador de Licenças pela primeira vez, ela analisa o uso do Compute Engine nos últimos 90 dias e grava o resultado no BigQuery. Nas execuções subsequentes, a ferramenta analisa o delta entre a última execução e o dia atual e atualiza o conjunto de dados do BigQuery conforme necessário.

A ferramenta Rastreador de Licenças substitui o recurso do relatório de uso fornecido pelo IAP Desktop (em inglês).

Custos

Neste guia, usamos componentes faturáveis do Google Cloud, incluindo:

Use a calculadora de preços para gerar uma estimativa de custo com base na projeção de uso.

Implantar a ferramenta Rastreador de Licenças

Nesta seção, descrevemos como configurar o Cloud Run e o Cloud Scheduler para executar automaticamente o Rastreador de Licenças uma vez por dia.

O diagrama a seguir ilustra a solução descrita neste artigo:

  • O Rastreador de Licenças é implantado no Cloud Run e configurado para analisar os registros de um ou mais projetos.
  • Uma vez por dia, o Cloud Scheduler aciona o job do Cloud Run, fazendo com que o Rastreador de Licenças atualize um conjunto de dados do BigQuery.
  • Um painel do Looker Studio acessa os dados do BigQuery e os disponibiliza para os usuários.

Arquitetura

Criar um projeto

Para configurar o Cloud Run e o Cloud Scheduler, crie um novo projeto:

  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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify 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.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify 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.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  8. Implantar o aplicativo

    Agora você implanta a ferramenta Rastreador de Licenças no Cloud Run:

    1. No console do Google Cloud , abra o Cloud Shell clicando no botão Ativar o Cloud Shell Ativar o Cloud Shell..

      Acesse o console do Google Cloud .

    2. Defina uma variável de ambiente que contenha o ID do projeto:

      gcloud config set project PROJECT_ID
      

      Substitua PROJECT_ID pelo ID do seu projeto.

    3. Defina a região do Cloud Run para a implantação:

      gcloud config set run/region REGION
      

      Substitua REGION por uma região compatível com o Cloud Run e o Cloud Scheduler.

    4. Crie uma conta de serviço para a ferramenta:

      SERVICE_ACCOUNT=$(gcloud iam service-accounts create license-tracker \
        --display-name "License Tracker" \
        --format "value(email)")
      
    5. Permita que o serviço crie e acesse um conjunto de dados do BigQuery e inicie jobs do Cloud Run no mesmo projeto:

      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. Permita que o Cloud Build realize implantações do Cloud Run e gerencie jobs do 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. Clone o repositório do GitHub(em inglês) e mude para a ramificação latest:

      git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git
      cd gce-license-tracker
      git checkout latest
      
    8. Envie um build para o Cloud Build:

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

      O build implanta o aplicativo Rastreador de Licenças no Cloud Run e configura o Cloud Scheduler para acionar o job uma vez por dia.

      A compilação leva cerca de 3 minutos para ser concluída.

    Selecionar projetos para análise

    A ferramenta Rastreador de Licenças analisa todos os projetos do Google Cloud em que todas as condições a seguir se aplicam:

    • A API Compute Engine está ativada.
    • O projeto concede acesso de leitor do Compute (roles/compute.viewer) e visualizador de registros (roles/logging.viewer) à conta de serviço da ferramenta.

    Para incluir um projeto, uma pasta ou uma organização inteira na análise, faça o seguinte:

    Projeto

    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
    

    Substitua RESOURCE_PROJECT_ID pelo ID do projeto do Google Cloudque a ferramenta Rastreador de Licenças deverá analisar.

    Pasta

    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
    

    Substitua RESOURCE_FOLDER_ID pelo ID da pasta que contém os projetos que a ferramenta Rastreador de Licenças deverá analisar.

    Organização

    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
    

    Substitua ORGANIZATION_ID pelo ID da sua organização:

    Começar a análise inicial

    Agora você pode começar uma análise inicial:

    1. No console do Google Cloud , acesse Cloud Run > Jobs.

      Acessar jobs do Cloud Run

    2. Selecione o job license-tracker para abrir os detalhes do job.

    3. Clique em Executar.

      Dependendo do número e do tamanho dos projetos selecionados, a análise inicial pode levar várias horas.

      Quando o job for concluído, o projeto conterá um conjunto de dados do BigQuery chamado license_usage.

    4. Se quiser, veja os registros no Cloud Logging:

      Acessar o Logging

    Criar um painel

    Agora você cria um painel do Looker Studio fazendo uma cópia de um painel de amostra:

    1. Copie as fontes de dados do painel:

      1. Nós
      2. Nós licenciados
      3. Histograma de nós
      4. Histograma de instâncias

      Para cada uma das fontes de dados, faça o seguinte:

      1. Clique no link acima para abrir a fonte de dados.
      2. Clique em Fazer uma cópia dessa fonte de dados.
      3. Clique em Copiar fonte de dados.
      4. Se você tiver a opção de conectar o painel ao BigQuery, clique em Autorizar.
      5. Se quiser, clique no cabeçalho e renomeie a fonte de dados.
      6. Na lista de projetos de faturamento, selecione o projeto que você usou para implantar a ferramenta Rastreador de Licenças.
      7. Clique em Reconectar.
      8. Na caixa de diálogo Aplicar alterações de conexão, selecione Aplicar.
    2. Copie o painel:

      1. Abra o painel de amostra.

        Como o painel não está conectado a uma fonte de dados, ele não mostra dados.

      2. Clique em … > Fazer uma cópia

      3. Na caixa de diálogo Copiar este relatório, selecione suas cópias das fontes de dados:

        Caixa de diálogo Copiar

      4. Clique em Copiar relatório.

        O painel agora mostra os dados do seu conjunto de dados do BigQuery.

    Conceder a outros usuários acesso ao painel

    As fontes de dados do painel são configuradas para usar as credenciais do visualizador para acessar o BigQuery. Para conceder acesso ao painel a outro usuário, você precisa:

    1. Compartilhar o painel e conceder ao usuário permissão para ver o relatório.
    2. Conceder os papéis de Leitor de dados do BigQuery (roles/bigquery.dataViewer) e Usuário de jobs do BigQuery (roles/bigquery.jobUser) ao usuário. É possível conceder esses papéis no nível do conjunto de dados ou do projeto.

    Personalizar o painel

    É possível personalizar o painel usando o editor de relatórios do Looker Studio para modificar os gráficos atuais ou adicionar outros.

    Todos os gráficos no painel de amostra se baseiam na visualização placements do conjunto de dados do BigQuery. Essa visualização contém todos os posicionamentos em todos os projetos e usa o seguinte esquema:

    Coluna Tipo de dado Descrição
    instance_id INTEGER ID da instância
    instance_name STRING Nome da instância
    instance_zone STRING ID da zona da instância
    instance_project_id STRING ID do projeto da instância
    tenancy STRING S se estiver sendo executado em um nó de locatário individual, caso contrário, F
    node_type STRING Tipo de nó de locatário individual
    node_project_id STRING ID do projeto do nó: este valor pode ser diferente de instance_project_id no caso de nós de locatário individual compartilhados
    server_id STRING ID exclusivo do servidor físico
    operating_system_family STRING WIN, LINUX ou null se não forem reconhecidos
    license STRING String de licença usada pela imagem
    license_type STRING BYOL, SPLA ou null se não forem reconhecidos
    machine_type STRING Tipo de máquina da instância
    memory_mb INTEGER Quantidade de RAM (em MB) alocada para a instância
    vcpu_count INTEGER Número de vCPUs alocadas na instância
    vcpu_min_allocated INTEGER Número mínimo de vCPUs alocadas na instância: esse valor pode ser diferente de vcpu_count quando você sobrecarrega CPUs em VMs de locatário individual
    maintenance_policy STRING Política de manutenção para instância
    start_date TIMESTAMP Início do posicionamento
    end_date TIMESTAMP Fim do posicionamento

    Use a visualização placement ao personalizar os gráficos atuais ou adicionar seus próprios gráficos ao painel.

    Fazer upgrade da ferramenta Rastreador de Licenças

    Esta seção descreve como fazer upgrade de uma implantação da ferramenta Rastreador de Licenças para usar uma versão mais recente do aplicativo ou uma configuração diferente.

    1. No console do Google Cloud , abra o Cloud Shell clicando no botão Ativar o Cloud Shell Ativar o Cloud Shell..

      Acesse o console do Google Cloud .

    2. Defina uma variável de ambiente que contenha o ID do projeto:

      gcloud config set project PROJECT_ID
      

      Substitua PROJECT_ID pelo ID do projeto que contém a implantação.

    3. Selecione a região do Cloud Run da implantação:

      gcloud config set run/region REGION
      
    4. Clone o repositório do GitHub(em inglês) e mude para a ramificação latest:

      git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git
      cd gce-license-tracker
      git checkout latest
      
    5. Envie um build para o Cloud Build:

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

      O build atualiza a implantação e leva cerca de 3 minutos para ser concluído.