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:
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.
Criar um projeto
Para configurar o Cloud Run e o Cloud Scheduler, crie um novo projeto:
- 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.
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enable
permission. Learn how to grant roles. -
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enable
permission. Learn how to grant roles. Na Google Cloud consola, abra o Cloud Shell clicando no botão Ativar Cloud Shell
.
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.
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.
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)")
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"
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"
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
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.
- 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. Na Google Cloud consola, aceda a Cloud Run > Tarefas.
Selecione a tarefa license-tracker para abrir os detalhes da tarefa.
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
.Opcionalmente, veja os registos no Cloud Logging:
Copie as origens de dados do painel de controlo:
Para cada origem de dados, faça o seguinte:
- Clique no link acima para abrir a origem de dados.
- Clique em Fazer uma cópia desta origem de dados.
- Clique em Copiar origem de dados.
- Se lhe for pedido que associe o painel de controlo ao BigQuery, clique em Autorizar.
- Opcionalmente, clique no cabeçalho e mude o nome da origem de dados.
- Na lista de projetos de faturação, selecione o projeto que usou para implementar a ferramenta License Tracker.
- Clique em Reassociar.
- Na caixa de diálogo Aplicar alterações de ligação, selecione Aplicar.
Copie o painel de controlo:
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.
Clique em … > Fazer uma cópia
Na caixa de diálogo Copiar este relatório, selecione as suas cópias das origens de dados:
Clique em Copiar relatório.
O painel de controlo mostra agora os dados do seu conjunto de dados do BigQuery.
- Partilhe o painel de controlo e conceda ao utilizador autorização para ver o relatório.
- 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. Na Google Cloud consola, abra o Cloud Shell clicando no botão Ativar Cloud Shell
.
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.
Selecione a região do Cloud Run da sua implementação existente:
gcloud config set run/region REGION
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
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.
Implemente a aplicação
Agora, implemente a ferramenta License Tracker no Cloud Run:
Selecione projetos para analisar
A ferramenta License Tracker analisa todos os Google Cloud projetos para os quais se aplicam todas as seguintes condições:
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:
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:
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:
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.