Este documento explica como configurar notificações de orçamento programático e anomalias de custo (pré-lançamento) usando o Pub/Sub.
Os orçamentos e as anomalias de custo geralmente são configurados para enviar notificações por e-mail. Se você usa orçamentos ou a detecção de anomalias de custo como uma ferramenta de controle de custos, as notificações por e-mail podem não ser o melhor método para garantir a ação imediata de controle dos custos. É possível configurar e usar notificações programáticas para automatizar as respostas de controle de custos. Exemplos de respostas automatizadas de controle de custos incluem:
- Integração com o Slack para respostas mais rápidas
- Gerenciar o consumo de recursos para reduzir custos
- Limitar os gastos desativando o faturamento quando você atingir o orçamento
Limitações
Os orçamentos usam dados estimados do Faturamento do Cloud, que estão sujeitos a alterações até a finalização da fatura.
Se você definir as políticas da organização para limitar o compartilhamento de recursos por domínio, por exemplo, ativando
enforceInTransit
nos tópicos do Pub/Sub, poderá encontrar um erro ao tentar configurar ou conectar tópicos do Pub/Sub. Nesse caso, talvez você precise forçar o acesso à conta para conectar um tópico do Pub/Sub a um orçamento. Para forçar o acesso à conta, siga estas etapas:- Remova a política da organização que contém a restrição de domínio usando um dos seguintes métodos:
- Siga as etapas para conectar um tópico do Pub/Sub.
- Ative novamente a política da organização para a organização ou o projeto (opcional).
Permissões exigidas para a tarefa
Notificações de orçamento
Para configurar notificações de orçamento programático, você precisa ter permissões para criar ou modificar orçamentos e tópicos do Pub/Sub. Você precisa de um conjunto diferente de permissões, dependendo do seu nível de acesso.
Usuários com permissões na conta do Cloud Billing | Apenas usuários com permissões no nível do projeto (Prévia) |
---|---|
Se a organização usa papéis personalizados para autenticação, você precisa das seguintes permissões:
Para que papéis personalizados modifiquem um orçamento existente do Cloud Billing e o conectem a um tópico existente do Pub/Sub, é necessário ter as seguintes permissões:
Para receber as permissões necessárias usando papéis predefinidos, peça ao administrador para conceder a você um dos seguintes papéis predefinidos do IAM do Cloud Billing na sua conta do Cloud Billing: E peça ao administrador que conceda a você o seguinte papel no projeto de destino que contém os tópicos do Pub/Sub: |
Se a organização usa papéis personalizados para autenticação, você precisa das seguintes permissões:
Para receber as permissões necessárias usando papéis predefinidos, peça ao administrador para conceder a você um dos seguintes papéis predefinidos do IAM do Cloud Billing no projeto: E peça ao administrador que conceda a você o seguinte papel no projeto de destino que contém os tópicos do Pub/Sub: |
Notificações de anomalias
Para configurar notificações de anomalias programáticas, você precisa ter permissões para criar ou modificar anomalias e tópicos do Pub/Sub. Você precisa ter permissões na conta do Cloud Billing.
Usuários com permissões na conta do Cloud Billing (pré-lançamento) |
---|
Para receber as permissões necessárias usando papéis predefinidos, peça ao administrador para conceder a você um dos seguintes papéis predefinidos do IAM do Cloud Billing na sua conta do Cloud Billing: E peça ao administrador que conceda a você o seguinte papel no projeto de destino que contém os tópicos do Pub/Sub: |
Criar um tópico do Pub/Sub
Para configurar notificações de orçamento programático ou anomalias, primeiro é necessário criar um tópico do Pub/Sub. Se você já tiver configurado um tópico do Pub/Sub para orçamentos ou anomalias de custo, pule esta etapa.
Acesse a página Pub/Sub no console do Google Cloud.
Selecione um projeto para conter o tópico do Pub/Sub.
Ao configurar tópicos do Pub/Sub para notificações de faturamento, recomendamos usar um projeto de administração de FinOps para conter os tópicos do Pub/Sub relacionados ao faturamento.
Clique em
Criar tópico.No campo ID do tópico, forneça um nome para o tópico.
Mantenha as configurações padrão de assinatura e criptografia e clique em Criar.
Conectar seu tópico do Pub/Sub
Para permitir que notificações programáticas recebam mensagens do Pub/Sub com o status atual do seu orçamento ou anomalia, conecte seu orçamento ou anomalia ao tópico do Pub/Sub.
Notificações de orçamento
Para conectar um tópico do Pub/Sub a um orçamento do Cloud Billing, siga estas etapas:
Usuários com permissões na conta do Cloud Billing | Apenas usuários com permissões no nível do projeto (Prévia) |
---|---|
|
|
Notificações de anomalias
Para conectar um tópico do Pub/Sub a uma anomalia de custo, siga estas etapas:
Usuários com permissões na conta do Cloud Billing (pré-lançamento) |
---|
|
Formato da notificação
As notificações enviadas ao tópico do Pub/Sub são compostas de duas partes:
- Atributos: um conjunto de pares de chave-valor com a descrição do evento.
Dados: uma string que contém um objeto JSON com a descrição dos detalhes do alerta de orçamento.
Notificações de orçamento
Atributos
Os atributos são pares de chave-valor incluídos em todas as notificações enviadas pelo Faturamento do Cloud para seu tópico do Pub/Sub. As notificações sempre contêm o seguinte conjunto de pares de chave-valor, independentemente da carga útil.
Nome do atributo | Exemplo | Descrição |
---|---|---|
billingAccountId |
01D4EE-079462-DFD6EC
|
O identificador da conta de faturamento do Cloud que detém o orçamento. |
budgetId |
de72f49d-779b-4945-a127-4d6ce8def0bb
|
O identificador do alerta de orçamento na conta de faturamento do Cloud. |
schemaVersion |
1.0
|
A versão do esquema de notificações. |
Dados
Os detalhes do alerta de orçamento são retornados em uma string UTF-8 codificada em base64 que contém um objeto JSON com as seguintes propriedades:
Dados | Exemplo | Descrição |
---|---|---|
budgetDisplayName
|
"My Personal Budget"
|
O nome legível atribuído ao orçamento. |
costAmount
|
140.321
|
O valor acumulado dos custos. O tipo de custo monitorado depende dos filtros e das configurações do orçamento. |
costIntervalStart
|
"2021-02-01T08:00:00Z"
|
O início do período de alerta do orçamento. `costAmount` inclui os custos de uso a partir dessa data. Esse é o primeiro dia do período do orçamento (mês, trimestre, ano ou período personalizado) em que o uso do orçamento ocorreu. |
budgetAmount
|
152.557
|
O valor alocado no orçamento. |
budgetAmountType
|
"SPECIFIED_AMOUNT"
|
O tipo de valor do orçamento. Pode ser um dos seguintes valores:
|
alertThresholdExceeded
|
0.9
|
O limite máximo de alertas de custo real configurado foi excedido. O valor está em formato decimal (por exemplo, 0,9 é 90%). Essa chave não está presente se o custo real não exceder um limite. |
forecastThresholdExceeded
|
0.2
|
O alerta de limite máximo de custo previsto foi excedido. O valor é uma porcentagem em formato decimal (por exemplo, 0,2 é 20%). Essa chave não estará presente se o custo previsto não exceder nenhum limite. |
currencyCode
|
"USD"
|
A moeda do alerta de orçamento. Todos os custos e valores orçamentários do alerta estão nessa moeda. |
Notificações de anomalias
Atributos
Os atributos são pares de chave-valor contidos em todas as notificações enviadas pelo Faturamento do Cloud para seu tópico do Pub/Sub. As notificações sempre contêm o seguinte conjunto de pares de chave-valor, independentemente do payload delas.
Nome do atributo | Exemplo | Descrição |
---|---|---|
escopo |
scope_project
|
O escopo da anomalia. |
billingAccountName |
billingAccounts/01D4EE-079462-DFD6EC
|
O identificador da conta do Cloud Billing em que a anomalia ocorreu. |
resourceDisplayName |
My project
|
O nome de exibição do recurso em que a anomalia ocorreu. |
resourceName |
projects/123456
|
O identificador do recurso em que a anomalia ocorreu. |
SchemaVersion |
1.0
|
A versão do esquema do Pub/Sub. |
Dados
Os detalhes do alerta de anomalia são retornados em uma string UTF-8 codificada em base64 que contém um objeto JSON com as seguintes propriedades:
Dados | Exemplo | Descrição |
---|---|---|
anomalyName
|
billingAccounts/01D4EE-079462-DFD6EC/anomalies/aaa
|
O nome do recurso da anomalia. |
billingAccountName
|
billingAccounts/01D4EE-079462-DFD6EC
|
O identificador da conta de faturamento. |
resourceName
|
"projects/12345"
|
O identificador do recurso em que a anomalia ocorreu. |
resourceDisplayName
|
"My project"
|
O nome de exibição do recurso em que a anomalia ocorreu. |
detectionDate
|
"2024-02-01T08:00:00Z"
|
A data em que a anomalia de custo foi detectada. |
Scope
|
SCOPE_PROJECT
|
Indica o escopo da anomalia. |
expectedSpendAmount
|
{
|
O gasto esperado para o recurso. |
actualSpendAmount
|
196.22
|
O gasto real do recurso. |
deviationAmount
|
31.01
|
A diferença entre o gasto real e o esperado. |
deviationPercentage
|
18.77
|
A porcentagem do valor de desvio do gasto esperado. |
Root cause
|
root_causes { resource: "services/XXX-XXXX-XXX" display_name: "BigQuery" cause_type: CAUSE_TYPE_SERVICE deviation { expected_spend { currency_code: "USD" units: "5000" } actual_spend { currency_code: "USD" units: "5000" } deviation_amount { currency_code: "USD" units: "5000" } deviation_percentage: "Infinity" } sub_causes { resource: "locations/us-west1", display_name: "us-west1", cause_type: CAUSE_TYPE_LOCATION, deviation { expected_spend { currency_code: "USD", } actual_spend { currency_code: "USD", units:"5000" } deviation_amount { currency_code: "USD", units: "5000" } deviation_percentage: "Infinity" } sub_causes { resource: "services/XXXX-XXXX-XXXX/skus/XXXX-XXXX-XXXX" display_name: "Some display name" cause_type: CAUSE_TYPE_SKU deviation { expected_spend { currency_code: "USD" } actual_spend { currency_code: "USD" units: 5000 } deviation_amount { currency_code: "USD" units: 5000 } deviation_percentage: "Infinity" } } sub_causes { resource: "services/XXXX-XXXX-XXXX/skus/XXXX-XXXX-XXXX" display_name: "Some display name" cause_type: CAUSE_TYPE_SKU deviation { expected_spend { currency_code: "USD" units: "1" nanos: 5413077 } actual_spend { currency_code: "USD" units: "1", nanos: 122606000 } deviation_amount { currency_code: "USD" nanos: 117192923 } deviation_percentage:11.656196419841217 } } } } |
Um campo repetido que contém informações sobre a causa raiz da anomalia. |
Garantias de entrega de notificações ao Pub/Sub
Depois de conectar seu orçamento ou anomalia a um tópico do Pub/Sub, você vai receber notificações programáticas da seguinte maneira:
Notificações de orçamento
- As notificações de orçamento são enviadas ao tópico do Pub/Sub várias vezes por dia com o status atual do seu orçamento. Essa cadência é diferente da cadência dos e-mails de alerta de orçamento, que são enviados somente quando um limite de orçamento é atingido.
- As notificações de Pub/Sub são enviadas mesmo que a conta de faturamento do Cloud não tenha nenhum uso.
- Pode levar várias horas para você receber a primeira notificação do Pub/Sub.
- O Pub/Sub somente garante a entrega pelo menos uma vez. É possível receber uma mensagem várias vezes, e as mensagens podem chegar fora de ordem.
- Se a entrega falhar devido a um erro de configuração do tópico do Pub/Sub, você não vai receber uma notificação.
Pode haver uma falha na entrega por um dos seguintes motivos:
- O tópico do Pub/Sub não existe mais.
- O Cloud Billing não tem mais permissão para publicar no tópico Pub/Sub.
- Você excedeu sua cota de notificações.
- Você tem políticas da organização em vigor que limitam o compartilhamento de recursos por domínio.
Notificações de anomalias
- As notificações de anomalia são enviadas ao tópico do Pub/Sub somente quando o limite é atingido.
- O Pub/Sub garante apenas a entrega pelo menos uma vez. É possível receber uma mensagem várias vezes, e as mensagens podem chegar fora de ordem.
- Se a entrega falhar devido a um erro de configuração do tópico do Pub/Sub, você não vai receber uma notificação.
Pode haver uma falha na entrega por um dos seguintes motivos:
- O tópico do Pub/Sub não existe mais.
- A conta do Faturamento do Cloud não tem mais permissão para publicar no tópico do Pub/Sub.
- Você excedeu sua cota de notificações.
- Você tem políticas da organização em vigor que limitam o compartilhamento de recursos por domínio.
Para mais informações, consulte Publicar e receber mensagens no Pub/Sub.
A seguir
Para saber mais sobre como usar notificações programáticas, consulte os seguintes exemplos de respostas de controle de custos programático:
- Ouvir as notificações
- Enviar notificações para o Slack
- Controlar o uso de recursos com notificações
- Desativar o uso do faturamento com notificações