Monitoramento do AWS EC2 usando o Metricbeat

A partir da versão 7.0, apresentamos um novo beat no Metricbeat para monitorar a Amazon Web Services. À época da versão inicial em 7.0.0-beta1, esse módulo da AWS oferece a capacidade de coletar métricas de monitoramento do AWS EC2 provenientes do Cloudwatch usando o Metricbeat e as armazena em um conjunto de métricas chamado ec2. Essas métricas proporcionam visibilidade de todas as instâncias do EC2 nas regiões sem a necessidade de instalar o Metricbeat diretamente nas instâncias.

Segundo plano

As instâncias do Amazon Elastic Compute Cloud (EC2) são servidores virtuais criados na plataforma AWS para oferecer aos usuários capacidade de computação segura e redimensionável na nuvem pública. O EC2 é possivelmente o serviço mais crucial dentre centenas fornecidos pela AWS -- praticamente todos precisam de acesso a recursos de computação.

É um desafio monitorar de maneira centralizada as instâncias do EC2 para ajudar os usuários a detectar e depurar problemas. O Metricbeat já pode coletar métricas de recursos detalhados usando o módulo system, mas isso exige a instalação do Metricbeat em cada uma das instâncias do EC2. As métricas que ele coleta são muito detalhadas e granulares, mas às vezes você só quer uma maneira rápida de obter visibilidade na utilização de recursos de todas as instâncias do EC2 em alto nível.

É aí que entra o AWS Cloudwatch. O Cloudwatch coleta e centraliza automaticamente métricas básicas de utilização de recursos de todas as instâncias do EC2. Esses dados são coletados em uma granularidade de cinco minutos por padrão, e você pode configurar para monitoramento detalhado para obter granularidade mais alta e métricas mais avançadas.

Configuração do Metricbeat AWS

Antes de começar com o Metricbeat, você precisará de um Elastic Stack em execução, que inclui o Elasticsearch para armazenar e indexar os dados e o Kibana para análise de dados. Para isso, você pode criar um cluster no Elasticsearch Service do Elastic Cloud ou configurar o Elastic Stack no computador local.

Depois de carregar o Kibana, você pode navegar até a Add Data UI (IU de adição de dados) na tela inicial e seguir as instruções de configuração do módulo da AWS.

Implantação do Metricbeat para o AWS EC2

Este blog vai acompanhá-lo pelas instruções em mais detalhes a seguir.

Habilite o módulo da AWS

Na configuração pronta do Metricbeat, somente o módulo system está habilitado por padrão, por isso você precisará habilitar explicitamente o módulo da AWS. O comando a seguir habilita a configuração da AWS no diretório modules.d em sistemas MacOS e Linux:

./metricbeat modules enable aws

Defina as credenciais da AWS no arquivo de configuração

Existem dois tipos diferentes de credenciais da AWS que podem ser usados: chaves de acesso e credenciais temporárias de segurança. O ID da chave de acesso e a chave de acesso secreta são as duas partes das chaves de acesso. Elas são credenciais de longo prazo para que um usuário de IAM ou o usuário root da conta da AWS se autentiquem ao fazer chamadas à API da AWS. As credenciais temporárias de segurança consistem em um ID de chave de acesso, uma chave de acesso secreta e um token de segurança, que tem uma vida útil limitada.

Como as credenciais temporárias de segurança são de curto prazo, depois que elas expiram, você precisa gerar novas e modificar o arquivo de configuração modules.d/aws.yml com as novas credenciais. A menos que o recurso de recarregamento ao vivo esteja habilitado para o Metricbeat, você precisa reiniciar manualmente o Metricbeat após atualizar a configuração. Isso fará com que a coleta de dados pare, se o arquivo de configuração não for atualizado com as novas credenciais antes de as antigas expirarem. Consequentemente, para o Metricbeat, recomendamos usar as chaves de acesso no arquivo de configuração para habilitar o módulo da AWS que faz as chamadas à API da AWS sem precisar gerar as novas credenciais temporárias e atualizar a configuração com frequência.

Crie uma política de IAM

Uma política de IAM é uma entidade que define as permissões a um objeto em seu ambiente da AWS. É necessário criar uma política de IAM personalizada para o Metricbeat com permissões específicas. Veja a criação de políticas de IAM para obter mais detalhes. Depois que a política de IAM do Metricbeat for criada, você precisará adicionar essa política ao usuário de IAM que forneceu as credenciais na etapa anterior.

Com o conjunto de métricas do EC2, quatro permissões precisam ser adicionadas à política de IAM do Metricbeat:

  • ec2:DescribeRegions
  • ec2:DescribeInstances
  • cloudwatch:ListMetrics
  • cloudwatch:GetMetricData

Inicie o Metricbeat

Modo de uso executado nos sistemas Mac e Linux como exemplo:

./metricbeat -E setup.dashboards.enabled=true -e

Observação: se estiver executando o Metricbeat de um computador virtual em uma instância de nuvem, como o GCP, AWS ou Azure, você vai querer remover ou eliminar o comentário da entrada add_cloud_metadata em metricbeat.yml.

Depois que o conjunto de métricas do EC2 estiver habilitado no Metricbeat com as devidas credenciais da AWS, o Metricbeat buscará periodicamente as informações sobre cada instância e coletará as métricas de monitoramento do EC2 provenientes do AWS Cloudwatch. O período de coleta padrão para o conjunto de métricas do EC2 é de 300 segundos. Se o monitoramento detalhado para instâncias estiver habilitado, o período de coleta do conjunto de métricas do EC2 deverá ser alterado para 60 s, porque essa camada paga fornece coleta de métricas de granularidade mais alta. O período de coleta é definido no arquivo modules.d/aws.yml, por exemplo:

- module: aws
  period: 60s
  metricsets:
    - "ec2"
  access_key_id: '${AWS_ACCESS_KEY_ID:""}'
  secret_access_key: '${AWS_SECRET_ACCESS_KEY:""}'
  session_token: '${AWS_SESSION_TOKEN:""}'
  default_region: '${AWS_REGION:us-west-1}'

O conjunto de métricas do EC2 descobrirá novas instâncias automaticamente e começará a coletar métricas delas. Se uma instância do EC2 parar ou for encerrada, o conjunto de métricas do EC2 descobrirá a alteração do estado da instância no próximo ciclo de coleta e enviará a nova métrica de estado ao Elasticsearch.

Uso do painel do módulo da AWS do Kibana

O conjunto de métricas do EC2 inclui um painel predefinido chamado [Metricbeat AWS] EC2 Overview. Quando executou o comando de instalação ao iniciar o Metricbeat, você configurou automaticamente esses painéis no Kibana. Para obter mais informações sobre isso, veja Configure os painéis do Kibana.

Esse painel é uma visão geral das instâncias do EC2 da AWS. Ele mostra as verificações do estado e de status para instâncias, além de utilização da CPU, rede e dados de E/S de disco. Também há filtros que você pode aplicar para restringir os dados a uma região específica, uma zona de disponibilidade ou um tipo de computador.

Painel do Kibana para o AWS EC2

Com esse painel, você pode detectar os problemas e garantir que cada instância seja otimizada para a utilização. Por exemplo, se você estiver vendo utilização de CPU constantemente alta e problemas de desempenho da mesma instância, isso possivelmente indicará que a CPU é o gargalo e que essa instância precisa de mais capacidade de CPU. Além disso, se você vir uma instância com baixa utilização de CPU por um longo período de tempo, isso significará que a instância está superdimensionada na CPU, e possivelmente pode ser escalonada de forma descendente ou consolidada com outra instância.

O que vem a seguir?

Ter um local centralizado para visualizar as métricas de monitoramento de diferentes serviços da AWS e regiões permite otimizar a utilização de recursos, detectar e corrigir os problemas mais rapidamente. Experimente, fale sua opinião, faça comentários e conte-nos como você está usando tudo isso em nosso fórum do Beats.

O conjunto de métricas do EC2 no módulo da AWS é apenas o começo! Já estamos trabalhando arduamente para adicionar mais conjuntos de métricas para monitorar outros serviços de uso comum, como Amazon S3, SQS, RDS e assim por diante. Se você tem uma opinião sobre o que devemos abordar em seguida ou quer colaborar, interaja no repositório Github do Beats!