Métricas do CloudWatch para o Amazon ECS - Amazon Elastic Container Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Métricas do CloudWatch para o Amazon ECS

Você pode monitorar os recursos do Amazon ECS usando o Amazon CloudWatch, que coleta e processa dados brutos do Amazon ECS em métricas legíveis, quase em tempo real. Essas estatísticas são registradas por um período de duas semanas para que você possa acessar informações históricas e obter uma perspectiva melhor sobre o desempenho dos clusters ou serviços. Os dados de métricas do Amazon ECS são enviados automaticamente para o CloudWatch em períodos de 1 minuto. Para obter mais informações sobre o CloudWatch, consulte o Guia do usuário do Amazon CloudWatch.

HabilitarCloudWatchmétricas

QuaisquerAmazon ECSserviço hospedado emFargateestá habilitado paraCloudWatchMétricas de uso de CPU e de memória automaticamente, portanto, você não precisa executar etapas manuais.

Para qualquerAmazon ECStarefa ou serviço hospedado emEC2, suas receitasAmazon ECSinstâncias de contêiner exigem versão1.4.0ou posterior do agente de contêiner para habilitarCloudWatchMétricas do . No entanto, recomendamos usar a versão mais recente do agente de contêiner. Para obter informações sobre como verificar a versão do agente e atualizar para a versão mais recente, consulte Atualização doAmazon ECSAgente do contêiner.

Se você estiver iniciando o agente manualmente (por exemplo, se você não estiver usando a AMI otimizada para Amazon ECS para as instâncias de contêiner), consulte Como atualizar manualmente oAmazon ECSAgente do contêinerAmazon ECS-Optimized AMIs).

As instâncias de contêiner do Amazon ECS também exigem a permissão ecs:StartTelemetrySession na função do IAM com a qual você executa suas instâncias de contêiner. Caso tenha criado a função da instância de contêiner do Amazon ECS antes das métricas do CloudWatch terem sido disponíveis para o Amazon ECS, talvez você precise adicionar essa permissão. Para obter informações sobre como verificar a função da instância de contêiner do Amazon ECS e anexar a política gerenciada do IAM para instâncias de contêiner, consulte Para verificar ecsInstanceRole no console do IAM.

nota

Você pode desativar a coleta de métricas do CloudWatch definindo ECS_DISABLE_METRICS=true em sua configuração do agente de contêiner do Amazon ECS. Para obter mais informações, consulte Amazon ECSConfiguração do agente de contê.

Métricas e dimensões disponíveis

As seções a seguir listam as métricas e as dimensões que o Amazon ECS envia para o Amazon CloudWatch.

Amazon ECS métricas

O Amazon ECS fornece métricas para você monitorar seus recursos. Você pode medir a reserva e a utilização de CPU e memória em seu cluster como um todo e a utilização de CPU e memória dos serviços em seus clusters. Para as cargas de trabalho de GPU, você pode medir a reserva de GPU no cluster.

As métricas disponibilizadas dependerão do tipo de inicialização das tarefas e dos serviços em seus clusters. Se você estiver usando o tipo de inicialização Fargate para seus serviços, serão fornecidas métricas de utilização de CPU e memória para auxiliar no monitoramento de seus serviços. Para o tipo de inicialização do EC2, você possuirá e precisará monitorar as instâncias do Amazon EC2 que formam a infraestrutura subjacente. Dessa forma, CPU, memória e reserva de GPU adicionais, bem como métricas adicionais de utilização e reserva de memória e CPU são disponibilizadas no nível de cluster, serviço e tarefa.

Amazon ECS envia as seguintes métricas para CloudWatch por minuto. Ao coletar as métricas, Amazon ECS coleta vários pontos de dados a cada minuto. Em seguida, agrega-os a um ponto de dados antes de enviar os dados para CloudWatch. Logo, em CloudWatch, uma contagem de amostras é na verdade o agregado de vários pontos de dados durante um minuto.

O namespace AWS/ECS inclui as métricas a seguir.

CPUReservation

O percentual de unidades de CPU reservadas ao executar tarefas no cluster.

A reserva de CPU no cluster (essa métrica só pode ser filtrada por ClusterName) é medida como o total de unidades de CPU reservadas por tarefas do Amazon ECS no cluster, dividido pelo total de unidades de CPU registradas para todas as instâncias de contêiner no cluster. Somente instâncias de contêiner no status ACTIVE ou DRAINING afetarão as métricas de reserva de CPU. Essa métrica é usada somente para tarefas usando o tipo de inicialização do EC2.

Dimensões válidas: ClusterName.

Estatística válida: média, mínima, máxima, soma, contagem de exemplo. A estatística mais útil é Média.

Unidade: Percentual.

CPUUtilization

O percentual de unidades de CPU usadas no cluster ou serviço.

A utilização de CPU no cluster (essa métrica só pode ser filtrada por ClusterName sem ServiceName) é medida como o total de unidades de CPU em uso por tarefas do Amazon ECS no cluster, dividido pelo total de unidades de CPU registradas para todas as instâncias de contêiner no cluster. Somente instâncias de contêiner no status ACTIVE ou DRAINING afetarão as métricas de utilização de CPU. As métricas de utilização de CPU do cluster são usadas somente para tarefas que usem o tipo de inicialização do EC2.

A utilização da CPU de serviço (métricas que são filtradas por ClusterName e ServiceName) é medida como o total de unidades de CPU em uso pelas tarefas que pertencem ao serviço, dividido pelo número total de unidades de CPU reservadas para as tarefas que pertencem ao serviço. As métricas de utilização do CPU de serviço são usadas para tarefas usando o Fargate e o tipo de inicialização do EC2.

Dimensões válidas: ClusterName, ServiceName.

Estatística válida: média, mínima, máxima, soma, contagem de exemplo. A estatística mais útil é Média.

Unidade: Percentual.

MemoryReservation

O percentual de memória reservada ao executar tarefas no cluster.

A reserva de memória no cluster (essa métrica só pode ser filtrada por ClusterName) é medida como o total de memória reservada por tarefas do Amazon ECS no cluster, dividido pelo total de memória registrada para todas as instâncias de contêiner no cluster. Somente instâncias de contêiner no status ACTIVE ou DRAINING afetarão as métricas de reserva de memória de CPU. Essa métrica é usada somente para tarefas usando o tipo de inicialização do EC2.

Dimensões válidas: ClusterName.

Estatística válida: média, mínima, máxima, soma, contagem de exemplo. A estatística mais útil é Média.

Unidade: Percentual.

MemoryUtilization

O percentual de memória usada no cluster ou serviço.

A utilização de memória no cluster (essa métrica só pode ser filtrada por ClusterName sem ServiceName) é medida como o total de memória em uso por tarefas do Amazon ECS no cluster, dividido pelo total de memória registrada para todas as instâncias de contêiner no cluster. Somente instâncias de contêiner no status ACTIVE ou DRAINING afetarão as métricas de utilização de memória. As métricas de utilização de memória do cluster são usadas somente para tarefas que usem o tipo de inicialização do EC2.

A utilização da memória de serviço (métricas que são filtradas por ClusterName e ServiceName) é medida como o total de memória em uso pelas tarefas que pertencem ao serviço, dividido pelo número total de memória reservada para as tarefas que pertencem ao serviço. As métricas de utilização da memória de serviço são usadas para tarefas usando os tipos de inicialização do Fargate e EC2.

Dimensões válidas: ClusterName, ServiceName.

Estatística válida: média, mínima, máxima, soma, contagem de exemplo. A estatística mais útil é Média.

Unidade: Percentual.

GPUReservation

O percentual total de GPUs disponíveis reservadas ao executar tarefas no cluster.

A reserva de GPU de cluster é medida pelo número de GPUs reservadas por tarefas do Amazon ECS no cluster, dividido pelo número total de GPUs disponíveis em todas as instâncias de contêiner habilitadas para GPU no cluster. Somente instâncias de contêiner no status ACTIVE ou DRAINING afetarão as métricas de reserva de GPU.

Dimensões válidas: ClusterName.

Estatística válida: média, mínima, máxima, soma, contagem de exemplo. A estatística mais útil é Média.

Unidade: Percentual.

nota

Se você estiver usando tarefas com o tipo de inicialização do EC2 tiver instâncias de contêiner do Linux, o agente de contêiner do Amazon ECS contará com métricas stats do Docker para coletar dados de CPU e memória para cada contêiner em execução na instância. Para instâncias de desempenho com capacidade de intermitência (instâncias T3, T3a e T2), a métrica de utilização da CPU pode refletir dados diferentes em comparação com as métricas de CPU no nível de instância.

Dimensões para métricas do Amazon ECS

As métricas do Amazon ECS usam AWS/ECS namespace e fornecem métricas para as seguintes dimensões: As métricas de uma dimensão refletem apenas os recursos com tarefas em execução durante um período. Por exemplo, se você tiver um cluster contendo um serviço, mas esse serviço não tiver tarefas em um estado RUNNING, não haverá métricas enviadas para o CloudWatch. Se você tiver dois serviços e um deles tiver tarefas em execução e o outro não, somente as métricas do serviço com tarefas em execução serão enviadas.

ClusterName

Essa dimensão filtra os dados que você solicitar para todos os recursos em um cluster especificado. Todas as métricas do Amazon ECS são filtradas por ClusterName.

ServiceName

Essa dimensão filtra os dados que você solicitar para todos os recursos em um serviço especificado em um determinado cluster.

Reserva de cluster

As métricas de reserva de cluster são medidas como a porcentagem de CPU, memória e GPUs reservada por todas as tarefas do Amazon ECS em um cluster em comparação com a CPU, memória e GPUs agregadas que foram registradas para cada instância de contêiner ativa no cluster. Somente instâncias de contêiner no status ACTIVE ou DRAINING afetarão as métricas de reserva de cluster. Essa métrica é usada somente em clusters com tarefas ou serviços que usam o tipo de inicialização EC2. Ela não oferece suporte a clusters com tarefas que usam o tipo de inicialização Fargate.

(Total CPU units reserved by tasks in cluster) x 100 Cluster CPU reservation = -------------------------------------------------------------- (Total CPU units registered by container instances in cluster)
(Total MiB of memory reserved by tasks in cluster x 100) Cluster memory reservation = ------------------------------------------------------------------ (Total MiB of memory registered by container instances in cluster)
(Total GPUs reserved by tasks in cluster x 100) Cluster GPU reservation = ------------------------------------------------------------------ (Total GPUs registered by container instances in cluster)

Quando você executa uma tarefa em um cluster, o Amazon ECS analisa a definição de tarefa e reserva as unidades de CPU, os MiB de memória e GPUs agregados especificados nas definições de contêiner. A cada minutos, o Amazon ECS calcula o número de unidades de CPU, os MiB de memória e GPUs que estão reservados atualmente para cada tarefa em execução no cluster. A quantidade total de CPU, memória e GPUs reservada para todas as tarefas em execução no cluster é calculada, e esses números são informados ao CloudWatch como uma porcentagem do total de recursos registrados para o cluster. Se você especificar um limite flexível (memoryReservation), ele será usado para calcular a quantidade de memória reservada. Caso contrário, o limite rígido (memory) será usado. Para obter mais informações sobre os limites rígidos e flexíveis, consulte Parâmetros de definição de tarefas.

Por exemplo, um cluster tem duas instâncias de contêiner ativas registradas: uma instância c4.4xlarge e uma instância c4.large. A instância c4.4xlarge registra-se no cluster com 16.384 unidades de CPU e 30.158 MiB de memória. A instância c4.large registra-se com 2.048 unidades de CPU e 3.768 MiB de memória. Os recursos agregados desse cluster são de 18.432 unidades de CPU e 33.926 MiB de memória.

Se uma definição de tarefa reservar 1.024 unidades de CPU e 2.048 MiB de memória, e dez tarefas forem iniciadas com essa definição de tarefa nesse cluster (e nenhuma outra tarefa estiver sendo executada), serão reservados um total de 10.240 unidades de CPU e 20.480 MiB de memória. Isso é relatado no CloudWatch como 55% de reserva de CPU e 60% de reserva de memória para o cluster.

A ilustração a seguir mostra o total de unidades de CPU registradas em um cluster e os meio da reserva e utilização para tarefas existentes e o posicionamento da nova tarefa. Os blocos inferior (Reservado, usado) e central (Reservado, não usado) representam o total de unidades de CPU reservadas para as tarefas existentes em execução no cluster, ou a métrica CPUReservation do CloudWatch. O bloco inferior representa as unidades reservadas de CPU que as tarefas em execução estão usando realmente no cluster, ou a métrica CPUUtilization do CloudWatch. O bloco superior representa as unidades de CPU que não estão reservadas por tarefas existentes; essas unidades de CPU estão disponíveis para o posicionamento da nova tarefa. As tarefas existentes podem usar essas unidades de CPU reservadas também, se a necessidade de recursos de CPU aumentar. Para mais informações, consulte a cpu documentação dos parâmetros de definição de tarefas.


                    Reserva e utilização de CPU do cluster

Utilização do cluster

A utilização do cluster é medida como a porcentagem de CPU e memória reservada por todas as tarefas do Amazon ECS em um cluster em comparação com a CPU e a memória agregadas que foram registradas para cada instância de contêiner ativa no cluster. Somente instâncias de contêiner no status ACTIVE ou DRAINING afetarão as métricas de utilização de cluster. A métrica de utilização da GPU não é compatível porque não é possível sobrecarregar uma GPU. Essa métrica é usada somente em clusters com tarefas ou serviços que usam o tipo de inicialização EC2. Ela não oferece suporte a clusters com tarefas que usam o tipo de inicialização Fargate.

(Total CPU units used by tasks in cluster) x 100 Cluster CPU utilization = -------------------------------------------------------------- (Total CPU units registered by container instances in cluster)
(Total MiB of memory used by tasks in cluster x 100) Cluster memory utilization = ------------------------------------------------------------------ (Total MiB of memory registered by container instances in cluster)

A cada minutos, o agente de contêiner do Amazon ECS em cada instância de contêiner calcula o número de unidades de CPU e de MiBs de memória sendo usadas atualmente para cada tarefa em execução nessa instância de contêiner, e essas informações são repassadas ao Amazon ECS. A quantidade total de CPU e memória utilizada para todas as tarefas em execução no cluster é calculada, e esses números são informados ao CloudWatch como uma porcentagem do total de recursos registrados para o cluster.

Por exemplo, um cluster tem duas instâncias de contêiner ativas registradas, uma instância c4.4xlarge e uma instância c4.large. A instância c4.4xlarge registra-se no cluster com 16.384 unidades de CPU e 30.158 MiB de memória. A instância c4.large registra-se com 2.048 unidades de CPU e 3.768 MiB de memória. Os recursos agregados desse cluster são de 18.432 unidades de CPU e 33.926 MiB de memória.

Se dez tarefas estiverem sendo executadas nesse cluster e cada tarefa consumir 1.024 unidades de CPU e 2.048 MiB de memória, um total de 10.240 unidades de CPU e 20.480 MiB de memória serão usados no cluster. Isso é relatado no CloudWatch como 55% de utilização da CPU e 60% de utilização da memória para o cluster.

Utilização do serviço

A utilização de serviço é medida como a porcentagem de CPU e de memória utilizada pelas tarefas do Amazon ECS que pertencem a um serviço em um cluster em comparação com a CPU e a memória especificadas na definição de tarefa do serviço. Essa métrica oferece suporte somente a serviços com tarefas que usam tanto oEC2eFargateTipos de inicialização.

(Total CPU units used by tasks in service) x 100 Service CPU utilization = ---------------------------------------------------------------------------- (Total CPU units specified in task definition) x (number of tasks in service)
(Total MiB of memory used by tasks in service) x 100 Service memory utilization = -------------------------------------------------------------------------------- (Total MiB of memory specified in task definition) x (number of tasks in service)

A cada minuto, o agente de contêiner do Amazon ECS em cada instância de contêiner calcula o número de unidades de CPU e de MiBs de memória em uso atualmente para cada tarefa pertencente ao serviço em execução nessa instância de contêiner, e essas informações são relatadas ao Amazon ECS. A quantidade total de CPU e memória utilizada para todas as tarefas de propriedade do serviço em execução no cluster é calculada, e esses números são informados ao CloudWatch como uma porcentagem do total de recursos especificados para o serviço na definição de tarefa de serviço. Se você especificar um limite flexível (memoryReservation), ele será usado para calcular a quantidade de memória reservada. Caso contrário, o limite rígido (memory) será usado. Para obter mais informações sobre os limites rígidos e flexíveis, consulte Parâmetros de definição de tarefas.

Por exemplo, a definição de tarefa para um serviço especifica um total de 512 unidades de CPU e 1.024 MiB de memória (com o parâmetro memory de limite fixo) para todos os contêineres. O serviço tem uma contagem desejada de 1 tarefa em execução, o serviço fica em execução em um cluster com 1 instância de contêiner c4.large (com 2.048 unidades de CPU e 3.768 MiB de memória total), e não há nenhuma outra tarefa em execução no cluster. Embora a tarefa especifique 512 unidades de CPU, porque é a única tarefa em execução em uma instância de contêiner com 2.048 unidades de CPU, ela pode usar até quatro vezes o valor especificado (2.048/512). No entanto, a memória especificada de 1.024 MiB é um limite rígido e não pode ser excedido. Nesse caso, a utilização de memória do serviço não pode exceder 100%.

Se o exemplo anterior tivesse usado o limite flexível memoryReservation, em vez do parâmetro memory de limite fixo, as tarefas do serviço poderiam usar mais que os 1.024 MiB de memória especificados, conforme necessário. Nesse caso, a utilização de memória do serviço poderia exceder 100%.

Se essa tarefa estiver executando trabalho que use muito a CPU em um período e estiver usando todas as 2.048 unidades de CPU e 512 MiB de memória disponíveis, o serviço informará a utilização de 400% da CPU e a utilização de 50% da memória. Se a tarefa estiver inativa e usando 128 unidades de CPU e 128 MiB de memória, o serviço informará a utilização de 25% da CPU e utilização de 12,5% da memória.

nota

Neste exemplo, a utilização da CPU só irá acima de 100% quando as unidades da CPU forem definidas no nível do contêiner. Se você definir unidades de CPU no nível da tarefa, a utilização não ultrapassará o limite definido no nível de tarefa.

ServiçoRUNNINGContagem de tarefas

Você pode usar as métricas do CloudWatch para saber o número de tarefas nos serviços que estão no estado RUNNING. Por exemplo, você pode definir um alarme do CloudWatch para essa métrica para alertá-lo se o número de tarefas em execução em seu serviço ficar abaixo de um valor especificado.

Para visualizar o número de tarefas em execução em um serviço

  1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

  2. No painel de navegação, selecione Metrics (Métricas).

  3. Na guia All metrics (Todas as métricas), escolha ECS.

  4. Escolha ClusterName, ServiceName e selecione qualquer métrica (CPUUtilization ou MemoryUtilization) que corresponda ao serviço no qual deseja visualizar as tarefas em execução.

  5. Na guia Graphed metrics (Métricas em gráfico), altere Period (Período) para 1 Minute (1 minuto) e a Statistic (Estatística) para Sample Count (Contagem de amostras).

    O valor exibido no gráfico indica o número de tarefas RUNNING no serviço.

    
                            Visualização Métricas de cluster