Usando dados de alocação de custos divididos com o Amazon Managed Service for Prometheus - Exportações de dados da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando dados de alocação de custos divididos com o Amazon Managed Service for Prometheus

A divisão dos dados de custo do Amazon EKS exige que você colete e armazene métricas de seus clusters, incluindo memória e uso da CPU. O Amazon Managed Service for Prometheus pode ser usado para essa finalidade.

Quando você optar por dividir os dados de alocação de custos e seu espaço de trabalho do Amazon Managed Service for Prometheus começar a receber as duas métricas necessárias (container_cpu_usage_seconds_totalecontainer_memory_working_set_bytes), os dados de alocação de custos divididos reconhecerão as métricas e as usarão automaticamente.

nota

As duas métricas necessárias (container_cpu_usage_seconds_totalecontainer_memory_working_set_bytes) estão presentes na configuração padrão do Prometheus scrape e na configuração padrão fornecida com um coletor gerenciado. AWS No entanto, se você personalizar essas configurações, não renomeie, modifique ou remova os seguintes rótulos das container_memory_working_set_bytes métricas container_cpu_usage_seconds_total e: namenamespace, e. pod Se você renomear, modificar ou remover esses rótulos, isso poderá afetar a ingestão de suas métricas.

Você pode usar o Amazon Managed Service for Prometheus para coletar métricas EKS de uma única conta de uso, em uma única região. O espaço de trabalho do Amazon Managed Service for Prometheus deve estar nessa conta e região. Você precisa de uma instância do Amazon Managed Service for Prometheus para cada conta de uso e região para a qual você deseja monitorar os custos. Você pode coletar métricas para vários clusters no espaço de trabalho do Amazon Managed Service for Prometheus, desde que estejam na mesma conta de uso e região.

As seções a seguir descrevem como enviar as métricas corretas do seu cluster EKS para o espaço de trabalho do Amazon Managed Service for Prometheus.

Pré-requisitos

Como pré-requisitos para usar o Amazon Managed Service for Prometheus com dados de alocação de custos divididos:

  • Você precisa ativar os dados de alocação de custos divididos no console AWS Billing and Cost Management. Para obter detalhes, consulte Habilitar dados de alocação de custos divididos. A opção de dividir os dados de alocação de custos cria uma função vinculada ao serviço em cada conta de uso para consultar o Amazon Managed Service for Prometheus para obter as métricas de cluster do Amazon EKS nessa conta. Para obter mais informações, consulte Funções vinculadas a serviços para dados de alocação de custos divididos.

  • Você precisa de um cluster EKS para o qual deseja rastrear dados de alocação de custos divididos. Isso pode ser um cluster existente ou você pode criar um novo. Para obter mais informações, consulte Criação de um cluster do Amazon EKS no Guia do usuário do Amazon EKS.

    nota

    Você precisará do EKS cluster ARNsecurity group IDs, e de pelo menos dois subnet IDs (em zonas de disponibilidade diferentes) para usar nas etapas posteriores.

    (opcional) Defina o modo de autenticação do cluster EKS como API ouAPI_AND_CONFIG_MAP.

  • Você precisa de uma instância do Amazon Managed Service for Prometheus na mesma conta e região do seu cluster EKS. Se ainda não tiver um, você pode criar um. Para obter mais informações sobre a criação de uma instância do Amazon Managed Service para Prometheus, consulte Criar um espaço de trabalho no Guia do usuário do Amazon Managed Service for Prometheus.

    nota

    Você precisará do Amazon Managed Service for Prometheus workspace ARN para uso em etapas posteriores.

Encaminhamento de métricas do EKS para o Amazon Managed Service for Prometheus

Depois de ter um cluster EKS e uma instância do Amazon Managed Service for Prometheus, você pode encaminhar as métricas do cluster para a instância. Você pode enviar métricas de duas maneiras.

Opção 1: usar um coletor AWS gerenciado

Usar um coletor AWS gerenciado (um raspador) é a maneira mais simples de enviar métricas de um cluster EKS para uma instância do Amazon Managed Service for Prometheus. O procedimento a seguir orienta você na criação de um coletor AWS gerenciado. Para obter informações mais detalhadas, consulte coletores AWS gerenciados no Guia do usuário do Amazon Managed Service for Prometheus.

nota

AWS coletores gerenciados têm um intervalo mínimo de raspagem de 30 segundos. Se você tiver frutos de curta duração, a recomendação é definir o intervalo do raspador para 15 segundos. Para usar um intervalo de 15 segundos com o raspador, use a opção 2 para criar seu próprio agente Prometheus.

Há três etapas para criar um coletor AWS gerenciado:

  1. Crie uma configuração de raspador.

  2. Crie o raspador.

  3. Configure seu cluster EKS para permitir que o raspador acesse as métricas.

Etapa 1: criar uma configuração de raspador

Para criar um raspador, você deve ter uma configuração de raspador. Você pode usar uma configuração padrão ou criar a sua própria. A seguir estão três maneiras de obter uma configuração de raspador:

  • Obtenha a configuração padrão usando a AWS CLI, chamando:

    aws amp get-default-scraper-configuration
  • Crie sua própria configuração. Para obter detalhes, consulte as instruções de configuração do Scraper no Guia do usuário do Amazon Managed Service for Prometheus.

  • Copie o exemplo de configuração fornecido nas mesmas instruções de configuração do Scraper no Guia do usuário do Amazon Managed Service for Prometheus.

Você pode editar a configuração do raspador para modificar o intervalo de coleta ou filtrar as métricas que são raspadas, por exemplo.

Para filtrar as métricas que são coletadas para incluir apenas as duas necessárias para dividir os dados de alocação de custos, use a seguinte configuração de raspador:

scrape_configs: - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token job_name: kubernetes-nodes-cadvisor scrape_interval: 30s scrape_timeout: 10s kubernetes_sd_configs: - role: node relabel_configs: - regex: (.+) replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor source_labels: - __meta_kubernetes_node_name target_label: __metrics_path__ - replacement: kubernetes.default.svc:443 target_label: __address__ metric_relabel_configs: - source_labels: [__name__] regex: 'container_cpu_usage_seconds_total|container_memory_working_set_bytes' action: keep

Depois de ter a configuração do raspador, você deve codificá-lo em base64 para uso na etapa 2. A configuração é um arquivo YAML de texto. Para codificar o arquivo, use um site como https://www.base64encode.org/.

Etapa 2: criar o raspador

Agora que você tem um arquivo de configuração, precisa criar seu raspador. Crie um raspador usando o seguinte comando da AWS CLI, com base nas variáveis descritas na seção de pré-requisitos. Você deve usar as informações do seu cluster EKS para os <EKS-CLUSTER-ARN><SG-SECURITY-GROUP-ID><SUBNET-ID>campos , e, <BASE64-CONFIGURATION-BLOB>substituir pela configuração do raspador que você criou na etapa anterior e substituir pelo ARN do espaço de trabalho do <AMP_WORKSPACE_ARN>Amazon Managed Service for Prometheus.

aws amp create-scraper \ --source eksConfiguration="{clusterArn=<EKS-CLUSTER-ARN>,securityGroupIds=[<SG-SECURITY-GROUP-ID>],subnetIds=[<SUBNET-ID>]}" \ --scrape-configuration configurationBlob=<BASE64-CONFIGURATION-BLOB> \ --destination ampConfiguration={workspaceArn="<AMP_WORKSPACE_ARN>"}

Anote o scraperId que é retornado para uso na etapa 3.

Etapa 3: configure seu cluster EKS para permitir que o raspador acesse as métricas

Se o modo de autenticação do seu cluster EKS estiver definido como API ouAPI_AND_CONFIG_MAP, seu raspador terá automaticamente a política correta de acesso no cluster e os raspadores terão acesso ao seu cluster. Nenhuma configuração adicional é necessária, e as métricas devem estar fluindo para o Amazon Managed Service for Prometheus.

Se o modo de autenticação do seu cluster EKS não estiver definido como API ouAPI_AND_CONFIG_MAP, você precisará configurar manualmente o cluster para permitir que o raspador acesse suas métricas por meio de um ClusterRole e. ClusterRoleBinding Para saber como habilitar essas permissões, consulte Configuração manual de um cluster EKS para acesso por raspador no Guia do usuário do Amazon Managed Service for Prometheus.

Opção 2: criar seu próprio agente Prometheus

Se você não pode usar o coletor AWS gerenciado ou já tem seu próprio servidor Prometheus, pode usar sua própria instância do Prometheus como agente para extrair métricas do seu cluster EKS e enviá-las para o Amazon Managed Service for Prometheus.

Para obter instruções detalhadas sobre como usar sua própria instância do Prometheus como agente, consulte Como usar uma instância do Prometheus como coletor no Guia do usuário do Amazon Managed Service for Prometheus.

Veja a seguir um exemplo de configuração de raspagem do Prometheus que inclui o intervalo de coleta do servidor do Prometheus e as métricas de contêiner necessárias para dividir os dados de alocação de custos. Se você tiver pods de curta duração, a recomendação é reduzir o intervalo padrão de coleta do servidor Prometheus de 30 segundos para 15 segundos. Observe que isso pode resultar em alto uso da memória do servidor Prometheus.

scrape_configs: - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token job_name: kubernetes-nodes-cadvisor scrape_interval: 30s scrape_timeout: 10s kubernetes_sd_configs: - role: node relabel_configs: - regex: (.+) replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor source_labels: - __meta_kubernetes_node_name target_label: __metrics_path__ - replacement: kubernetes.default.svc:443 target_label: __address__ metric_relabel_configs: - source_labels: [__name__] regex: 'container_cpu_usage_seconds_total|container_memory_working_set_bytes' action: keep

Se você seguiu Configurar a ingestão de um novo servidor Prometheus usando o Helm no Guia do usuário do Amazon Managed Service for Prometheus, poderá atualizar sua configuração de scrape.

Para atualizar sua configuração de raspagem
  1. Edite a my_prometheus_values_yaml partir do guia e inclua o exemplo de configuração de raspagem no bloco. server

  2. Execute o comando a seguir usando prometheus-chart-name e a prometheus-namespace partir do Guia do usuário do Amazon Managed Service for Prometheus.

helm upgrade prometheus-chart-name prometheus-community/prometheus -n prometheus-namespace -f my_prometheus_values_yaml

Para saber mais sobre scrape_interval ou como usar um scrape_interval não global, consulte a configuração de scrape do Prometheus.

Como alternativa, você pode usar o AWS Distro for OpenTelemetry Collector que tem um receptor Prometheus, um exportador de gravação remota Prometheus e a extensão de autenticação AWS Sigv4 para obter acesso de gravação remota ao Amazon Managed Service for Prometheus.

nota

Depois de configurar seu agente Prometheus, AWS diferentemente dos coletores gerenciados, você é responsável por manter o agente atualizado e pronto para coletar métricas.

Estimando seus custos do Amazon Managed Service para Prometheus

Você pode usar a Calculadora de AWS preços para estimar o custo do uso do Amazon Managed Service for Prometheus para dividir os dados de alocação de custos.

Para configurar o Amazon Managed Service for Prometheus de acordo com sua estimativa
  1. Abra a calculadora de AWS preços em https://calculator.aws/#/.

  2. Selecione Criar estimativa.

  3. Na página Adicionar serviço, insira Amazon Managed Service for Prometheus no campo de pesquisa e escolha Configurar.

  4. No campo Descrição, insira uma descrição para sua estimativa.

  5. Escolha uma Region.

  6. Selecione Calcular o custo usando os detalhes da sua infraestrutura. Essa opção permite estimar seus custos de ingestão, armazenamento e consulta de amostras com base na configuração de infraestrutura atual ou proposta.

  7. Em Número de instâncias do EC2, insira o número total de instâncias do EC2 em todos os seus clusters para toda a sua família de faturamento consolidado (incluindo todas as contas e regiões). Se você usa AWS Fargate, use o número de tarefas do Fargate como proxy para sua contagem de instâncias do EC2.

  8. Os dados de alocação de custos divididos exigem duas métricas: container_cpu_usage_seconds_total e. container_memory_working_set_bytes Para métricas do Prometheus por instâncias do EC2, insira 2.

  9. Os dados divididos de alocação de custos sugerem um intervalo de 15 segundos. Em Intervalo de coleta métrica (em segundos), insira 15. Se você usou um intervalo diferente (por exemplo, 30 segundos), altere-o para o intervalo que você configurou.

  10. Os dados de alocação de custos divididos não impõem requisitos específicos para os outros parâmetros, portanto, insira os valores apropriados para o restante dos parâmetros de entrada de acordo com os requisitos de sua empresa.

  11. Selecione Salvar e adicionar serviço.