Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Implementazione dell' CloudWatch agente per raccogliere parametri a livello di EC2 istanza su Amazon ECS
Per distribuire l' CloudWatch agente per raccogliere parametri a livello di istanza dai ECS cluster Amazon ospitati sull'EC2istanza, utilizza una configurazione di avvio rapido con una configurazione predefinita o installa l'agente manualmente per poterlo personalizzare.
Entrambi i metodi richiedono che tu disponga già di almeno un ECS cluster Amazon distribuito con un tipo di EC2 avvio e che il contenitore dell' CloudWatch agente abbia accesso ad Amazon EC2 Instance Metadata Service (). IMDS Per ulteriori informazioni in meritoIMDS, consulta Metadati dell'istanza e dati utente.
Questi metodi presuppongono inoltre che tu abbia AWS CLI installato il. Inoltre, per eseguire i comandi nelle seguenti procedure, devi accedere a un account o ruolo con FullAccess le politiche IAMFullAccesse Amazon ECS _.
Configurazione rapida tramite AWS CloudFormation
Per utilizzare la configurazione rapida, inserisci il seguente comando da utilizzare per installare l'agente. AWS CloudFormation Replace (Sostituisci) cluster-name
e cluster-region
con il nome e la regione del tuo ECS cluster Amazon.
Questo comando crea i IAM ruoli CWAgentECSTaskRolee CWAgentECSExecutionRole. Se questi ruoli esistono già nell'account, utilizza ParameterKey=CreateIAMRoles,ParameterValue=False
anziché ParameterKey=CreateIAMRoles,ParameterValue=True
quando immetti il comando. In caso contrario, il comando avrà esito negativo.
ClusterName=
cluster-name
Region=cluster-region
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cloudformation-quickstart/cwagent-ecs-instance-metric-cfn.json aws cloudformation create-stack --stack-name CWAgentECS-${ClusterName}-${Region} \ --template-body file://cwagent-ecs-instance-metric-cfn.json \ --parameters ParameterKey=ClusterName,ParameterValue=${ClusterName} \ ParameterKey=CreateIAMRoles,ParameterValue=True \ --capabilities CAPABILITY_NAMED_IAM \ --region ${Region}
(Alternativa) Utilizzo IAM dei propri ruoli
Se desideri utilizzare il tuo ruolo di ECS attività e il tuo ruolo di esecuzione dell'ECSattività personalizzati anziché CWAgentECSExecutionRolei ruoli CWAgentECSTaskRoleand, assicurati innanzitutto che il ruolo da utilizzare come ruolo dell'ECSattività sia CloudWatchAgentServerPolicyassociato. Inoltre, assicuratevi che il ruolo da utilizzare come ruolo di esecuzione dell'ECSattività abbia CloudWatchAgentServerPolicysia i mazonECSTask ExecutionRolePolicy criteri A che quelli associati. Quindi, immetti il comando seguente: Nel comando, sostituisci task-role-arn
con il ruolo ARN dell'ECSattività personalizzato e sostituisci execution-role-arn
con il ruolo ARN di esecuzione dell'ECSattività personalizzato.
ClusterName=
cluster-name
Region=cluster-region
TaskRoleArn=task-role-arn
ExecutionRoleArn=execution-role-arn
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cloudformation-quickstart/cwagent-ecs-instance-metric-cfn.json aws cloudformation create-stack --stack-name CWAgentECS-${ClusterName}-${Region} \ --template-body file://cwagent-ecs-instance-metric-cfn.json \ --parameters ParameterKey=ClusterName,ParameterValue=${ClusterName} \ ParameterKey=TaskRoleArn,ParameterValue=${TaskRoleArn} \ ParameterKey=ExecutionRoleArn,ParameterValue=${ExecutionRoleArn} \ --capabilities CAPABILITY_NAMED_IAM \ --region ${Region}
Risoluzione dei problemi relativi alla configurazione rapida
Per controllare lo stato dello AWS CloudFormation stack, inserisci il seguente comando.
ClusterName=
cluster-name
Region=cluster-region
aws cloudformation describe-stacks --stack-name CWAgentECS-$ClusterName-$Region --region $Region
Se StackStatus
è diverso da CREATE_COMPLETE
o CREATE_IN_PROGRESS
, controlla gli eventi di stack per trovare l'errore. Inserire il seguente comando.
ClusterName=
cluster-name
Region=cluster-region
aws cloudformation describe-stack-events --stack-name CWAgentECS-$ClusterName-$Region --region $Region
Per verificare lo stato del servizio daemon cwagent
, immetti il seguente comando. Nell'output, deve essere mostrato che runningCount
è uguale a desiredCount
nella sezione deployment
. In caso contrario, controlla la sezione failures
nell'output.
ClusterName=
cluster-name
Region=cluster-region
aws ecs describe-services --services cwagent-daemon-service --cluster $ClusterName --region $Region
Puoi anche utilizzare la console CloudWatch Logs per controllare il registro dell'agente. Cerca il gruppo di log ecs-cwagent-daemon-service/ecs/.
Eliminazione dello stack per l'agente AWS CloudFormation CloudWatch
Se è necessario eliminare lo AWS CloudFormation stack, immettere il seguente comando.
ClusterName=
cluster-name
Region=cluster-region
aws cloudformation delete-stack --stack-name CWAgentECS-${ClusterName}-${Region} --region ${Region}
Configurazione manuale e personalizzata
Segui i passaggi in questa sezione per distribuire manualmente l' CloudWatch agente per raccogliere parametri a livello di istanza dai tuoi cluster ECS Amazon ospitati su istanze. EC2
Ruoli e politiche necessari IAM
Sono richiesti due ruoli IAM. Se non esistono già è necessario crearli. Per ulteriori informazioni su questi ruoli, consulta i IAMruoli per Tasks e Amazon ECS Task Execution Role.
-
Un ruolo di ECS attività, utilizzato dall' CloudWatch agente per pubblicare le metriche. Se questo ruolo esiste già, è necessario assicurarsi che ad esso sia collegata la policy
CloudWatchAgentServerPolicy
. -
Un ruolo di esecuzione delle ECS attività, utilizzato dall'ECSagente Amazon per avviare l' CloudWatch agente. Se questo ruolo esiste già, è necessario assicurarsi che le policy
AmazonECSTaskExecutionRolePolicy
eCloudWatchAgentServerPolicy
siano collegate ad esso.
Se questi ruoli non sono ancora disponibili, puoi utilizzare i seguenti comandi per crearli e collegare le policy necessarie. Questo primo comando crea il ruolo dell'ECSattività.
aws iam create-role --role-name CWAgentECSTaskRole \ --assume-role-policy-document "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Sid\": \"\",\"Effect\": \"Allow\",\"Principal\": {\"Service\": \"ecs-tasks.amazonaws.com\"},\"Action\": \"sts:AssumeRole\"}]}"
Dopo aver immesso il comando precedente, prendete nota del valore Arn
dell'output del comando come "TaskRoleArn». Questo sarà richiesto in seguito durante la creazione della definizione di attività. Quindi immetti il seguente comando per collegare le policy necessarie.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --role-name CWAgentECSTaskRole
Il comando successivo crea il ruolo di esecuzione dell'ECSoperazione.
aws iam create-role --role-name CWAgentECSExecutionRole \ --assume-role-policy-document "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Sid\": \"\",\"Effect\": \"Allow\",\"Principal\": {\"Service\": \"ecs-tasks.amazonaws.com\"},\"Action\": \"sts:AssumeRole\"}]}"
Dopo aver immesso il comando precedente, prendete nota del valore Arn
dell'output del comando come "ExecutionRoleArn». Questo sarà richiesto in seguito durante la creazione della definizione di attività. Quindi immetti i seguenti comandi per collegare le policy necessarie.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --role-name CWAgentECSExecutionRole aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy \ --role-name CWAgentECSExecutionRole
Creazione della definizione di attività e avvio del servizio Daemon
Crea una definizione di attività e usala per avviare l'agente come servizio daemon. CloudWatch Per creare la definizione di attività, immetti il seguente comando. Nelle prime righe, sostituisci i segnaposto con i valori effettivi per la distribuzione. logs-region
è la regione in cui si trova CloudWatch Logs e cluster-region
è la regione in cui si trova il cluster. task-role-arn
è l'Arn del ruolo di ECS attività che si sta utilizzando e execution-role-arn
è l'Arn del ruolo di esecuzione dell'ECSattività.
TaskRoleArn=
task-role-arn
ExecutionRoleArn=execution-role-arn
AWSLogsRegion=logs-region
Region=cluster-region
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cwagent-ecs-instance-metric.json \ | sed "s|{{task-role-arn}}|${TaskRoleArn}|;s|{{execution-role-arn}}|${ExecutionRoleArn}|;s|{{awslogs-region}}|${AWSLogsRegion}|" \ | xargs -0 aws ecs register-task-definition --region ${Region} --cli-input-json
Quindi esegui il seguente comando per avviare il servizio daemon. Replace (Sostituisci) cluster-name
e cluster-region
con il nome e la regione del tuo ECS cluster Amazon.
Importante
Rimuovi tutte le strategie dei provider di capacità prima di eseguire questo comando. In caso contrario, il comando non funzionerà.
ClusterName=
cluster-name
Region=cluster-region
aws ecs create-service \ --cluster ${ClusterName} \ --service-name cwagent-daemon-service \ --task-definition ecs-cwagent-daemon-service \ --scheduling-strategy DAEMON \ --region ${Region}
Se viene visualizzato questo messaggio di errore, An error occurred
(InvalidParameterException) when calling the CreateService operation: Creation of
service was not idempotent
, un servizio daemon denominato cwagent-daemon-service
è già stato creato. Elimina innanzitutto tale servizio, utilizzando il comando riportato di seguito come un esempio.
ClusterName=
cluster-name
Region=cluster-region
aws ecs delete-service \ --cluster ${ClusterName} \ --service cwagent-daemon-service \ --region ${Region} \ --force
(Facoltativo) Configurazione avanzata
Facoltativamente, puoi utilizzare SSM per specificare altre opzioni di configurazione per l' CloudWatchagente nei tuoi ECS cluster Amazon ospitati su EC2 istanze. Le opzioni sono le seguenti:
-
metrics_collection_interval
— Con quale frequenza, in secondi, l' CloudWatch agente raccoglie i parametri. Il valore predefinito è 60. L'intervallo varia tra 1 e 172.000. -
endpoint_override
(Facoltativo): specifica un endpoint diverso a cui inviare i log. È consigliabile eseguire questa operazione se si pubblica da un cluster in un endpoint VPC e si desidera che i dati dei log vengano trasferiti a un endpoint. VPCIl valore di
endpoint_override
deve essere una stringa che è un. URL -
force_flush_interval
: specifica in secondi la quantità massima di tempo in cui i log rimangono nel buffer di memoria prima di essere inviati al server. Indipendentemente dall'impostazione di questo campo, se la dimensione dei log nel buffer raggiunge 1 MB, i log vengono immediatamente inviati al server. Il valore di default è 5 secondi. -
region
— Per impostazione predefinita, l'agente pubblica i parametri nella stessa regione in cui si trova l'istanza del ECS contenitore Amazon. Per sovrascriverla, è possibile specificare una regione diversa qui. Ad esempio,"region" : "us-east-1"
Di seguito è riportato un esempio di configurazione personalizzata:
{ "agent": { "region": "us-east-1" }, "logs": { "metrics_collected": { "ecs": { "metrics_collection_interval": 30 } }, "force_flush_interval": 5 } }
Per personalizzare la configurazione CloudWatch dell'agente nei ECS contenitori Amazon
-
Assicurati che la mazonSSMRead OnlyAccess policy A sia associata al tuo ruolo Amazon ECS Task Execution. A questo scopo, è possibile immettere il seguente comando. Questo esempio presuppone che il tuo ruolo di Amazon ECS Task Execution siaCWAgentECSExecutionRole. Se utilizzi un ruolo diverso, sostituire tale nome del ruolo nel comando seguente.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMReadOnlyAccess \ --role-name CWAgentECSExecutionRole
-
Creare il file di configurazione personalizzato simile all'esempio precedente. Assegnare a questo file il nome
/tmp/ecs-cwagent-daemon-config.json
. -
Eseguire il seguente comando per inserire questa configurazione nel Parameter Store. Replace (Sostituisci)
cluster-region
con la regione del tuo ECS cluster Amazon. Per eseguire questo comando, devi accedere a un utente o a un ruolo con la politica A mazonSSMFull Access.Region=
cluster-region
aws ssm put-parameter \ --name "ecs-cwagent-daemon-service" \ --type "String" \ --value "`cat /tmp/ecs-cwagent-daemon-config.json`" \ --region $Region -
Scaricare il file di definizione dell'attività in un file locale, ad esempio
/tmp/cwagent-ecs-instance-metric.json
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cwagent-ecs-instance-metric.json -o /tmp/cwagent-ecs-instance-metric.json
-
Modificare il file di definizione dell'attività. Rimuovere la sezione seguente:
"environment": [ { "name": "USE_DEFAULT_CONFIG", "value": "True" } ],
Sostituire tale sezione con la seguente:
"secrets": [ { "name": "CW_CONFIG_CONTENT", "valueFrom": "ecs-cwagent-daemon-service" } ],
-
Riavviare l'agente come servizio daemon effettuando la seguente procedura:
-
Esegui il comando seguente.
TaskRoleArn=
task-role-arn
ExecutionRoleArn=execution-role-arn
AWSLogsRegion=logs-region
Region=cluster-region
cat /tmp/cwagent-ecs-instance-metric.json \ | sed "s|{{task-role-arn}}|${TaskRoleArn}|;s|{{execution-role-arn}}|${ExecutionRoleArn}|;s|{{awslogs-region}}|${AWSLogsRegion}|" \ | xargs -0 aws ecs register-task-definition --region ${Region} --cli-input-json -
Eseguire il comando seguente per avviare il servizio daemon. Replace (Sostituisci)
cluster-name
ecluster-region
con il nome e la regione del tuo ECS cluster Amazon.ClusterName=
cluster-name
Region=cluster-region
aws ecs create-service \ --cluster ${ClusterName} \ --service-name cwagent-daemon-service \ --task-definition ecs-cwagent-daemon-service \ --scheduling-strategy DAEMON \ --region ${Region}Se viene visualizzato questo messaggio di errore,
An error occurred (InvalidParameterException) when calling the CreateService operation: Creation of service was not idempotent
, un servizio daemon denominatocwagent-daemon-service
è già stato creato. Elimina innanzitutto tale servizio, utilizzando il comando riportato di seguito come un esempio.ClusterName=
cluster-name
Region=Region
aws ecs delete-service \ --cluster ${ClusterName} \ --service cwagent-daemon-service \ --region ${Region} \ --force
-