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


Se você trazer suas próprias licenças para sistemas operacionais como o Windows Server, as obrigações contratuais podem exigir que você rastreie e gere relatórios de quantas instâncias de VM, servidores físicos e núcleos de CPU física em que está usando essas licenças.

Neste artigo, descrevemos como usar o rastreador de licenças da ferramenta de código aberto para rastrear o número de instâncias de VM, servidores físicos e núcleos de CPU físicos 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 as posições de cada instância de VM. Uma posição 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, ela marca o fim de uma posição e inicia outra.

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 para Server 1 novamente. Esse histórico corresponde a três posições:

Várias posições

Ao executar 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 conformemente.

A ferramenta Rastreador de licenças substitui o recurso de relatório de uso fornecido pelo IAP Desktop.

Custos

Este guia usa componentes faturáveis do Google Cloud, incluindo:

Use a Calculadora de preços para gerar uma estimativa de custo com base no uso previsto.

Implantar a ferramenta Rastreador de licenças

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

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

  • A ferramenta Rastreador de licenças é implantada no Cloud Run e configurada 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 a ferramenta Rastreador de licenças atualize um conjunto de dados do BigQuery.
  • O painel do Looker Studio visualiza 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.

    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

Implante 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 Ative 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 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 três minutos para ser concluída.

Selecionar projetos para analisar

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

  • A API Compute Engine está ativada.
  • O projeto concede acesso de Leitor de computação (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 Cloud que você quer que o Rastreador de licenças analise.

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 você quer que a ferramenta Rastreador de Licenças analise.

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 organização.

Iniciar a análise inicial

Agora é possível iniciar uma análise inicial:

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

    Acessar jobs do Cloud Run

  2. Selecione o job licença-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 para ser concluída.

    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 com 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ê receber uma promoção para 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 permissão ao usuário 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 existentes 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 todas as posições 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
locação STRING S se estiver sendo executado em um nó de locatário individual, F caso contrário
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
licença 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 da posição
end_date TIMESTAMP Fim da posição

Use a visualização placement ao personalizar os gráficos existentes 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ça 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 Ative 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 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)
    

    A criação atualiza a implantação e leva cerca de 3 minutos para ser concluída.