Coletar métricas do AWS CloudWatch usando o exportador do CloudWatch para Prometheus
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Neste documento, descrevemos como usar o exportador de código aberto Prometheus do CloudWatch
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 estes públicos-alvo:
Desenvolvedores e administradores de sistema que precisam coletar métricas do AWS CloudWatch. Neste documento, descrevemos como configurar o exportador do CloudWatch para Prometheus
para coletar métricas do AWS CloudWatch.
Usuários de métricas do AWS CloudWatch com
projetos de conector da AWS que estão migrando para o
exportador CloudWatch do Prometheus. Este documento também inclui informações sobre como migrar da coleta de métricas legadas do AWS CloudWatch nos projetos do Conector.
Com o Cloud Monitoring, é possível visualizar as métricas da AWS no mesmo contexto
que as do Google Cloud. Por exemplo, você pode criar um painel com gráficos que mostram a utilização da CPU para suas instâncias do Amazon EC2 e do Compute Engine. Também é possível criar políticas de alertas para monitorar as métricas da AWS. Para saber mais, consulte as
seções a seguir:
Para coletar métricas do AWS CloudWatch usando o exportador CloudWatch do Prometheus, você 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 podem 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
na execução do Agente de operações e do exportador CloudWatch do Prometheus. Essa VM atua como o local de coleta de todas as métricas da AWS.
Para criar uma VM do Debian Linux chamada aws-exporter-test em uma zona especificada por você, execute o seguinte comando:
Configurar o exportador do CloudWatch para Prometheus
Nas seções a seguir, descrevemos o procedimento de download, instalação e configuração do exportador CloudWatch do Prometheus na VM do Compute Engine.
Faça o download do exportador do Prometheus e do JRE
Para executar o exportador do CloudWatch para Prometheus, você precisa fazer o download dele e
do Java Runtime Environment (JRE), versão 11 ou mais recente.
Para fazer o download do arquivo JAR que contém o exportador do Prometheus CloudWatch, execute o seguinte comando na instância do Compute Engine:
Para instalar o JRE, você pode usar um comando como o seguinte:
sudo apt install default-jre
Configurar o exportador do Prometheus
Para configurar o exportador CloudWatch do Prometheus, crie um arquivo de configuração para o serviço ou os serviços da AWS dos quais você quer coletar métricas.
Para informações gerais, consulte a documentação de configuração do exportador
do CloudWatch do Prometheus.
Migração de usuários: se você estiver migrando suas métricas atuais do AWS CloudWatch
para o exportador do CloudWatch do Prometheus, poderá usar os arquivos de configuração
em Configurações do exportador do CloudWatch do Prometheus para migração.
Esses arquivos de configuração foram projetados para replicar as métricas atuais o
mais próximo possível, mas não coletam todas as métricas disponíveis
usando o exportador CloudWatch do Prometheus para os serviços da AWS.
Novos usuários: se você não estiver migrando métricas atuais, recomendamos não usar as configurações de migração. Consulte a documentação do serviço AWS CloudWatch para informações sobre como definir configurações de exportador para outros serviços. Também é possível
encontrar outras amostras no repositório do GitHub
do exportador do CloudWatch para Prometheus.
É 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 CloudWatch para Prometheus, é preciso fornecer a ele as credenciais e a autorização.
O exportador CloudWatch do Prometheus usa o SDK do AWS Java, que oferece maneiras de fornecer credenciais usando as seguintes variáveis de ambiente:
Para mais informações sobre como fornecer credenciais para o SDK,
consulte SDK da AWS para Java 2.x.
Você também precisa ter permissão para usar a API CloudWatch para recuperar 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 a permissão tag:GetResources
do IAM da AWS.
Substitua as variáveis YOUR_KEY pelas suas chaves de acesso.
Só será necessário definir a variável de ambiente AWS_SESSION_TOKEN
se você estiver usando credenciais temporárias.
Para testar a configuração, inicie o exportador e carregue o arquivo de
configuração, executando o seguinte comando:
Altere os valores de porta (9106) e arquivo de configuração (config.yml),
se necessário.
Se você modificar o arquivo config.yml enquanto o exportador estiver em execução,
recarregue o exportador executando o seguinte comando:
curl -X POST localhost:9106/-/reload
Para uso em um ambiente de produção, configure o exportador para
reiniciar se a VM for reiniciada. Por exemplo, nos sistemas Debian, use o gerenciador de sistema e de serviço systemd.
Configurar o Agente de operações
As seções a seguir descrevem como instalar e iniciar
o Agente de operações. Essas seções fornecem informações mínimas de configuração para
o Agente de operações usar com o exportador CloudWatch do Prometheus.
Para mais informações sobre esses tópicos, consulte
Visão geral 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
executar o script de instalação do agente:
Para configurar o Agente de operações, adicione elementos de configuração ao
arquivo de configuração do usuário do agente. No Linux, o arquivo de configuração do usuário
é /etc/google-cloud-ops-agent/config.yaml.
Ao configurar o Agente de operações para coletar métricas da AWS pelo
exportador do CloudWatch do Prometheus, você usa o receptor do Prometheus do agente. Neste
documento, descrevemos duas configurações básicas do Agente de operações.
Selecione uma das configurações e adicione-a 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 receptor está configurado para raspar métricas do job aws_exporter. A
porta especificada precisa corresponder à porta em que o exportador do CloudWatch do Prometheus está
exportando métricas. Consulte Executar o exportador do Prometheus.
Cria um pipeline chamado aws_pipeline que usa o coletor de métricas aws.
A configuração a seguir faz tudo o que a configuração básica faz,
mas também adiciona uma configuração de rerotulação que descarta
as métricas da JVM geradas pelo exportador. Descartar essas métricas reduz os
dados da métrica ingeridos, mas pode dificultar a depuração
dos problemas com o exportador, porque você não está recebendo as próprias métricas:
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.
Para informações gerais sobre a configuração do Agente de operações, consulte
Modelo de configuração.
Reiniciar o agente de operações
Reinicie o agente para aplicar as alterações de configuração.
Para reiniciar o agente, execute o seguinte comando na instância:
sudo service google-cloud-ops-agent restart
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 para qualquer outra métrica. Na interface do Metrics Explorer, é possível usar o PromQL, a linguagem de consulta do Monitoring (MQL, na sigla em inglês) ou uma interface de criador de consultas. Para mais informações, consulte Criar gráficos com o Metrics Explorer.
Se você criou gráficos que gostaria de manter, salve-os em painéis personalizados. Para mais informações, consulte Visão geral dos painéis.
O gráfico a seguir mostra uma consulta do PromQL para a
métrica aws_ec2_cpuutilization_sum para VMs da AWS:
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 é post-fixo com uma string que indica o tipo dela, como /gauge ou /counter.
Para consultar a métrica aws_ec2_cpuutilization_sum do Prometheus usando
o MQL, faça referência à métrica como
prometheus.googleapis.com/aws_ec2_cpuutilization_sum/gauge e
especifique o tipo de recurso monitorado prometheus_target:
O gráfico a seguir mostra o resultado da consulta MQL para a
métrica aws_ec2_cpuutilization_sum do Prometheus:
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 notificar você sobre picos, quedas ou tendências
nos valores de métricas.
Para mais informações sobre como usar a interface do criador de consultas para criar políticas de alertas, consulte Criar políticas de alertas.
Monitorar várias regiões
A configuração do exportador CloudWatch do Prometheus é compatível com o uso de apenas uma região por arquivo de configuração. Se precisar monitorar várias regiões, recomendamos executar várias instâncias do exportador do Prometheus,
uma configurada para cada região a ser monitorada. É possível executar vários exportadores em uma única VM ou distribuí-los entre VMs. O exportador do Prometheus imagens do Docker 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, ao configurar várias instâncias do exportador do Prometheus, você use um nome job diferente para a configuração de raspagem de dados para poder distinguir as instâncias do exportador se precisar solucioná-las.
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 que você solicita. Para os preços atuais, consulte Preços do Amazon CloudWatch. O exportador CloudWatch do Prometheus tem as seguintes características de consulta (em inglês), que podem afetar seus 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 serão solicitadas. O número de solicitações de dimensões normalmente é insignificante em comparação com o número de solicitações de métrica.
Esta seção fornece mais informações para clientes que estão migrando das
métricas legadas do AWS CloudWatch com
projetos do conector da AWS
para a solução exportador CloudWatch do Prometheus.
Se você não estiver migrando da solução legada para o exportador CloudWatch do Prometheus, pule esta seção.
Como mapear métricas legadas do AWS CloudWatch para métricas do exportador do CloudWatch do Prometheus
Nesta seção, descrevemos como as métricas legadas do AWS CloudWatch são mapeadas para as
coletadas pelo exportador CloudWatch do Prometheus usando a métrica
CPUUtilization do AWS CloudWatch como exemplo.
A métrica CPUUtilization mede a porcentagem de tempo de CPU física que o Amazon EC2 usa para executar a instância, incluindo o tempo de execução do código do usuário e o código do Amazon EC2. Em termos gerais, o valor da métrica é
a soma da utilização da CPU convidada e da utilização da CPU do hipervisor.
A solução legada informa esses dados ao Cloud Monitoring usando as
seguintes métricas:
As métricas de valores como "média" e "máximo" representam as
estatísticas
do CloudWatch que são significativas para a métrica. Cada uma relata uma agregação diferente
da métrica CPUUtilization da AWS. Essas métricas são gravadas no tipo de recurso monitorado aws_ec2_instance, e o valor do rótulo de recurso instance_id é o identificador da instância do Amazon EC2 que grava a métrica.
Quando você usa o exportador CloudWatch do Prometheus e o Agente de operações, as métricas são informadas da seguinte maneira:
aws_ec2_cpuutilization_average
aws_ec2_cpuutilization_maximum
aws_ec2_cpuutilization_minimum
aws_ec2_cpuutilization_samplecount
aws_ec2_cpuutilization_sum
Essas métricas correspondem às
métricas aws.googleapis.com/EC2/CPUUtilization/Statistic
coletadas pela solução legada. Essas métricas são gravadas no tipo de recurso monitorado prometheus-target.
Os valores dos rótulos no recurso prometheus-target refletem a VM do Compute Engine em que o exportador CloudWatch do Prometheus está em execução, não os da instância do Amazon EC2. Os valores dos rótulos na métrica
são definidos pelo exportador do Prometheus. As métricas aws_ec2_cpuutilization_statistic preservam o ID da instância do Amazon EC2 no rótulo instance_id. A captura de tela a seguir mostra uma consulta do PromQL
que gera um gráfico com a métrica aws_ec2_cpuutilization_sum. A tabela
mostra os valores dos rótulos selecionados:
Os painéis e as políticas de alertas atuais que usam as
métricas legadas do AWS CloudWatch não funcionarão para as métricas ingeridas
usando o exportador CloudWatch do Prometheus. Essa é uma alteração interruptiva.
Para ter a mesma observabilidade nos sistemas da AWS, recrie os painéis e as políticas de alertas para usar as métricas coletadas pelo exportador do Prometheus.
Perda de metadados
Além de coletar métricas do AWS CloudWatch, a solução legada também coletava metadados do agente do Monitoring legado e do agente do Logging legado em execução nas instâncias do Amazon Elastic Compute Cloud (Amazon EC2).
Os metadados desse recurso foram combinados às métricas no Cloud Monitoring e apareciam como rótulos de metadados do sistema ou do usuário, como nome da instância, zona de disponibilidade, tipo de máquina, entre outros.
É possível que o exportador CloudWatch do Prometheus não colete os mesmos metadados. Se você estiver usando um dos agentes legados em instâncias de VM do Amazon EC2, as seções a seguir descrevem como usar o exportador do Prometheus para coletar os metadados ausentes e combiná-los às métricas coletadas pelo exportador do Prometheus:
Após 21 de agosto de 2024, quando a descontinuação da
solução legada do AWS CloudWatch for concluída, esses rótulos de metadados não
estarão mais disponíveis. Os rótulos de métrica e de recurso aws_ec2_instance não são afetados.
Para usuários do agente legado do Monitoring em instâncias do Amazon EC2
Se você usa os metadados da AWS nos seus gráficos e consultas e quer mantê-los, colete-os usando o exportador CloudWatch do Prometheus. Crie uma VM do Compute Engine e configure o exportador do CloudWatch no Prometheus e o Agente de operações conforme descrito neste documento. Use o arquivo de configuração ec2.yml
ao configurar o exportador do CloudWatch para Prometheus.
O arquivo de configuração ec2.yml usa o recurso aws_tag_select.
Quando o recurso aws_tag_select é usado na configuração,
o exportador do CloudWatch do Prometheus exporta uma métrica chamada aws_resource_info.
A métrica aws_resource_info relata uma série temporal com metadados do recurso da AWS nos rótulos de métrica. Esses metadados incluem todas as tags de instância do Amazon EC2, incluindo o nome da instância, no rótulo tag_Name.
Para coletar outros metadados, você pode adicioná-los usando tags na instância do Amazon EC2. Consulte Adicionar ou remover tags de instância do EC2.
A métrica aws_resource_info informada pelo exportador do Prometheus
inclui os metadados extras.
Em seguida, é possível mesclar os rótulos de metadados da métrica aws_resource_info com as autométricas do agente do Monitoring legado ou qualquer métrica do Amazon EC2 usando o MQL para PromQL.
Mesclagem MQL
Por exemplo, a consulta MQL a seguir mescla a autométrica do agente
agent.googleapis.com/agent/uptime, escrita
no tipo de recurso aws_ec2_instance, com a
métrica do exportador de CloudWatch do Prometheus aws_resource_info, escrita no
tipo de recurso prometheus-target:
As duas métricas são unidas no rótulo instance_id. Portanto, o nome da VM, o valor do rótulo metric.tag_Name na métrica aws_resource_info, pode ser adicionado ao resultado da junção. A autométrica uptime do agente inclui o rótulo de recurso region. A junção com o rótulo region funciona porque a AWS não especifica se os IDs de instância precisam ser exclusivos regional ou globalmente.
O exemplo a seguir mostra uma consulta do PromQL que mescla a
métrica aws_ec2_cpuutilization_average do exportador do Prometheus CloudWatch.
O exemplo a seguir mostra uma consulta do PromQL que mescla a
métrica aws_ec2_cpuutilization_average do exportador do CloudWatch do Prometheus
com a métrica de metadados aws_resource_info. As métricas são unidas no rótulo instance_id para adicionar o nome da VM, do rótulo tag_Name da métrica de metadados ao resultado da consulta.
Para usuários do agente do Logging legado em instâncias do Amazon EC2
O agente legado do Logging, google-fluentd, informa os metadados diretamente
para o Cloud Logging. Portanto, a descontinuação da solução de métricas
do AWS CloudWatch que usa o agente legado do Monitoring não afeta os registros coletados
pelo agente do Logging.
No entanto, o agente legado do Logging informa algumas métricas sobre si mesmo.
Se você quiser adicionar metadados a essas autométricas, crie uma VM do Compute Engine e configure o exportador do CloudWatch no Prometheus e o Agente de operações conforme descrito neste documento. Use o arquivo de configuração ec2.yml
ao configurar o exportador do CloudWatch para Prometheus.
Talvez também seja necessário modificar a configuração do agente do Logging legado.
O plug-in de saída do agente do Logging legado é compatível com a
opção use_aws_availability_zone da AWS. Essa opção precisa ser definida como false
para que o agente grave o rótulo region em vez de
availability_zone. Para informações sobre o local do
arquivo de configuração do plug-in, consulte Configuração do plug-in de saída fluentd
do Google Cloud.
O arquivo de configuração ec2.yml usa o recurso aws_tag_select.
Quando o recurso aws_tag_select é usado na configuração,
o exportador do CloudWatch do Prometheus exporta uma métrica chamada aws_resource_info.
A métrica aws_resource_info relata uma série temporal com metadados do recurso da AWS nos rótulos de métrica. Esses metadados incluem todas as tags de instância do Amazon EC2, incluindo o nome da instância, no rótulo tag_Name.
Para coletar outros metadados, você pode adicioná-los usando tags na instância do Amazon EC2. Consulte Adicionar ou remover tags de instância do EC2.
A métrica aws_resource_info informada pelo exportador do Prometheus
inclui os metadados extras.
Em seguida, é possível mesclar os rótulos de metadados da métrica aws_resource_info
com as próprias métricas do agente do Logging legado usando o MQL.
Por exemplo, a consulta MQL a seguir mescla a autométrica do agente
agent.googleapis.com/agent/uptime, escrita
no tipo de recurso aws_ec2_instance, com a
métrica do exportador de CloudWatch do Prometheus aws_resource_info, escrita no
tipo de recurso prometheus-target:
As duas métricas são unidas no rótulo instance_id. Portanto, o nome da VM, o valor do rótulo metric.tag_Name na métrica aws_resource_info, pode ser adicionado ao resultado da junção. A autométrica uptime do agente inclui o rótulo de recurso region. A junção com o rótulo region funciona porque a AWS não especifica se os IDs de instância precisam ser exclusivos regional ou globalmente.
Ao criar o projeto de conector da AWS
no projeto do Google Cloud, você criou um papel de IAM da AWS que concedeu
acesso somente leitura ao Google Cloud à conta da AWS.
Para desativar as métricas legadas do AWS CloudWatch no console da AWS,
remova esse papel. Para mais informações, consulte Como excluir um papel do IAM (console).
Configurações do exportador do CloudWatch para Prometheus para migração
Nesta seção, fornecemos configurações que replicam, da maneira mais semelhante
possível, as métricas de serviço da AWS documentadas na lista de
métricas da AWS. Esses arquivos de configuração são destinados para uso por clientes que estão migrando da solução legada para o exportador CloudWatch do Prometheus. Se você estiver configurando
o exportador do CloudWatch do Prometheus como um novo usuário em vez de como um usuário de migração e
usar essas configurações, não estará coletando todas as métricas da AWS
disponibilizadas pelo exportador CloudWatch do Prometheus.
Para visualizar um arquivo de configuração de amostra para as métricas do AWS CloudWatch, expanda uma das seções a seguir.