Monitorize a utilização de VMs e nós de inquilino único para relatórios de licenças


Se trouxer as suas próprias licenças para sistemas operativos, como o Windows Server, as obrigações contratuais podem exigir que monitorize e comunique o número de instâncias de VMs, servidores físicos e núcleos de CPUs físicos em que está a usar estas licenças.

Este artigo descreve como pode usar a ferramenta de código aberto License Tracker para monitorizar o número de instâncias de VMs, servidores físicos e núcleos de CPU físicos que está a usar, e como pode visualizar os resultados através do Looker Studio.

A ferramenta License Tracker funciona através da análise dos registos de auditoria do Compute Engine para determinar as posições de cada instância de VM. Um posicionamento descreve o período durante o qual uma instância de VM está a ser executada num servidor físico específico. Cada vez que uma MV é migrada de um servidor físico para outro, marca o fim de um posicionamento e inicia outro.

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

Vários posicionamentos

Quando executa a ferramenta License Tracker pela primeira vez, esta analisa a utilização do Compute Engine dos últimos 90 dias e escreve o resultado no BigQuery. Nas execuções subsequentes, a ferramenta analisa a diferença entre a última execução e o dia atual e atualiza o conjunto de dados do BigQuery em conformidade.

A ferramenta License Tracker substitui a funcionalidade de relatórios de utilização fornecida 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 custos com base na sua utilização prevista.

Implemente a ferramenta License Tracker

Esta secção descreve como configurar o Cloud Run e o Cloud Scheduler para executar automaticamente a ferramenta License Tracker uma vez por dia.

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

  • A ferramenta License Tracker é implementada no Cloud Run e configurada para analisar os registos de um ou mais projetos.
  • Uma vez por dia, o Cloud Scheduler aciona a tarefa do Cloud Run, o que faz com que a ferramenta License Tracker atualize um conjunto de dados do BigQuery.
  • Um painel de controlo do Looker Studio visualiza os dados do BigQuery e disponibiliza-os aos utilizadores.

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. Implemente a aplicação

    Agora, implemente a ferramenta License Tracker no Cloud Run:

    1. Na Google Cloud consola, abra o Cloud Shell clicando no botão Ativar Cloud Shell Ative o Cloud Shell..

      Aceda à Google Cloud consola

    2. Defina uma variável de ambiente para conter o seu 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 qual quer fazer a implementação:

      gcloud config set run/region REGION
      

      Substitua REGION por uma região que suporte 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 aceda a um conjunto de dados do BigQuery e inicie tarefas 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. Permitir que o Cloud Build realize implementações do Cloud Run e faça a gestão de tarefas 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 o ramo latest:

      git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git
      cd gce-license-tracker
      git checkout latest
      
    8. Envie uma compilação para o Cloud Build:

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

      A compilação implementa a aplicação License Tracker no Cloud Run e configura o Cloud Scheduler para acionar a tarefa uma vez por dia.

      A compilação demora cerca de 3 minutos.

    Selecione projetos para analisar

    A ferramenta License Tracker analisa todos os Google Cloud projetos para os quais se aplicam todas as seguintes condições:

    • A API Compute Engine está ativada.
    • O projeto concede acesso de Visualizador do Compute (roles/compute.viewer) e Visualizador de registos (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 Google Cloud projeto que quer que a ferramenta License Tracker 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 quer que a ferramenta License Tracker 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 sua organização.

    Inicie a análise inicial

    Já pode iniciar uma análise inicial:

    1. Na Google Cloud consola, aceda a Cloud Run > Tarefas.

      Aceder às tarefas do Cloud Run

    2. Selecione a tarefa license-tracker para abrir os detalhes da tarefa.

    3. Clique em Executar.

      Dependendo do número e do tamanho dos projetos que selecionou, a análise inicial pode demorar várias horas a ser concluída.

      Quando a tarefa estiver concluída, o seu projeto contém um conjunto de dados do BigQuery denominado license_usage.

    4. Opcionalmente, veja os registos no Cloud Logging:

      Aceda a Registo

    Crie um painel de controlo

    Agora, cria um painel de controlo do Looker Studio criando uma cópia de um painel de controlo de exemplo:

    1. Copie as origens de dados do painel de controlo:

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

      Para cada origem de dados, faça o seguinte:

      1. Clique no link acima para abrir a origem de dados.
      2. Clique em Fazer uma cópia desta origem de dados.
      3. Clique em Copiar origem de dados.
      4. Se lhe for pedido que associe o painel de controlo ao BigQuery, clique em Autorizar.
      5. Opcionalmente, clique no cabeçalho e mude o nome da origem de dados.
      6. Na lista de projetos de faturação, selecione o projeto que usou para implementar a ferramenta License Tracker.
      7. Clique em Reassociar.
      8. Na caixa de diálogo Aplicar alterações de ligação, selecione Aplicar.
    2. Copie o painel de controlo:

      1. Abra o painel de controlo de exemplo.

        O painel de controlo não está associado a uma origem de dados, pelo que não apresenta dados.

      2. Clique em … > Fazer uma cópia

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

        Caixa de diálogo de cópia

      4. Clique em Copiar relatório.

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

    Conceda acesso ao painel de controlo a outros utilizadores

    As origens de dados do painel de controlo estão configuradas para usar as credenciais do leitor para aceder ao BigQuery. Para conceder a outro utilizador acesso ao painel de controlo, tem de:

    1. Partilhe o painel de controlo e conceda ao utilizador autorização para ver o relatório.
    2. Conceda ao utilizador as funções de Visualizador de dados do BigQuery (roles/bigquery.dataViewer) e Utilizador de tarefas do BigQuery (roles/bigquery.jobUser). Pode conceder estas funções ao nível do conjunto de dados ou do projeto.

    Personalize o painel de controlo

    Pode personalizar o painel de controlo usando o editor de relatórios do Looker Studio para modificar gráficos existentes ou adicionar gráficos adicionais.

    Todos os gráficos no painel de controlo de exemplo baseiam-se na vista placements no conjunto de dados do BigQuery. Esta vista contém todos os posicionamentos em todos os projetos e usa o seguinte esquema:

    Coluna Tipo de dados 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
    arrendamento STRING S se for executado num nó de inquilino único, F caso contrário
    node_type STRING Tipo de nó de inquilino único
    node_project_id STRING ID do projeto do nó; este valor pode ser diferente de instance_project_id no caso de nós de inquilino único partilhados
    server_id STRING ID exclusivo do servidor físico
    operating_system_family STRING WIN, LINUX ou null se não for reconhecido
    licenciar STRING String de licença usada pela imagem
    license_type STRING BYOL, SPLA ou null se não for reconhecido
    machine_type STRING Tipo de máquina da instância
    memory_mb INTEGER Quantidade de RAM (em MB) atribuída à instância
    vcpu_count INTEGER Número de vCPUs atribuídas à instância
    vcpu_min_allocated INTEGER Número mínimo de vCPUs atribuídas à instância; este valor pode diferir de vcpu_count quando está a usar mais CPUs do que o disponível em VMs de inquilino único
    maintenance_policy STRING Política de manutenção da instância
    start_date TIMESTAMP Início do posicionamento
    end_date TIMESTAMP Fim do posicionamento

    Pode usar a vista placement quando personalizar gráficos existentes ou adicionar os seus próprios gráficos ao painel de controlo.

    Atualize a ferramenta License Tracker

    Esta secção descreve como pode atualizar uma implementação existente da ferramenta License Tracker para usar uma versão mais recente da aplicação ou usar uma configuração diferente.

    1. Na Google Cloud consola, abra o Cloud Shell clicando no botão Ativar Cloud Shell Ative o Cloud Shell..

      Aceda à Google Cloud consola

    2. Defina uma variável de ambiente para conter o seu ID do projeto:

      gcloud config set project PROJECT_ID
      

      Substitua PROJECT_ID pelo ID do projeto que contém a sua implementação existente.

    3. Selecione a região do Cloud Run da sua implementação existente:

      gcloud config set run/region REGION
      
    4. Clone o repositório do GitHub e mude para o ramo latest:

      git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git
      cd gce-license-tracker
      git checkout latest
      
    5. Envie uma compilação para o Cloud Build:

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

      A compilação atualiza a implementação existente e demora cerca de 3 minutos a concluir.