Otimizar e monitorar os custos do Google Cloud Observability

Nesta página, descrevemos como otimizar e monitorar os custos do Google Cloud Observability. Para informações sobre preços, consulte Preços do Google Cloud Observability.

Talvez você também tenha interesse nos seguintes documentos:

Otimizar

Esta seção oferece orientações sobre como reduzir ou otimizar os custos associados ao Cloud Logging, ao Cloud Trace e ao Google Cloud Managed Service para Prometheus.

Reduza os custos do Cloud Logging

Para reduzir os custos de armazenamento do Cloud Logging, configure filtros de exclusão nos coletores de registros para evitar que entradas de registro de baixo valor sejam transmitidas para os buckets de registro. É possível configurar um coletor de registros para excluir todas as entradas que correspondem a um filtro de exclusão ou apenas uma porcentagem das entradas correspondentes. As entradas de registro excluídas não são transmitidas para seus buckets de registros e não são contabilizadas na sua cota de armazenamento. Para saber mais, consulte Filtros de coletor de registros.

Os custos de armazenamento do Cloud Logging se aplicam apenas aos dados de registros armazenados em buckets de registro. É possível configurar os coletores de registros para que os dados não sejam armazenados em buckets, mas sim encaminhados para um dos seguintes destinos:

O Cloud Logging não cobra pelo roteamento de entradas de registro para os destinos listados. No entanto, você pode receber uma cobrança quando as entradas de registro são recebidas por um destino.

Para informações sobre como rotear dados de registro, consulte Rotear registros para destinos compatíveis.

Otimizar custos do Serviço Gerenciado para Prometheus

Os preços do Serviço Gerenciado para Prometheus foram projetados para serem controláveis. Como as cobranças são geradas por amostra, use os seguintes fatores para controlar os custos:

  • Período de amostragem: alterar o período de extração de métricas de 15 segundos para 60 segundos pode gerar uma economia de 75%, sem sacrificar a cardinalidade. É possível configurar períodos de amostragem por job, por destino ou global.

  • Filtragem: é possível usar a filtragem para reduzir o número de amostras enviadas ao repositório de dados global do serviço. Para mais informações, consulte Filtrar métricas exportadas. Use configs de remarcação de métricas na configuração de extração do Prometheus para descartar métricas no momento da ingestão, com base em correspondências de rótulos.

  • Mantenha os dados de alta cardinalidade e de baixo valor locais. É possível executar o Prometheus padrão junto com o serviço gerenciado, usando as mesmas configurações de scape, e manter os dados localmente que não valem a pena enviar ao repositório de dados global do serviço.

Os preços do Serviço Gerenciado para Prometheus foram projetados para serem previsíveis.

  • Você não recebe penalizações por ter histogramas esparsos. As amostras são contadas apenas para o primeiro valor diferente de zero e, em seguida, quando o valor do bucketn é maior que o valor no bucketn-1. Por exemplo, um histograma com valores 10 10 13 14 14 14 conta como três amostras, para o primeiro, terceiro e quarto buckets.

    Dependendo de quantos histogramas você usa e para que eles são usados, a exclusão de buckets inalterados dos preços geralmente pode fazer com que 20% a 40% menos amostras sejam contadas para fins de faturamento do que o número absoluto de buckets de histograma indicaria.

  • Ao cobrar por amostra, você não receberá penalizações por contêineres com escalonamento rápido e não escalonados, preemptivos ou temporários, como os criados pelo HPA ou pelo Autopilot do GKE.

    Se o Serviço gerenciado para Prometheus cobrasse por métrica, você pagaria por um mês inteiro de cardinalidade, tudo de uma vez, sempre que um novo contêiner fosse gerado. Com o preço por amostra, você paga apenas enquanto o contêiner está em execução.

Consultas, incluindo consultas de alerta

Todas as consultas emitidas pelo usuário, incluindo as emitidas quando as regras de gravação do Prometheus são executadas, são cobradas usando as chamadas da API Cloud Monitoring.

Reduzir o uso do Trace

Para controlar o volume de ingestão de períodos do Trace, gerencie a taxa de amostragem de traces. Assim, será possível equilibrar a quantidade necessária para analisar o desempenho com a tolerância de custo.

Para sistemas de tráfego intenso, a maioria dos clientes pode coletar amostras de uma em 1.000 transações, ou até uma em 10.000 transações, e ainda ter informações suficientes para analisar o desempenho.

A taxa de amostragem é configurada com as bibliotecas de cliente do Cloud Trace.

Reduza sua fatura de alertas

Nesta seção, descrevemos estratégias que podem ser usadas para reduzir os custos dos alertas. Para informações sobre o modelo de preços, consulte Preços do Google Cloud Observability e Exemplos de preços de alertas.

Consulte a estimativa da fatura usando a calculadora de preços na interface

Ao criar ou editar uma política de alertas, o Cloud Alerting mostra o custo estimado dela. Use essa calculadora para ver como o custo estimado muda à medida que você altera os parâmetros da política de alertas.

Usar o Metrics Explorer para verificar a contagem de pontos retornados

O número de pontos retornados pela consulta da política de alertas depende principalmente da cardinalidade da saída da consulta. Para conferir a cardinalidade estimada da sua política de alertas, faça o seguinte:

  • Para uma condição de alerta de limite de métrica, use o Metrics Explorer para criar uma consulta idêntica. Adicione uma transformação secundária de Série temporal de contagem por Nenhum.
  • Para uma condição de alerta do PromQL, copie a consulta no Metrics Explorer e faça o seguinte:
    • Divida a consulta em cláusulas separadas, dividindo em todos os operadores >, <, >=, <=, ==, !=, AND, OR e UNLESS.
    • Exclua qualquer cláusula que não contenha uma métrica, como um valor numérico de limite.
    • Encapsule cada cláusula em uma função count().
    • Some os resultados.
  • Para uma condição de alerta do MQL, copie a consulta no Metrics Explorer. Remova a linha | condition. Adicione uma linha | group_by [], .count ao final.

    O MQL foi descontinuado, e os casos que pedem ajuda para depurar problemas de faturamento podem ser recusados pelo Cloud Customer Care.

Consolidar políticas de alertas para operar em mais recursos

O serviço de alertas cobra um custo por referência de métrica, e cada política de limite de métricas tem uma referência de métrica por condição. Por isso, quando possível, use uma política de alertas para monitorar vários recursos em vez de criar uma para cada recurso.

Por exemplo, suponha que você tenha 100 VMs. Cada VM gera um ponto a cada minuto para o tipo de métrica my_metric. Confira duas maneiras diferentes de monitorar os pontos retornados:

  • Você cria uma política de alertas com uma condição e, portanto, uma referência de métrica. A condição monitora my_metric e agrega dados no nível da VM. Após a agregação, um ponto é retornado para cada VM. Portanto, a condição gera 100 pontos retornados por avaliação.

  • Você cria 100 políticas de alertas, e cada uma delas contém uma condição e, portanto, tem uma referência de métrica. Cada condição monitora a série temporal my_metric de uma das VMs e agrega dados no nível da VM. Portanto, cada condição retorna um ponto por avaliação.

A segunda opção, que cria 100 condições (100 referências de métrica), é mais cara do que a primeira, que cria apenas uma condição (uma referência de métrica). As duas opções retornam 100 pontos por avaliação.

Agregue apenas ao nível em que você precisa gerar um alerta

Um ponto é retornado para cada série temporal monitorada por uma política de alertas. A agregação em níveis mais altos de granularidade resulta em custos maiores do que a agregação em níveis mais baixos. Por exemplo, agregar ao nível do projetoGoogle Cloud é mais barato do que agregar ao nível do cluster, e agregar ao nível do cluster é mais barato do que agregar ao nível do cluster e do namespace.

Por exemplo, suponha que você tenha 100 VMs. Cada VM gera um ponto para o tipo de métrica my_metric. Cada uma das suas VMs pertence a um dos cinco serviços. Você decide criar uma política de alertas com uma condição que monitora my_metric. Confira duas opções de agregação:

  • Você agrega dados ao serviço. Após a agregação, cada execução de política de alertas retorna um ponto para cada serviço. Portanto, a condição retorna 5 pontos por execução.

  • Você agrega dados no nível da VM. Após a agregação, cada execução da política de alertas retorna um ponto para cada VM. Portanto, a condição retorna 100 pontos por execução.

A segunda opção, que retorna 100 pontos por execução, é mais cara do que a primeira, que retorna apenas cinco pontos por execução.

Ao configurar as políticas de alerta, escolha níveis de agregação que funcionem melhor para seu caso de uso. Por exemplo, se você se importa com alertas sobre a utilização da CPU, talvez queira agregar no nível da VM e da CPU. Se você se importa com alertas de latência por serviço, talvez queira agregar ao nível de serviço.

Não gerar alertas com base em dados brutos e não agregados

O Monitoring usa um sistema de métricas dimensionais, em que qualquer métrica tem cardinalidade total igual ao número de recursos monitorados multiplicado pelo número de combinações de rótulos nessa métrica. Por exemplo, se você tiver 100 VMs emitindo uma métrica, e essa métrica tiver 10 rótulos com 10 valores cada, a cardinalidade total será 100 * 10 * 10 = 10.000.

Como resultado da forma como a cardinalidade é dimensionada, os alertas sobre dados brutos podem ser extremamente caros. No exemplo anterior, você tem 10.000 pontos retornados para cada período de execução. No entanto, se você agregar à VM, terá apenas 100 pontos retornados por período de execução, independentemente da cardinalidade do rótulo dos dados subjacentes.

Alertar sobre dados brutos também aumenta o risco de receber mais pontos quando suas métricas recebem novos rótulos. No exemplo anterior, se um usuário adicionar um novo rótulo à sua métrica, a cardinalidade total aumentará para 100 * 11 * 10 = 11.000 série temporal. Nesse caso, o número de pontos retornados aumenta em 1.000 a cada período de execução,mesmo que a política de alertas não seja alterada. Se você agregar à VM, apesar do aumento na cardinalidade subjacente, ainda terá apenas 100 série temporal retornadas.

Filtrar respostas desnecessárias

Configure suas condições para avaliar apenas os dados necessários para suas necessidades de alerta. Se você não tomaria medidas para corrigir algo, exclua isso das suas políticas de alertas. Por exemplo, provavelmente não é necessário gerar um alerta em uma VM de desenvolvimento de um estagiário.

Para reduzir alertas e custos desnecessários, filtre as série temporal que não são importantes. É possível usar rótulos de metadados Google Cloud para incluir tags em recursos com categorias e filtrar as categorias de metadados desnecessárias.

Use operadores de fluxo superior para reduzir o número de pontos retornados

Se a condição usar uma consulta do PromQL, você poderá usar um operador top-streams para selecionar um número de pontos retornados com os valores mais altos:

Por exemplo, uma cláusula topk(metric, 5) em uma consulta do PromQL limita o número de pontos retornados a cinco em cada período de execução.

Limitar a um número máximo de pontos pode resultar em dados ausentes e alertas incorretos, como:

  • Se mais de N pontos violarem seu limite, você vai perder dados fora dos N pontos principais.
  • Se um ponto de violação ocorrer fora dos N principais, os alertas poderão ser fechados automaticamente, mesmo que os pontos excluídos ainda violem o limite.
  • As consultas de condição podem não mostrar um contexto importante, como pontos de referência que estão funcionando conforme o esperado.

Para reduzir esses riscos, escolha valores grandes para N e use o operador top-streams apenas em políticas de alertas que avaliam muitas série temporal, como alertas para contêineres individuais do Kubernetes.

Aumentar a duração do período de execução (somente PromQL)

Se a condição usar uma consulta do PromQL, você poderá modificar a duração do período de execução definindo o campo evaluationInterval na condição.

Intervalos de avaliação mais longos resultam em menos pontos retornados por mês. Por exemplo, uma consulta de condição com um intervalo de 15 segundos é executada duas vezes mais do que uma consulta com um intervalo de 30 segundos, e uma consulta com um intervalo de 1 minuto é executada metade das vezes de uma consulta com um intervalo de 30 segundos.

Não use "Recurso não especificado" (somente métricas com base em registros)

As condições de alerta que usam métricas com base em registros permitem definir "Recurso não especificado" como o tipo de recurso monitorado. Quando isso acontece, a condição de alerta inicia uma consulta separada para cada tipo de recurso monitorado no Cloud Monitoring. Como cada consulta cobra um mínimo de um ponto retornado, não especificar o tipo de recurso causa uma fatura alta de pontos retornados.

Para reduzir sua fatura, escolha um tipo de recurso específico em vez de usar "Recurso não especificado". Isso funciona porque a maioria das métricas com base em registros aparece em apenas um tipo de recurso. Se a métrica com base em registros aparecer em vários tipos de recursos, crie várias políticas de alertas ou use várias condições em uma única política.

Monitoramento

Esta seção descreve como monitorar seus custos criando políticas de alertas. Uma política de alertas pode monitorar dados de métricas e notificar você quando eles cruzarem um limite.

Monitorar bytes de registros mensais ingeridos

Para criar uma política de alertas que seja acionada quando o número de bytes de registro gravados nos seus buckets de registro exceder o limite definido pelo usuário para o Cloud Logging, use as configurações abaixo.

Novo estado
Campo

Valor
Recurso e métrica No menu Recursos, selecione Global.
No menu Categorias de métrica, selecione Métrica com base em registros.
No menu Métricas, selecione Bytes de registros ingeridos por mês.
Filtrar Nenhuma.
Várias séries
Agregação de série temporal
sum
Janela contínua 60 m
Função de janela contínua max
Campo
Configurar gatilho de alerta

Valor
Tipo de condição Threshold
Acionador de alerta Any time series violates
Posição do limite Above threshold
Valor do limite Você determina o valor aceitável.
Teste a janela novamente O valor mínimo aceitável é de 30 minutos.

Monitorar o total de métricas ingeridas

Não é possível criar um alerta com base nas métricas ingeridas mensalmente. No entanto, é possível fazer isso para seus custos com o Cloud Monitoring. Para mais informações, consulte Configurar um alerta de faturamento.

Monitorar períodos de trace ingeridos mensalmente

Para criar uma política de alertas acionada quando os períodos mensais do Cloud Trace ingeridos excederem um limite definido pelo usuário, use estas configurações:

Novo estado
Campo

Valor
Recurso e métrica No menu Recursos, selecione Global.
No menu Categorias de métrica, selecione Faturamento.
No menu Métricas, selecione Intervalos de rastreamento mensais ingeridos.
Filtrar
Várias séries
Agregação de série temporal
sum
Janela contínua 60 m
Função de janela contínua max
Campo
Configurar gatilho de alerta

Valor
Tipo de condição Threshold
Acionador de alerta Any time series violates
Posição do limite Above threshold
Threshold value Você determina o valor aceitável.
Teste a janela novamente O valor mínimo aceitável é de 30 minutos.

Configurar um alerta de faturamento

Para receber notificações caso as cobranças faturáveis ou previstas ultrapassem um orçamento, crie um alerta na página Orçamentos e alertas do console do Google Cloud :

  1. No console Google Cloud , acesse a página Faturamento:

    Vá para Faturamento

    Também é possível encontrar essa página usando a barra de pesquisa.

    Se você tiver mais de uma conta do Cloud Billing, siga uma das orientações a seguir:

    • Para gerenciar o Cloud Billing no projeto atual, selecione Acessar a conta de faturamento vinculada.
    • Para localizar outra conta do Cloud Billing, selecione Gerenciar contas de faturamento e escolha a opção em que você quer definir um orçamento.
  2. No menu de navegação de faturamento, selecione Orçamentos e alertas.
  3. Clique em Criar orçamento.
  4. Preencha a caixa de diálogo do orçamento. Nesse campo, selecione Google Cloud projetos e produtos do Google Cloud e depois crie um orçamento para a combinação. Por padrão, você recebe notificações ao atingir 50%, 90% e 100% do orçamento. Para ver a documentação completa, consulte Definir orçamentos e alertas de orçamento.