Coletar métricas do AWS CloudWatch usando o 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 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, você pode conferir suas métricas da AWS no mesmo contexto que as 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 alertas políticas 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 CloudWatch do Prometheus, você vai precisar do seguinte:

  • 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 criar uma VM Linux do Compute Engine para usar especificamente para executar o Agente de operações e o exportador do Prometheus para o CloudWatch. Essa VM funciona como o local de coleta para todas as métricas da AWS.

  1. Para criar uma VM do Debian Linux chamada aws-exporter-test em uma zona que você 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 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 sua VM e instalar o exportador CloudWatch do Prometheus e o Agente de operações, 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ê tiver criado sua VM com uma 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.

Faça o download do exportador do Prometheus e do JRE

Para executar o exportador do Prometheus para CloudWatch, você precisa fazer o download do exportador e Java Runtime Environment (JRE), versão 11 ou mais recente.

  1. Para fazer o download do arquivo JAR que contém o exportador CloudWatch do Prometheus, execute o 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, 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 configuração do exportador CloudWatch do Prometheus Documentação.

  • 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 de configuração do Terraform. 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 para CloudWatch, você precisa fornecer o com credenciais e autorização. O exportador do Prometheus para CloudWatch usa a API AWS Java SDK do Cloud, que oferece maneiras de fornecer credenciais usando as seguintes variáveis de ambiente:

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

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

  • 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 para 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 você estiver usando credenciais temporárias.

  2. Para testar sua configuração, inicie o exportador e carregue sua configuração 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, é possível 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 as 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 faria para qualquer outra métrica. No Metrics Explorer é possível usar o PromQL, a linguagem de consulta do Monitoring (MQL, na sigla em inglês) ou um criador de consultas interface gráfica do usuário. Para mais informações, consulte Criar gráficos com Metrics Explorer.

Se você criou gráficos e quer mantê-los, é 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.

Consulte as métricas do Prometheus com o PromQL ou Ferramentas do Cloud Monitoring, como a Linguagem de consulta do Monitoring (MQL, na sigla em inglês). Quando As métricas do Prometheus são ingeridas pelo Cloud Monitoring, transformados usando o padrão Transformação do OpenTelemetry para o Prometheus e mapeada para o Cloud Monitoring prometheus_target tipo de recurso monitorado A transformação inclui as seguintes mudanças:

  • O nome da métrica é prefixado com a string prometheus.googleapis.com/.
  • Todos os caracteres não alfanuméricos, como pontos (.), no nome da métrica, são substituídos por sublinhados (_).
  • O nome da métrica é pós-fixado com uma string que indica o tipo da 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 o 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 suas métricas do AWS CloudWatch e notificar você sobre picos, quedas ou tendências em valores de métricas.

  • Para informações sobre como criar alertas baseados em MQL, consulte Alertas com o MQL.
  • Para saber mais sobre como usar a interface do criador de consultas para criar alertas políticas de alerta, consulte Criar políticas de alerta.

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árias os exportadores em uma única VM, ou distribuí-los entre as 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 raspar 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 CloudWatch a métrica solicitada. para os preços atuais, consulte Amazon CloudWatch Preços. 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 realizar solicitações de API para determinar quais métricas solicitar. 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 do AWS CloudWatch do Exportador do Prometheus pelo número de amostras ingeridos. Para conferir os preços atuais, consulte Preços do Monitoring resumo.

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.