Atribuição e controles de custo

O serviço gerenciado do Google Cloud para o Prometheus cobra pelo número de amostras ingeridas no Cloud Monitoring e por solicitações de leitura para a API Monitoring. O número de amostras ingeridas é o principal colaborador do seu custo.

Neste documento, você verá como controlar os custos associados ao processamento de métricas e como identificar fontes de ingestão de alto volume.

Para mais informações sobre os preços do serviço gerenciado para o Prometheus, consulte Resumo do preço do serviço gerenciado para o Prometheus.

Ver sua fatura

Para ver sua fatura do Google Cloud, faça o seguinte:

  1. No Console do Google Cloud, abra a página Faturamento.

    Acessar "Faturamento"

  2. Se você tiver mais de uma conta de faturamento, selecione Ir para a conta de faturamento vinculada para ver a conta do projeto atual. Para localizar outra conta de faturamento, selecione Gerenciar contas de faturamento e escolha a conta que você quer recber os relatórios de uso.

  3. Selecione relatórios

  4. No menu Serviços, selecione a opção Stackdriver Monitoring.

  5. No menu SKUs, selecione as seguintes opções:

    • Serviço gerenciado para amostras do Prometheus ingeridas
    • Solicitações da API Monitoring

A captura de tela a seguir mostra o relatório de faturamento do serviço gerenciado para o Prometheus em um projeto:

O relatório de faturamento do serviço gerenciado para o Prometheus mostra o uso atual e
projetado.

Reduzir os custos

Para reduzir os custos associados ao uso do serviço gerenciado para o Prometheus, faça o seguinte:

  • Filtre os dados de métricas gerados para reduzir o número de séries temporais que você envia ao serviço gerenciado.
  • Reduza o número de amostras coletadas alterando o intervalo de extração.
  • Limite o número de amostras de métricas de alta cardinalidade potencialmente configuradas incorretamente.

Reduzir o número de séries temporais

A documentação do Prometheus de código aberto raramente recomenda a filtragem do volume de métricas, o que é razoável quando os custos são limitados pelos custos da máquina. No entanto, o pagar por um provedor de serviços gerenciados com base na unidade, enviar dados ilimitados pode gerar contas desnecessariamente altas.

Os exportadores incluídos no projeto kube-prometheus (o serviço kube-state-metrics em particular) podem emitir muitos dados de métricas. Por exemplo, o serviço kube-state-metrics emite centenas de métricas, muitas delas podem ser completamente sem valor para você como consumidor. Um novo cluster de três nós que usa o projeto kube-prometheus envia aproximadamente 900 amostras por segundo para o serviço gerenciado para o Prometheus. Filtrar essas métricas externas pode ser suficiente para que sua fatura chegue a um nível aceitável.

Para reduzir o número de métricas, faça o seguinte:

Por exemplo, se você estiver usando o serviço kube-state-metrics, convém começar com um filtro keep na configuração de extração e, em seguida, ajustá-lo. Por exemplo, usar o seguinte filtro em um novo cluster de três nós reduz o volume da amostra em aproximadamente 125 amostras por segundo:

kube_(daemonset|deployment|pod|namespace|node|statefulset).+

Às vezes, pode parecer que um exportador inteiro é irrelevante. Por exemplo, por padrão, o pacote kube-prometheus instala os seguintes monitores de serviço, muitos dos quais são desnecessários em um ambiente gerenciado:

  • alertmanager
  • coredns
  • grafana
  • kube-apiserver
  • kube-controller-manager
  • kube-scheduler
  • kube-state-metrics
  • kubelet
  • node-exporter
  • prometheus
  • prometheus-adapter
  • prometheus-operator

Para reduzir o número de métricas exportadas, exclua, desative ou interrompa a coleta de monitores de serviço desnecessários. Por exemplo, desativar o monitor de serviço kube-apiserver em um novo cluster de três nós reduz o volume de amostras em aproximadamente 200 amostras por segundo.

Reduzir o número de amostras coletadas

A cobrança do Serviço gerenciado é feita por amostra no Prometheus. Para reduzir o número de amostras ingeridas, aumente o período de amostragem. Exemplo:

  • Alterar um período de amostragem de 10 segundos para um período de amostragem de 30 segundos, pode reduzir o volume de amostras em 66%, sem muita perda de informações.
  • Alterar um período de amostragem de 10 segundos para um período de amostragem de 60 segundos pode reduzir o volume da amostra em 83%.

Para informações sobre como as amostras são contadas e como o período de amostragem afeta o número de amostras, consulte Exemplos de preços com base em amostras ingeridas.

Geralmente, é possível definir o intervalo de extração por job ou por segmentação.

Para a coleção gerenciada, defina o intervalo de extração no recurso PodMonitoring usando o campo interval. Para a coleção autoimplantada, defina o intervalo de amostragem nas configurações de extração, geralmente definindo um campo interval ou scrape_interval.

Limitar as amostras de métricas de alta cardinalidade

É possível criar métricas de alta cardinalidade adicionando rótulos com um grande número de valores em potencial, como um ID do usuário ou um endereço IP. Essas métricas podem gerar um número muito grande de amostras. Usar rótulos com um grande número de valores normalmente é uma configuração incorreta. É possível proteger contra métricas de alta cardinalidade nos coletores autoimplantados definindo um valor sample_limit nas configurações de extração.

Se você usar esse limite, recomendamos defini-lo como um valor muito alto para que ele capture apenas métricas configuradas incorretamente. Todas as amostras acima do limite são descartadas e pode ser muito difícil diagnosticar problemas causados ao exceder o limite.

Usar um limite de amostra não é uma boa maneira de gerenciar a ingestão de amostra, mas o limite pode protegê-lo contra erros de configuração acidentais. Para mais informações, consulte Como usar sample_limit para evitar sobrecarga.

Identifique e atribua custos

Use o Cloud Monitoring para identificar as métricas do Prometheus que estão gravando o maior número de amostras. Essas métricas estão contribuindo mais para seus custos. Depois de identificar as métricas mais caras, é possível modificar as configurações de verificação para filtrá-las de maneira adequada.

As seções a seguir descrevem maneiras de analisar o número de amostras que você está enviando ao serviço gerenciado para o Prometheus e atribuir alto volume a métricas específicas, namespaces do Kubernetes e regiões do Google Cloud.

Identifique métricas de alto volume

Para identificar as métricas do Prometheus com os maiores volumes de ingestão, faça o seguinte:

  1. No Console do Google Cloud, acesse a página Monitoring.

    Acessar Monitoring

  2. No painel de navegação do Monitoring, clique em Metrics Explorer.
  3. Selecione oConfiguração e, em seguida, use as seguintes informações para preencher os campos:
    1. Para o campo Tipo de recurso, digite ou selecione Atribuição de ingestão de métrica de dados.
    2. Para o campo Métrica campo, digite ou selecione Amostras escritas por ID de atribuição de dados.
    3. No campo Agrupar por, selecione metric_type.
    4. No campo Agregador, selecione soma.

    Agora o gráfico mostra os volumes de ingestão de cada tipo de métrica.

  4. Para identificar as métricas com os maiores volumes de ingestão, clique em Valor na legenda do gráfico.

O gráfico resultante, que mostra suas 300 principais métricas por volume classificado por média, se parece com a seguinte captura de tela:

O gráfico configurado mostra o volume de ingestão de cada
métrica.

Identifique namespaces de alto volume

Também é possível usar os tipos de métrica e recurso do exemplo anterior para atribuir o volume de processamento a namespaces específicos do Kubernetes e tomar as ações apropriadas. Exemplo:

  • Para correlacionar o volume de ingestão geral com namespaces, selecione os seguintes rótulos no campo Agrupar por:

    • attribution_dimension
    • attribution_id
  • Para correlacionar o volume de ingestão de métricas individuais com namespaces, selecione os seguintes rótulos no campo Agrupar por:

    • attribution_dimension
    • attribution_id
    • metric_type
  • Para identificar os namespaces responsáveis por uma métrica específica de alto volume:

    1. Identifique o tipo de métrica da métrica de alto volume usando um dos outros exemplos para identificar tipos de métricas de alto volume. O tipo de métrica é a string na legenda do gráfico que começa com prometheus.googleapis.com/.
    2. Para restringir os dados do gráfico a um tipo de métrica específico, adicione um filtro ao tipo de métrica no campo Filtros. Exemplo:

      metric_type=prometheus.googleapis.com/container_tasks_state/gauge

    3. Selecione os seguintes rótulos para o campo Agrupar por:

      • attribution_dimension
      • attribution_id
  • Para ver o processamento por região do Google Cloud, adicione o rótulo location ao campo Agrupar por.

  • Para ver a ingestão por projeto do Cloud, adicione o rótulo resource_container ao campo Agrupar por.