Recolha métricas do AWS CloudWatch através do exportador do Prometheus CloudWatch

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

Este documento destina-se a programadores e administradores de sistemas que precisam de recolher métricas do AWS CloudWatch. Este documento descreve como configurar o exportador do Prometheus CloudWatch para recolher métricas do AWS CloudWatch.

Com o Cloud Monitoring, pode ver as suas métricas da AWS no mesmo contexto que as suas métricas do Google Cloud. Google Cloud Por exemplo, pode criar um painel de controlo com gráficos que apresentam a utilização da CPU para as suas instâncias do Amazon EC2 e para as suas instâncias do Compute Engine. Também pode criar políticas de alerta para monitorizar as suas métricas da AWS. Para mais informações, consulte as secções seguintes:

Antes de começar

Para recolher métricas do AWS CloudWatch através do exportador do Prometheus CloudWatch, precisa do seguinte:

  • Um Google Cloud projeto com autorizações para fazer o seguinte:
    • Crie uma VM
    • Escreva registos no Cloud Logging
    • Escreva métricas no Cloud Monitoring
  • Uma conta da AWS com credenciais da AWS que podem ser usadas pelo exportador do Prometheus para obter métricas. Para mais informações, consulte o artigo Execute o exportador do Prometheus.

Crie uma VM do Compute Engine

Recomendamos que crie uma VM do Compute Engine Linux para usar especificamente para executar o agente de operações e o exportador do Prometheus CloudWatch. Esta VM atua como o site de recolha de todas as métricas da AWS.

  1. Para criar uma VM do Linux Debian com o nome aws-exporter-test numa zona que especificar, 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 forma:

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

    Para mais informações sobre este comando, consulte a referência gcloud compute instances create.

  2. Para aceder à sua VM de modo a poder instalar o exportador do Prometheus CloudWatch e o agente de operações, pode usar o seguinte comando:

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

    Configure o comando da seguinte forma:

    • Substitua ZONE pela zona na qual criou a sua VM
    • Substitua PROJECT_ID pelo ID do seu Google Cloud projeto
    • Substitua aws-exporter-test se tiver criado a VM com um nome diferente

    Para mais informações sobre este comando, consulte a referência gcloud compute ssh.

Configure o exportador do Prometheus CloudWatch

As secções seguintes descrevem o procedimento para transferir, instalar e configurar o exportador do Prometheus CloudWatch na sua VM do Compute Engine.

Transfira o exportador do Prometheus e o JRE

Para executar o exportador do Prometheus CloudWatch, tem de transferir o exportador e o ambiente de tempo de execução Java (JRE), versão 11 ou mais recente.

  1. Para transferir o ficheiro JAR que contém o exportador do Prometheus CloudWatch, execute o seguinte comando na 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, pode usar um comando como o seguinte:

    sudo apt install default-jre
    

Configure o exportador do Prometheus

Para configurar o exportador do Prometheus CloudWatch, cria um ficheiro de configuração para o serviço ou os serviços da AWS a partir dos quais quer recolher métricas. Para ver informações gerais, consulte a documentação de configuração do exportador do Prometheus CloudWatch.

  • Migrar utilizadores: se estiver a migrar as suas métricas existentes do AWS CloudWatch para o exportador do Prometheus CloudWatch, pode usar os ficheiros de configuração em Configurações do exportador do Prometheus CloudWatch para migração. Estes ficheiros de configuração foram concebidos para replicar as métricas existentes da forma mais fiel possível, mas não recolhem todas as métricas disponíveis através do exportador do Prometheus CloudWatch para os serviços AWS.

  • Novos utilizadores: se não estiver a migrar métricas existentes, recomendamos que não use as configurações de migração. Consulte a documentação do serviço AWS CloudWatch para obter informações sobre como definir configurações do exportador para outros serviços. Também pode encontrar exemplos adicionais no repositório do GitHub do exportador do Prometheus CloudWatch.

Pode combinar a configuração de vários serviços AWS num único ficheiro de configuração. Os exemplos neste documento partem do princípio de que o nome do ficheiro de configuração é config.yml.

Execute o exportador do Prometheus

Antes de poder executar o exportador do Prometheus CloudWatch, tem de fornecer as credenciais e a autorização ao exportador. O exportador do Prometheus CloudWatch usa o AWS Java SDK, que oferece formas de fornecer credenciais através das seguintes variáveis de ambiente:

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

Também tem de ter autorização para usar a API CloudWatch para obter métricas. Precisa das seguintes autorizações do AWS IAM CloudWatch:

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

A utilização da funcionalidade aws_tag_select também requer a autorização tag:GetResources AWS IAM.

Para mais informações sobre a autorização do acesso aos serviços AWS, consulte o artigo Gestão de identidade e de acesso da AWS.

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

  1. Para fornecer credenciais ao exportador, defina as variáveis de ambiente access-key:

    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. Só tem de definir a variável de ambiente AWS_SESSION_TOKEN se estiver a usar credenciais temporárias.

  2. Para testar a configuração, inicie o exportador e carregue o ficheiro de configuração. Execute o seguinte comando:

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

    Altere os valores da porta (9106) e do ficheiro de configuração (config.yml) se necessário.

    Se modificar o ficheiro config.yml enquanto o exportador estiver em execução, pode recarregar o exportador executando o seguinte comando:

    curl -X POST localhost:9106/-/reload
    

    Para utilização num ambiente de produção, pode configurar o exportador para reiniciar se a VM for reiniciada. Por exemplo, nos sistemas Debian, pode usar o gestor de sistemas e serviços, systemd.

Configure o Ops Agent

As secções seguintes descrevem como instalar, configurar e iniciar o agente de operações. Estas secções fornecem informações de configuração mínimas para o agente de operações para utilização com o exportador do Prometheus CloudWatch. Para mais informações sobre estes tópicos, consulte a vista geral do agente de operações.

Instale o agente de operações

Para instalar o agente de operações, use os seguintes comandos para transferir e executar 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

Configure o agente de operações

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

Quando configura o Ops Agent para recolher métricas da AWS a partir do exportador do Prometheus CloudWatch, usa o recetor do Prometheus do agente. Este documento descreve duas configurações básicas para o agente de operações. Selecione uma das configurações e adicione-a ao ficheiro de configuração do utilizador:

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

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

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

  • Cria um destinatário com o nome aws do tipo prometheus. O recetor está configurado para extrair métricas da tarefa aws_exporter. A porta especificada tem de corresponder à porta na qual o exportador do Prometheus CloudWatch está a exportar métricas. Consulte o artigo Execute o exportador do Prometheus.

  • Cria um pipeline denominado aws_pipeline que usa o recetor de métricas aws.

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 elimina métricas da JVM

A configuração seguinte faz tudo o que a configuração básica faz, mas também adiciona uma configuração de reetiquetagem que elimina as métricas da JVM geradas pelo exportador. A eliminação destas métricas reduz os dados de métricas carregados, mas pode dificultar a depuração de problemas com o exportador, porque não está a receber 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

Pode criar configurações muito mais complexas para o agente de operações.

Reinicie o agente de operações

Para aplicar alterações de configuração ao agente Ops, tem de reiniciar o agente.

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

Veja métricas no Cloud Monitoring

No Cloud Monitoring, pode consultar as suas métricas do AWS CloudWatch e criar gráficos como faz para quaisquer outras métricas. Na interface do Metrics Explorer, pode usar o PromQL ou uma interface de criação de consultas. Para mais informações, consulte o artigo Crie gráficos com o explorador de métricas.

Se criou gráficos que quer manter, pode guardá-los em painéis de controlo personalizados. Para mais informações, consulte o artigo Vista geral dos painéis de controlo.

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

O gráfico mostra o resultado da obtenção da estatística aws_ec2_cpuutilization_sum para VMs da AWS através do PromQL.

Para mais informações sobre a utilização do PromQL no Cloud Monitoring, consulte o artigo PromQL para o Cloud Monitoring.

Alerta sobre o comportamento das métricas

No Cloud Monitoring, pode criar políticas de alerta para monitorizar as suas métricas do AWS CloudWatch e receber notificações sobre picos, quedas ou tendências nos valores das métricas.

Monitorize várias regiões

A configuração do exportador do Prometheus CloudWatch suporta a utilização de apenas uma região por ficheiro de configuração. Se precisar de monitorizar várias regiões, recomendamos que execute várias instâncias do exportador do Prometheus, uma configurada para cada região que quer monitorizar. Pode executar vários exportadores numa única VM ou distribuí-los por várias VMs. As imagens do Docker do exportador do Prometheus podem ser úteis nesta situação.

Pode configurar o agente de operações em execução na VM do Compute Engine para extrair vários pontos finais do Prometheus. Recomendamos que, quando configurar várias instâncias do exportador do Prometheus, use um nome job diferente para a configuração de recolha de cada uma, para poder distinguir as instâncias do exportador se precisar de resolver problemas.

Para ver informações sobre a configuração do agente de operações e do recetor do Prometheus, consulte o artigo Configure o agente de operações.

Custo

A Amazon cobra por cada pedido de API CloudWatch ou por cada métrica CloudWatch que pedir. Para ver os preços atuais, consulte os preços do Amazon CloudWatch. O exportador do Prometheus CloudWatch tem as seguintes características de consulta, que podem afetar os seus custos da Amazon:

  • Quando usa o método GetMetricStatistics (predefinição), cada métrica requer um pedido de API. Cada pedido pode incluir várias estatísticas.
  • Quando usa o aws_dimensions, o exportador tem de fazer pedidos de API para determinar que métricas pedir. Normalmente, o número de pedidos de dimensões é insignificante em comparação com o número de pedidos de métricas.

O Cloud Monitoring cobra pelas métricas do AWS CloudWatch do exportador do Prometheus pelo número de amostras carregadas. Para ver os preços atuais, consulte as secções do Cloud Monitoring na página de preços da Google Cloud Observability.

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

Esta secção fornece configurações que replicam, o mais fielmente possível, as métricas de serviço da AWS documentadas na lista de métricas da AWS. Estes ficheiros de configuração destinam-se a ser usados por clientes que estão a migrar para o exportador do Prometheus CloudWatch a partir da solução antiga. Se estiver a configurar o exportador do Prometheus CloudWatch como um novo utilizador em vez de um utilizador de migração e usar estas configurações, não está a recolher todas as métricas da AWS que o exportador do Prometheus CloudWatch disponibiliza.

Para ver um ficheiro de configuração de exemplo para as métricas do AWS CloudWatch, expanda uma das seguintes secções.