View a markdown version of this page

Solução do Amazon CloudWatch: coleta de métricas do Prometheus no Amazon EC2 - Amazon CloudWatch

Solução do Amazon CloudWatch: coleta de métricas do Prometheus no Amazon EC2

Essa solução ajuda você a coletar métricas compatíveis com o Prometheus de suas instâncias do Amazon EC2 sem executar ou escalar sua própria infraestrutura de coleta. Você executa um ou mais exportadores do Prometheus em suas instâncias, e um coletor do Prometheus gerenciado pelo Amazon CloudWatch descobre os destinos em sua VPC, coleta seus endpoints /metrics e entrega as métricas ao CloudWatch. Para obter informações gerais sobre todas as soluções de observabilidade do CloudWatch, consulte Soluções de observabilidade do CloudWatch. Para obter mais informações sobre coletores gerenciados, consulte Coletores do Prometheus gerenciados pelo Amazon CloudWatch.

Requisitos

Esta solução é aplicável nas seguintes condições:

  • Computação: instâncias do Amazon EC2 que executam um ou mais exportadores do Prometheus.

  • Amazon VPC com o DNS habilitado e, pelo menos, duas sub-redes em diferentes zonas de disponibilidade para o coletor.

  • Um grupo de segurança que permite que o coletor alcance as portas do exportador em suas instâncias.

Habilitar exportadores do Prometheus

Um exportador do Prometheus é um processo que expõe métricas no formato de exposição do Prometheus em um endpoint HTTP /metrics. Você executa um exportador que corresponde à workload que você deseja monitorar. Os seguintes exportadores são comumente usados no Amazon EC2:

  • Node Exporter: métricas de infraestrutura no nível do host, como CPU, memória, disco e rede (porta padrão 9100). Para obter mais informações, consulte o repositório do Node Exporter no GitHub.

  • JMX Exporter: métricas de JVM e aplicações Java para workloads Java. Para obter mais informações, consulte o repositório do JMX Exporter no GitHub.

  • NGINX Prometheus Exporter: servidor web NGINX e métricas de proxy reverso. Para obter mais informações, consulte o repositório do NGINX Prometheus Exporter no GitHub.

  • DCGM Exporter: métricas de GPUs NVIDIA para workloads em GPU, como treinamento e inferência de machine learning (porta padrão 9400). Para obter mais informações, consulte o repositório do DCGM Exporter no GitHub.

  • HAProxy Exporter: métricas do balanceador de carga HAProxy. Para obter mais informações, consulte o repositório do HAProxy Exporter no GitHub.

  • Apache Exporter: métricas do Apache HTTP Server. Para obter mais informações, consulte o repositório do Apache Exporter no GitHub.

Instale e execute cada exportador em suas instâncias seguindo a documentação oficial. Observe a porta que cada exportador recebe, pois você faz referência a essas portas na sua configuração de extração. Para obter um catálogo completo de exportadores disponíveis, consulte Exporters and integrations na documentação do Prometheus.

Depois de iniciar um exportador, confirme se ele expõe métricas consultando seu endpoint na instância:

curl http://localhost:port-number/metrics

Etapa 1: definir a configuração de extração

O exemplo a seguir usa static_configs com os nomes DNS privados da instância para extrair uma aplicação de amostra (porta 8080) e um Node Exporter (porta 9100) em suas instâncias do Amazon EC2. A seção relabel_configs adiciona rótulos consistentes às suas métricas para que você possa consultar e filtrar vários serviços. Para ver o conjunto completo de opções de configuração compatíveis, consulte Configuração do extrator.

global: scrape_interval: 30s scrape_timeout: 10s scrape_configs: - job_name: 'ec2-metrics' static_configs: - targets: - ip-ip-address.us-west-2.compute.internal:8080 metrics_path: '/metrics' relabel_configs: - source_labels: [__address__] target_label: instance replacement: 'ec2-metrics-instance' - target_label: service replacement: 'ec2-metrics' - target_label: environment replacement: 'dev' metric_relabel_configs: - source_labels: [__name__] regex: '.*' action: keep - job_name: ec2-node-exporter static_configs: - targets: - ip-ip-address.us-west-2.compute.internal:9100

Etapa 2: configurar o extrator

Crie um coletor gerenciado conectado à VPC que extrai suas instâncias e fornece métricas ao seu conjunto de dados do CloudWatch. Forneça as sub-redes e o grupo de segurança que permitem que o coletor alcance suas portas de exportação:

Você pode usar GetDefaultScraperConfiguration para recuperar uma configuração de extrator de uso geral ou fornecer a sua própria.

AWS API

Use a operação da API CreateScraper para criar um extrator com um destino do CloudWatch. Substitua as informações de sub-rede, grupo de segurança e conjunto de dados pelos seus próprios valores.

POST /scrapers HTTP/1.1 { "alias": "ec2-payment-service-scraper", "source": { "vpcConfiguration": { "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"], "securityGroupIds": ["sg-security-group-id"] } }, "destination": { "cloudWatchConfiguration": { "datasetArn": "arn:aws:cloudwatch:us-west-2:123456789012:dataset/default" } }, "scrapeConfiguration": { "configurationBlob": "base64-encoded-blob" } }
AWS CLI

Use o comando create-scraper para criar um extrator com um destino do CloudWatch. Substitua as informações de sub-rede, grupo de segurança e conjunto de dados pelos seus próprios valores.

aws amp create-scraper \ --alias "ec2-payment-service-scraper" \ --source '{ "vpcConfiguration": { "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"], "securityGroupIds": ["sg-security-group-id"] } }' \ --scrape-configuration configurationBlob=$(cat ec2-scraper.yml | base64 -w 0) \ --destination '{ "cloudWatchConfiguration": { "datasetArn": "arn:aws:cloudwatch:us-west-2:123456789012:dataset/default" } }'

Quando você cria um coletor gerenciado, o Amazon Managed Service for Prometheus cria automaticamente um perfil vinculado ao serviço que concede ao coletor permissão para acessar seus recursos de VPC e gravar em seu conjunto de dados do CloudWatch.

Validar a coleta de métricas

Em questão de minutos, as métricas começam a fluir para seu conjunto de dados do CloudWatch. Para confirmar que suas métricas chegaram, execute uma consulta ad-hoc no CloudWatch usando o Query Studio. Por exemplo, a seguinte consulta retorna as métricas da tarefa ec2-metrics:

{job="ec2-metrics"}

Criar um painel personalizado

Depois que o coletor começar a entregar suas métricas do Amazon EC2 para o CloudWatch, você poderá criar um painel personalizado do CloudWatch para visualizá-las. Com painéis personalizados, você pode combinar as métricas de seus exportadores do Prometheus em widgets, adicionar consultas baseadas em PromQL e organizar os widgets para atender às suas necessidades de monitoramento. Consulte mais informações em Usar painéis do CloudWatch.

Custos

Cobramos pelos coletores do Prometheus por hora, e os preços de ingestão de métricas do CloudWatch OpenTelemetry se aplicam. Para obter mais informações sobre os preços do CloudWatch, consulte Preço do Amazon CloudWatch.