Solução do Amazon CloudWatch: coleta de métricas do Prometheus no Amazon ECS
Essa solução ajuda você a coletar métricas compatíveis com o Prometheus de suas tarefas do Amazon ECS sem executar ou escalar sua própria infraestrutura de coleta. Suas tarefas expõem métricas por meio de exportadores do Prometheus, e um coletor do Prometheus gerenciado pelo Amazon CloudWatch descobre as tarefas em sua VPC por meio da descoberta de serviços baseada em DNS, extrai seus endpoints /metrics e entrega as métricas ao CloudWatch. Como as tarefas do Amazon ECS são efêmeras e seus endereços IP mudam, essa solução usa a descoberta de serviços do AWS Cloud Map para que o coletor sempre extraia o conjunto atual de tarefas. 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.
Tópicos
Requisitos
Esta solução é aplicável nas seguintes condições:
-
Computação: tarefas do Amazon ECS (no Amazon EC2 ou no AWS Fargate) que expõem métricas compatíveis com o Prometheus.
-
Serviços do Amazon ECS que você registra no AWS Cloud Map para a descoberta de serviços baseada em DNS.
-
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 a porta de métricas em suas tarefas. Se suas tarefas e o coletor compartilharem um grupo de segurança, adicione uma regra de entrada de autorreferência para a porta de métricas.
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. No Amazon ECS, você normalmente executa um exportador como um contêiner associado na mesma definição de tarefa da aplicação ou instrumenta a aplicação para expor métricas diretamente. Os seguintes exportadores são comumente usados:
-
Node Exporter: métricas de infraestrutura em nível de host para tarefas no tipo de inicialização do Amazon EC2 (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 (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.
Adicione o exportador à sua definição de tarefa e exponha sua porta de métricas seguindo a documentação oficial do exportador. Para obter um catálogo completo de exportadores disponíveis, consulte Exporters and integrations
Etapa 1: configurar grupos de segurança
Confirme se o grupo de segurança para suas tarefas do Amazon ECS permite tráfego de entrada do coletor na porta de métricas. Quando suas tarefas e o coletor compartilharem um grupo de segurança, adicione uma regra de entrada de autorreferência para que os recursos no mesmo grupo de segurança possam se comunicar. O comando a seguir permite tráfego de entrada na porta 80 do mesmo grupo de segurança:
aws ec2 authorize-security-group-ingress \ --group-idsg-security-group-id\ --ip-permissions IpProtocol=tcp,FromPort=80,ToPort=80,UserIdGroupPairs='[{GroupId=sg-security-group-id}]'
Etapa 2: definir a configuração de extração
Para tarefas do Amazon ECS que você registra no AWS Cloud Map, use a descoberta de serviços baseada em DNS (dns_sd_configs) para encontrar e extrair automaticamente suas tarefas à medida que elas iniciam e param. A seção dns_sd_configs orienta o coletor a consultar o nome DNS do AWS Cloud Map e extrair todos os endereços IP retornados. Quando o Amazon ECS substitui uma tarefa, o coletor detecta a alteração em sua próxima consulta ao DNS. 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: 'ecs-payforadoption' dns_sd_configs: - names: ['payforadoption-go.Workshop-space'] type: A port: 80 metrics_path: '/metrics' relabel_configs: - target_label: service_name replacement: 'payforadoption-go' - target_label: cloudmap_namespace replacement: 'Workshop-space' - target_label: environment replacement: 'production' - target_label: compute_platform replacement: 'ecs-fargate'
Etapa 3: configurar o extrator
Crie um coletor gerenciado conectado à VPC que extrai suas tarefas do Amazon ECS e fornece métricas ao seu conjunto de dados do CloudWatch:
Você pode usar GetDefaultScraperConfiguration para recuperar uma configuração de extrator de uso geral ou fornecer a sua própria.
Validar a coleta de métricas
Depois que o coletor começar a fornecer métricas, execute uma consulta ad-hoc no CloudWatch usando o Query Studio para confirmar que suas métricas chegaram. Por exemplo, a consulta a seguir retorna a média de solicitações por segundo para a tarefa do Amazon ECS nos últimos cinco minutos:
rate(payforadoption_requests_total[5m])
Criar um painel personalizado
Depois que o coletor começar a entregar suas métricas do Amazon ECS 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