Agente do contêiner do Amazon ECS
O agente do Amazon ECS é um processo executado em cada instância de contêiner registrada em seu cluster. Ele facilita a comunicação entre as instâncias de contêiner e o Amazon ECS.
nota
Em instâncias de contêiner Linux, o contêiner do agente monta diretórios de nível superior, como /lib
, /lib64
e /proc
. Isso é necessário para recursos e funcionalidades do ECS, como volumes do Amazon EBS, modo de rede awsvpc
, Amazon ECS Service Connect e FireLens para Amazon ECS.
Cada agente de contêiner do Amazon ECS oferece suporte a um conjunto diferente de recursos e fornece correções de erros de versões anteriores. Quando possível, sempre recomendamos usar a versão mais recente do agente de contêiner do Amazon ECS. Para atualizar o agente de contêiner para a versão mais recente, consulte Atualizar o agente de contêiner do Amazon ECS.
Para ver quais recursos e aprimoramentos estão incluídos em cada versão de agente, consulte https://github.com/aws/amazon-ecs-agent/releases
Importante
A versão mínima do Docker para métricas confiáveis é a versão Docker v20.10.13
e posteriores, que está incluída na AMI otimizada para o Amazon ECS 20220607
e posteriores.
As versões 1.20.0
e posteriores do agente do Amazon ECS descontinuaram o suporte para as versões do Docker anteriores à 1.9.0
.
Ciclo de vida
Quando o agente de contêiner do Amazon ECS registra uma instância do Amazon EC2 no cluster, a instância do Amazon EC2 relata seu status como ACTIVE
e o status de conexão do agente como TRUE
. Essa instância de contêiner pode aceitar solicitações de tarefas de processamento.
Se você interrompe (sem concluir) uma instância de contêiner, o status permanece como ACTIVE
, mas o status de conexão do agente muda para FALSE
em instantes. As tarefas que estavam sendo executadas na instância de contêiner são interrompidas. Se você reiniciar a instância de contêiner, o agente de contêiner se reconectará com o serviço do Amazon ECS e será possível, novamente, executar tarefas na instância.
Importante
Se você interromper e iniciar uma instância de contêiner ou se reinicializar esta instância, algumas versões mais antigas do agente de contêiner do Amazon ECS registrarão a instância novamente, sem cancelar o registro do ID da instância de contêiner original. Nesse caso, o Amazon ECS listará mais instâncias de contêiner no cluster do que você realmente possui. (Se você tiver IDs de instância de contêiner duplicados para o mesmo ID de instância do Amazon EC2, poderá, com segurança, cancelar o registro das duplicatas listadas como ACTIVE
com status da conexão do agente de FALSE
.) Esse problema foi corrigido na versão atual do agente de contêiner do Amazon ECS. Para obter mais informações sobre como atualizar a versão atual, consulte Atualizar o agente de contêiner do Amazon ECS.
Se você alterar o status de uma instância de contêiner para DRAINING
, as novas tarefas não serão posicionadas na instância de contêiner. Todas as tarefas de serviço em execução na instância de contêiner são removidas, se possível, de modo que você possa realizar atualizações de sistema. Para ter mais informações, consulte Drenagem de instâncias de contêiner do Amazon ECS.
Se você cancela o registro ou encerra uma instância de contêiner, seu status muda para INACTIVE
imediatamente, e ela não é mais referida não quando você lista suas instâncias de contêiner. No entanto, você ainda pode descrever a instância de contêiner por uma hora depois do encerramento. Depois desse período, a descrição de instância não estará mais disponível.
Importante
É possível drenar as instâncias manualmente ou criar um hook do ciclo de vida do grupo do Auto Scaling para definir o status da instância como DRAINING
. Para obter mais informações sobre hooks do ciclo de vida do Auto Scaling, consulte Hooks do ciclo de vida do Amazon EC2 Auto Scaling.
AMIs otimizadas para Amazon ECS
As variantes do Linux da AMI otimizada para Amazon ECS usam a AMI do Amazon Linux 2 como base. O nome da AMI de origem do Amazon Linux 2 para cada variante pode ser recuperado consultando a API da Systems Manager Parameter Store. Para ter mais informações, consulte Recuperação de metadados da AMI do Linux otimizada para o Amazon ECS. Quando você inicia nossas instâncias de contêiner a partir da AMI do Amazon Linux 2 mais recente otimizada para o Amazon ECS você recebe a versão atual do agente de contêiner. Para iniciar uma instância de contêiner com a AMI do Amazon Linux 2 mais recente otimizada pelo Amazon ECS, consulte Iniciar uma instância de contêiner do Linux do Amazon ECS.
Mais informações
As páginas a seguir fornecem informações adicionais sobre as alterações:
-
O código-fonte da aplicação
ecs-init
, os scripts e a configuração para empacotar o agente agora fazem parte do repositório do agente. Para versões mais antigas deecs-init
e pacotes, consulte Log de alterações do Amazon ecs-initno GitHub -
Notas de lançamento do Docker Engine
na documentação do Docker -
Documentação do driver NVIDIA
na documentação da NVIDIA
Parâmetros de configuração do log do agente de contêiner do Amazon ECS
O agente de contêiner do Amazon ECS armazena logs nas instâncias de contêiner.
Para o agente de contêiner versão 1.36.0 e posteriores, por padrão, os logs estão localizados em /var/log/ecs/ecs-agent.log
nas instâncias do Linux e em C:\ProgramData\Amazon\ECS\log\ecs-agent.log
nas instâncias do Windows.
Para o agente de contêiner versão 1.35.0 e posteriores, por padrão, os logs estão localizados em /var/log/ecs/ecs-agent.log.
nas instâncias do Linux e em timestamp
C:\ProgramData\Amazon\ECS\log\ecs-agent.log.
nas instâncias do Windows.timestamp
Por padrão, os logs do agente são rotacionados de hora em hora com o máximo de 24 logs armazenados.
Veja a seguir as variáveis de configuração do agente de contêiner que podem ser usadas para alterar o comportamento padrão de log do agente. Para ter mais informações, consulte Configuração do agente de contêiner do Amazon ECS.
ECS_LOGFILE
-
Valores de exemplo:
/ecs-agent.log
Valor padrão no Linux: Null
Valor padrão no Windows: Null
O local onde os logs do agente devem ser gravados. Se estiver executando o agente por meio da
ecs-init
, que é o método padrão ao usar a AMI otimizada para o Amazon ECS, o caminho no contêiner é/log
, eecs-init
o monta para/var/log/ecs/
no host. ECS_LOGLEVEL
-
Exemplos de valores:
crit
,error
,warn
,info
,debug
Valor padrão no Linux:
info
Valor padrão no Windows:
info
O nível de detalhe para o log.
ECS_LOGLEVEL_ON_INSTANCE
-
Exemplos de valores:
none
,crit
,error
,warn
,info
,debug
Valor padrão no Linux:
none
, seECS_LOG_DRIVER
é explicitamente definido como um valor não vazio; caso contrário, o mesmo valor queECS_LOGLEVEL
Valor padrão no Windows:
none
, seECS_LOG_DRIVER
é explicitamente definido como um valor não vazio; caso contrário, o mesmo valor queECS_LOGLEVEL
Pode ser usado para substituir
ECS_LOGLEVEL
e definir um nível de detalhe que deve ser registrado no arquivo de log na instância, separadamente do nível que é registrado no driver de registro. Se um driver de registro em log estiver explicitamente definido, os logs na instância são desativados por padrão. Eles podem ser ativados novamente com essa variável. ECS_LOG_DRIVER
-
Exemplos de valores:
awslogs
,fluentd
,gelf
,json-file
,journald
,logentries
syslog
,splunk
Valor padrão no Linux:
json-file
Valor padrão no Windows: Not applicable
Determina o driver de registro em log usado pelo contêiner do agente.
ECS_LOG_ROLLOVER_TYPE
-
Valores de exemplo:
size
,hourly
Valor padrão no Linux:
hourly
Valor padrão no Windows:
hourly
Determina se o arquivo de log do agente de contêiner é alternado de hora em hora ou com base no tamanho. Por padrão, o arquivo de log do agente é mudado a cada hora.
ECS_LOG_OUTPUT_FORMAT
-
Valores de exemplo:
logfmt
,json
Valor padrão no Linux:
logfmt
Valor padrão no Windows:
logfmt
Determina o formato de saída do log. Quando o formato
json
é usado, cada linha no log é um mapa JSON estruturado. ECS_LOG_MAX_FILE_SIZE_MB
-
Valores de exemplo:
10
Valor padrão no Linux:
10
Valor padrão no Windows:
10
Quando a variável
ECS_LOG_ROLLOVER_TYPE
é definida comosize
, essa variável determina o tamanho máximo (em MB) do arquivo de log antes de ser alternado. Se o tipo de alternância estiver definido comohourly
, essa variável será ignorada. ECS_LOG_MAX_ROLL_COUNT
-
Valores de exemplo:
24
Valor padrão no Linux:
24
Valor padrão no Windows:
24
Determina o número de arquivos de log mudados que devem ser mantidos. Os arquivos de log mais antigos são excluídos depois que esse limite é atingido.
Para o agente de contêiner versão 1.36.0 e posteriores, veja a seguir um arquivo de log de exemplo quando o formato logfmt
é usado.
level=info time=2019-12-12T23:43:29Z msg="Loading configuration" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-agent:latest" module=parse.go
level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-pause:0.1.0" module=parse.go
level=info time=2019-12-12T23:43:29Z msg="Amazon ECS agent Version: 1.36.0, Commit: ca640387" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Creating root ecs cgroup: /ecs" module=init_linux.go
level=info time=2019-12-12T23:43:29Z msg="Creating cgroup /ecs" module=cgroup_controller_linux.go
level=info time=2019-12-12T23:43:29Z msg="Loading state!" module=statemanager.go
level=info time=2019-12-12T23:43:29Z msg="Event stream ContainerChange start listening..." module=eventstream.go
level=info time=2019-12-12T23:43:29Z msg="Restored cluster 'auto-robc'" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Restored from checkpoint file. I am running as 'arn:aws:ecs:us-west-2:0123456789:container-instance/auto-robc/3330a8a91d15464ea30662d5840164cd' in cluster 'auto-robc'" module=agent.go
Veja a seguir um arquivo de log de exemplo quando o formato JSON é usado.
{"time": "2019-11-07T22:52:02Z", "level": "info", "msg": "Starting Amazon Elastic Container Service Agent", "module": "engine.go"}
Para agentes de contêiner versões 1.35.0 e anteriores, veja a seguir o formato do arquivo de log.
2016-08-15T15:54:41Z [INFO] Starting Agent: Amazon ECS Agent - v1.12.0 (895f3c1)
2016-08-15T15:54:41Z [INFO] Loading configuration
2016-08-15T15:54:41Z [WARN] Invalid value for task cleanup duration, will be overridden to 3h0m0s, parsed value 0, minimum threshold 1m0s
2016-08-15T15:54:41Z [INFO] Checkpointing is enabled. Attempting to load state
2016-08-15T15:54:41Z [INFO] Loading state! module="statemanager"
2016-08-15T15:54:41Z [INFO] Detected Docker versions [1.17 1.18 1.19 1.20 1.21 1.22]
2016-08-15T15:54:41Z [INFO] Registering Instance with ECS
2016-08-15T15:54:41Z [INFO] Registered! module="api client"