Ver a demanda pelas suas soluções de software disparar deveria ser empolgante, certo? Na maioria das vezes é motivo de comemoração, mas existe um descuido comum em hospedagem em nuvem pública que pode paralisar sua empresa, ou até causar uma indisponibilidade — limites e cotas.
Não seja pego de surpresa na hora mais crítica
Na DoiT International, atendemos milhares de organizações pelo mundo como parceiro de nuvem de confiança e fornecedor de software de FinOps. Com dezenas de milhares de chamados de clientes tratados todo mês pelos nossos cloud architects, um descuido recorrente que vemos é a falta de previsão para o esgotamento das cotas. Isso costuma gerar pedidos de socorro de última hora para acelerar o atendimento das solicitações de aumento de cota junto ao provedor de nuvem.

Solicitações de suporte para aumento de cota recebidas dos nossos clientes
Há mais de uma década, nossa paixão é inovar e entregar as verdadeiras promessas da nuvem: simplicidade, elasticidade e eficiência. Para ajudar nossos clientes nesse problema recorrente, incorporamos recursos de monitoramento e alertas de cota à nossa própria plataforma de software multi-cloud, o DoiT Console.

Exemplo: funcionalidade de monitoramento de cotas no DoiT Console para clientes AWS
Infelizmente, nem todo mundo que usa nuvem pública é cliente da DoiT (ainda), e felizmente o time do Google também percebeu esse problema e disponibilizou em open source um projeto chamado "Quota Monitoring Solution (QMS)".
Quota Monitoring Solution open source do Google
Embora o repositório no Github dessa solução traga instruções passo a passo, este artigo busca simplificar as etapas para você colocar tudo no ar rapidamente. Para explicações mais detalhadas de cada passo, fique à vontade para consultar a documentação no repositório.
Em menos de vinte minutos, usando comandos gcloud e terraform em um terminal, você terá um dashboard como o abaixo e poderá personalizar os alertas conforme as necessidades da sua organização.

Dashboard no Looker Studio mostrando o uso de cotas em nível de organização, pasta, região ou projeto
Recursos
Fonte: Google
Arquitetura
Fonte: Google
Neste artigo, você vai aprender a:
- Preparar e configurar seu ambiente do QMS
- Instalar o QMS com Terraform
- Configurar seu dashboard no Looker Studio
Então vamos lá!
Pré-requisitos
Saber executar comandos gcloud no terminal ou no cloud shell
Embora dê para configurar o serviço manualmente no Cloud Console, ele foi pensado para ser instalado e configurado via terminal e comandos shell. Você pode usar o cliente de terminal de sua preferência ou simplesmente o Cloud Shell embutido no GCP Console.
Saber executar Terraform
Você vai precisar instalar a ferramenta de linha de comando do Terraform na sua máquina ou no Cloud Shell. A configuração da infraestrutura na nuvem e das funções serverless é automatizada com infraestrutura como código (IaC).
Permissão para atribuir papéis IAM
Para prosseguir, você vai precisar de vários papéis IAM para criar um projeto de monitoramento, uma service account e atribuir papéis a essa service account. O recomendável é que você ou alguém do seu time com o papel de Organization Administrator garanta que você tenha os papéis abaixo:
- Project Creator
- Service Account Creator
- [ Organization | Folder | Project ] IAM Admin
- Service Account Token Creator
1\. Prepare e configure seu ambiente do QMS
Para simplificar a preparação e configuração, montei um script que faz o seguinte por você:
- Cria o projeto de monitoramento, a service account e o IAM da service account
- IAM do alvo (organização ou pasta)
- Configuração e instruções do Terraform
Execute o comando abaixo no seu terminal ou cloud shell para iniciar a preparação.
Dicas
- Pressione RETURN para aceitar os [padrões]: nos prompts
- Tenha o seu billing ID (xxxxxx-xxxxxx-xxxxxx) à mão para copiar e colar
bash <(curl -L https://bit.ly/gcp-qms-setup)
Você pode conferir o código-fonte aqui: https://bit.ly/gcp-qms-setup

Exemplo dos prompts no terminal ao executar o script de instalação acima
2\. Instale o QMS com Terraform
Quando o script concluir a preparação inicial, ele vai pedir que você se autentique e execute o terraform manualmente, permitindo inspecionar o plan antes de aplicar (e tentar de novo em caso de erros).

Exemplo do prompt no terminal após o script de configuração, com os comandos finais para rodar o terraform
Comandos de instalação (substitua <your-…> pelos valores corretos)
PROJECT_ID=<your-project-id>
SA_EMAIL=<your-sa-email-address>
REGION=<your-region>
# configure gcloud sdk
gcloud config set core/project $PROJECT_ID
# set up short-lived oauth token
gcloud config set auth/impersonate_service_account $SA_EMAIL
export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token)
# run terraform (re-run `terraform plan` and `terraform apply` if errors)
cd quota-monitoring-solution/terraform/example
terraform init
terraform plan
terraform apply
# unset service account impersonation
gcloud config unset auth/impersonate_service_account
# return to project directory
cd ../../../
# start cloud scheduler jobs to begin monitoring quotas
gcloud scheduler jobs run quota-monitoring-cron-job --location $REGION
gcloud scheduler jobs run quota-monitoring-app-alert-config --location $REGION
3\. Configure seu dashboard no Looker Studio
Depois de rodar o setup e instalar o app via terraform, você vai configurar o dashboard seguindo os passos abaixo (a ordem importa, como descobri na prática)
Abra o template do Looker Studio
Clique no menu "..." (3 pontinhos) próximo ao canto superior direito e em "Make a copy"

Quando perguntarem sobre a fonte de dados, mantenha a seleção padrão

Agora você deve ver uma cópia do template do dashboard do Looker Studio em outra aba do navegador. O próximo passo é conectá-lo ao dataset criado anteriormente no seu projeto.
Conectando ao seu dataset
Achei essa parte meio instável e a ordem importa, mas se não der certo de primeira, é só tentar de novo.

Vai aparecer um painel embaixo com uma query SQL, e você precisará editá-la, substituindo por seu [project ID].[dataset].[table].
À esquerda há uma lista de projetos e o seu pode não aparecer. Tente buscar; se mesmo assim não preencher automaticamente com o seu projeto, clique na aba "Recent Projects" e selecione seu projeto -> dataset -> table.

Volte para a aba de teste da query e confirme que o seu project ID continua na query (e não voltou para o padrão do template).

Exemplo: confira se o seu PROJECT ID aparece nos dois lugares
Clique no botão "Reconnect" no canto superior direito desse painel. Quando aparecer a confirmação, confirme a alteração da fonte de dados e clique em "Apply"

Parabéns!
Os dados devem aparecer no dashboard. Se não aparecerem, repita os passos acima — a parte é meio "chatinha" e algumas tentativas costumam resolver.
Basta clicar em "Done" para fechar o painel e, se quiser, em "View" para visualizar seu dashboard.
Configurando monitoramento e alertas
A documentação do Google descreve customizações e configurações adicionais opcionais que você pode fazer para os alertas.
Agora você consegue se manter informado e identificar possíveis problemas de cota antes que eles virem indisponibilidades.