Coletar métricas do AWS CloudWatch usando o exportador do Prometheus para CloudWatch

Este documento descreve como usar o exportador do Prometheus CloudWatch de código aberto e o Agente de operações em execução em uma instância do Compute Engine para coletar métricas do AWS CloudWatch e armazená-las em um projeto do Google Cloud.

Este documento é destinado a desenvolvedores e administradores de sistema que precisam para coletar métricas do AWS CloudWatch. Neste documento, descrevemos como configurar Exportador do Prometheus para o CloudWatch para coletar métricas do AWS CloudWatch.

Com o Cloud Monitoring, é possível conferir as métricas da AWS no mesmo contexto que as métricas do Google Cloud. Por exemplo, você pode criar um painel com gráficos que exibem o uso de CPU das instâncias do Amazon EC2 e para suas instâncias do Compute Engine. Também é possível criar políticas de alertas para monitorar as métricas da AWS. Para saber mais, consulte as seguintes seções:

Antes de começar

Para coletar métricas do AWS CloudWatch usando o exportador do Prometheus CloudWatch, você precisa:

  • Um projeto do Google Cloud com permissões para fazer o seguinte:
    • Criar uma VM
    • Gravar registros no Cloud Logging
    • Gravar métricas no Cloud Monitoring
  • Uma conta da AWS com credenciais da AWS que possam ser usadas pelo Exportador do Prometheus para buscar métricas. Para mais informações, consulte Executar o exportador do Prometheus.

Criar uma VM do Compute Engine

Recomendamos a criação de uma VM do Compute Engine Linux para usar especificamente para executar o Agente de operações e o exportador do Prometheus CloudWatch. Essa VM atua como o local de coleta de todas as métricas da AWS.

  1. Para criar uma VM do Debian Linux chamada aws-exporter-test em uma zona especificada, execute o seguinte comando:

    gcloud compute instances create \
      --image-project debian-cloud \
      --image-family debian-11 \
      --zone ZONE \
      aws-exporter-test
    

    Configure o comando da seguinte maneira:

    • Substitua ZONE pela zona da nova VM.
    • Opcional. Substitua aws-exporter-test por um nome diferente para sua VM.

    Para mais informações sobre esse comando, consulte as referências do gcloud compute instances create.

  2. Para acessar a VM e instalar o exportador do Prometheus CloudWatch e o Ops Agent, use o seguinte comando:

    gcloud compute ssh --zone ZONE  --project PROJECT_ID  aws-exporter-test
    

    Configure o comando da seguinte maneira:

    • Substitua ZONE pela zona em que você criou a VM.
    • Substitua PROJECT_ID pelo ID do seu projeto do Google Cloud.
    • Substitua aws-exporter-test se você criou a VM com um nome diferente.

    Para mais informações sobre esse comando, consulte as referências do gcloud compute ssh.

Configurar o exportador do Prometheus para CloudWatch

As seções a seguir descrevem os procedimentos de download, instalação e configurar o exportador do Prometheus CloudWatch na VM do Compute Engine.

Fazer o download do exportador do Prometheus e do JRE

Para executar o exportador do Prometheus CloudWatch, faça o download do exportador e do Java Runtime Environment (JRE), versão 11 ou mais recente.

  1. Para fazer o download do arquivo JAR que contém o exportador do Prometheus CloudWatch, execute o seguinte comando na sua instância do Compute Engine:

    curl -sSO https://github.com/prometheus/cloudwatch_exporter/releases/download/v0.15.1/cloudwatch_exporter-0.15.1-jar-with-dependencies.jar
    
  2. Para instalar o JRE, use um comando como este:

    sudo apt install default-jre
    

Configurar o exportador do Prometheus

Para configurar o exportador do Prometheus CloudWatch, crie um arquivo de configuração para o serviço ou os serviços da AWS de que você quer coletar métricas. Para informações gerais, consulte a documentação de configuração do exportador do Prometheus CloudWatch.

  • Como migrar usuários: se você estiver migrando seu AWS CloudWatch atual para o exportador CloudWatch do Prometheus, depois será possível usar os arquivos de configuração nas configurações do exportador do CloudWatch do Prometheus para migração. Esses arquivos de configuração são projetados para replicar as métricas existentes como o mais próximo possível, mas não coletam todas as métricas disponíveis usando o exportador do Prometheus CloudWatch para os serviços da AWS.

  • Novos usuários: se você não estiver migrando métricas atuais, recomendamos você não usa as configurações de migração. Veja o serviço AWS CloudWatch documentação para mais informações. sobre como definir configurações de exportador para outros serviços. Você também pode encontre mais amostras no exportador do Prometheus para CloudWatch Repositório do GitHub.

É possível combinar a configuração de vários serviços da AWS em um arquivo de configuração. Os exemplos neste documento pressupõem que seu arquivo de configuração é denominado config.yml.

Executar o exportador do Prometheus

Antes de executar o exportador do Prometheus CloudWatch, forneça credenciais e autorização ao exportador. O exportador do Prometheus CloudWatch usa o AWS Java SDK, que oferece maneiras de fornecer credenciais usando as seguintes variáveis de ambiente:

Para mais informações sobre como fornecer credenciais ao SDK, consulte AWS SDK for Java 2.x.

Você também precisa ter permissão para usar a API CloudWatch para extrair métricas. Você precisa das seguintes permissões do CloudWatch do IAM da AWS:

  • cloudwatch:ListMetrics
  • cloudwatch:GetMetricStatistics
  • cloudwatch:GetMetricData

O uso do recurso aws_tag_select também requer que tag:GetResources Permissão do IAM da AWS.

Para mais informações sobre autorização de acesso aos serviços da AWS, consulte Identity and Access Management da AWS.

Para executar o exportador do Prometheus CloudWatch, faça o seguinte:

  1. Para fornecer credenciais ao exportador, defina o ambiente da chave de acesso variáveis:

    export AWS_ACCESS_KEY=YOUR_ACCESS_KEY
    export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
    export AWS_SESSION_TOKEN=YOUR_SESSION_TOKEN
    

    Substitua as variáveis YOUR_KEY pelas suas chaves de acesso. Você só precisa definir a variável de ambiente AWS_SESSION_TOKEN se estiver usando credenciais temporárias.

  2. Para testar a configuração, inicie o exportador e carregue o arquivo de configuração. Para isso, execute o seguinte comando:

    java -jar cloudwatch_exporter-0.15.1-jar-with-dependencies.jar 9106 config.yml
    

    Alterar a porta (9106) e o arquivo de configuração (config.yml) se necessário.

    Se você modificar o arquivo config.yml enquanto o exportador estiver em execução, Atualize o exportador executando o seguinte comando:

    curl -X POST localhost:9106/-/reload
    

    Para uso em um ambiente de produção, você pode configurar o exportador para reiniciar se a VM for reiniciada. Por exemplo, em sistemas Debian, é possível usar o gerenciador de sistema e serviços, systemd.

Configurar o agente de operações

As seções a seguir descrevem como instalar, configurar e iniciar o agente de operações. Essas seções fornecem informações mínimas de configuração do o Agente de operações para uso com o exportador do Prometheus para o CloudWatch. Para mais informações sobre esses tópicos, consulte Informações gerais do Agente de operações.

Instalar o agente de operações

Para instalar o Agente de operações, use os seguintes comandos para fazer o download e execute o script de instalação do agente:

curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh
sudo bash add-google-cloud-ops-agent-repo.sh --also-install

Configurar o agente de operações

Para configurar o Agente de operações, adicione elementos de configuração ao do arquivo de configuração de usuário do agente. No Linux, o arquivo de configuração do usuário é /etc/google-cloud-ops-agent/config.yaml.

Quando você configura o Agente de operações para coletar métricas da AWS do Exportador do Prometheus para o CloudWatch, use o receptor do Prometheus do agente. Isso o documento descreve duas configurações básicas do Agente de operações. Selecione uma das configurações e adicione ao arquivo de configuração do usuário:

sudo vim /etc/google-cloud-ops-agent/config.yaml

Configuração básica do Agente de operações

A configuração a seguir fornece uma configuração mínima para o agente de operações. Essa configuração faz o seguinte:

  • Cria um receptor chamado aws do tipo prometheus. O destinatário é configurado para coletar métricas do job aws_exporter. O a porta especificada precisa corresponder à porta em que o exportador do Prometheus CloudWatch está exportar métricas; consulte Executar o exportador do Prometheus.

  • Cria um pipeline com o nome aws_pipeline que usa as métricas aws recebidas.

metrics:
  receivers:
    aws:
      type: prometheus
      config:
        scrape_configs:
          - job_name: 'aws_exporter'
            scrape_interval: 10s
            static_configs:
              - targets: ['localhost:9106']
  service:
    pipelines:
      aws_pipeline:
        receivers:
          - aws

Configuração que remove métricas do JVM

A configuração a seguir faz tudo que a configuração básica faz, mas também adiciona uma configuração de nova rotulagem que descarta métricas do JVM geradas pelo exportador. O descarte dessas métricas reduz a dados de métricas ingeridos, mas pode causar mais problemas ao exportador difícil de depurar, porque você não está recebendo as métricas do próprio exportador:

metrics:
  receivers:
    aws:
      type: prometheus
      config:
        scrape_configs:
          - job_name: 'aws_exporter'
            scrape_interval: 10s
            static_configs:
              - targets: ['localhost:9106']
            # Drop the exporter's own JVM metrics to reduce noise.
            metric_relabel_configs:
              - source_labels: [ __name__ ]
                regex: 'jvm_.*'
                action: drop
  service:
    pipelines:
      aws_pipeline:
        receivers:
          - aws

É possível criar configurações muito mais complexas para o Agente de operações.

Reiniciar o agente de operações

Para aplicar alterações de configuração ao Agente de operações, você precisa reiniciá-lo.

  1. Para reiniciar o agente, execute o seguinte comando na instância:
    sudo service google-cloud-ops-agent restart
    
  2. Para confirmar se o agente foi reiniciado, execute o seguinte comando e verifique se os componentes "Agente de métricas" e "Agente do Logging" foram iniciados:
    sudo systemctl status google-cloud-ops-agent"*"
    

Ver métricas no Cloud Monitoring

No Cloud Monitoring, é possível consultar as métricas do AWS CloudWatch e criar gráficos como você faz com qualquer outra métrica. Na interface do Metrics Explorer, é possível usar o PromQL, a linguagem de consulta do Monitoring (MQL) ou uma interface de criação de consultas. Para mais informações, consulte Criar gráficos com Metrics Explorer.

Se você criou gráficos que deseja manter, é possível salvá-los em painéis personalizados. Para mais informações, consulte Visão geral dos painéis.

O gráfico a seguir mostra uma consulta PromQL para Métrica aws_ec2_cpuutilization_sum para VMs da AWS:

O gráfico mostra o resultado da busca da estatística aws_ec2_cpuutilization_sum para VMs da AWS usando PromQL.

É possível consultar qualquer métrica no Cloud Monitoring com o PromQL. Para mais informações, consulte Como mapear métricas do Cloud Monitoring para PromQL.

É possível consultar as métricas do Prometheus usando o PromQL ou ferramentas do Cloud Monitoring, como a Linguagem de consulta do Monitoring (MQL). Quando as métricas do Prometheus são ingeridas no Cloud Monitoring, cada métrica é transformada usando a transformação padrão do OpenTelemetry para o Prometheus e mapeada para o tipo de recurso monitorado prometheus_target do Cloud Monitoring. A transformação inclui as seguintes mudanças:

  • O nome da métrica é prefixado com a string prometheus.googleapis.com/.
  • Qualquer caractere não alfanumérico, como pontos (.), no nome da métrica são substituídos por sublinhados (_).
  • O nome da métrica é sufixado com uma string que indica o tipo de métrica, como /gauge ou /counter.

Para consultar a métrica aws_ec2_cpuutilization_sum do Prometheus usando MQL, consulte a métrica como prometheus.googleapis.com/aws_ec2_cpuutilization_sum/gauge e Especifique o tipo de recurso monitorado prometheus_target:

fetch prometheus_target :: 'prometheus.googleapis.com/aws_ec2_cpuutilization_sum/gauge'

O gráfico a seguir mostra o resultado da consulta MQL para a métrica aws_ec2_cpuutilization_sum do Prometheus:

O gráfico mostra o resultado da busca da estatística aws_ec2_cpuutilization_sum para VMs da AWS usando o MQL.

Alerta sobre o comportamento da métrica

No Cloud Monitoring, é possível criar [políticas de alertas][alert-intro] para monitorar as métricas do AWS CloudWatch e receber notificações sobre picos, quedas ou tendências nos valores das métricas.

Monitorar várias regiões

A configuração do exportador do Prometheus CloudWatch oferece suporte ao uso de apenas uma região por arquivo de configuração. Se você precisar monitorar várias regiões, execute várias instâncias do exportador do Prometheus, um configurado para cada região que você quer monitorar. É possível executar vários exportadores em uma única VM ou distribuí-los entre VMs. O Imagens do Docker do exportador do Prometheus pode ser útil nessa situação.

É possível configurar o Agente de operações em execução na VM do Compute Engine para extrair vários endpoints do Prometheus. Recomendamos que, quando você configurar várias instâncias do exportador do Prometheus, use um job nome diferente para a configuração de raspagem de dados para cada um, assim você pode distinguir as instâncias do exportador se você precisar solucionar problemas.

Para informações sobre como configurar o agente de operações e o receptor do Prometheus, consulte Configurar o agente de operações.

Custo

A Amazon cobra por cada solicitação da API CloudWatch ou por cada métrica do CloudWatch solicitada. Para conferir os preços atuais, consulte Preços do Amazon CloudWatch. O exportador CloudWatch do Prometheus tem a seguinte consulta do Google Ads, o que pode afetar os custos da Amazon:

  • Ao usar o método GetMetricStatistics (padrão), cada métrica requer uma solicitação de API. Cada solicitação pode incluir várias estatísticas.
  • Ao usar aws_dimensions, o exportador precisa executar solicitações de API para determinar quais métricas devem ser solicitadas. O número de solicitações de dimensões normalmente é insignificante em comparação com o número de solicitações de métricas.

O Cloud Monitoring cobra pelas métricas da AWS CloudWatch do exportador do Prometheus pelo número de amostras ingeridas. Para preços atuais, consulte o Resumo de preços do Monitoring.

Configurações do exportador do CloudWatch do Prometheus para migração

Esta seção fornece configurações que são replicadas o mais possível, as métricas de serviço da AWS documentadas no Lista de métricas da AWS. Essas configurações são destinados aos clientes que estão migrando para o Exportador do Prometheus CloudWatch da solução legada. Se você estiver configurando o exportador CloudWatch do Prometheus como um novo usuário em vez de um usuário da migração e você usar essas configurações, não coletará todas as configurações que o exportador do Prometheus para CloudWatch disponibiliza.

Para visualizar um arquivo de configuração de amostra das métricas do AWS CloudWatch, expanda um das seções a seguir.