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 cluster Amazon ECS ospitati sull' EC2 istanza, utilizza una configurazione di avvio rapido con una configurazione predefinita o installa l'agente manualmente per poterlo personalizzare.
Entrambi i metodi richiedono che tu abbia già almeno un cluster Amazon ECS distribuito con un tipo di EC2 avvio e che il contenitore dell' CloudWatch agente abbia accesso EC2 ad Amazon Instance Metadata Service (IMDS). Per ulteriori informazioni su IMDS, consulta Metadati dell'istanza e dati utente.
Questi metodi presuppongono inoltre che tu abbia installato il. AWS CLI Inoltre, per eseguire i comandi nelle procedure seguenti, devi accedere a un account o ruolo con le politiche IAMFullAccess e FullAccessAmazoneCS_.
Configurazione rapida tramite AWS CloudFormation
Per utilizzare la configurazione rapida, inserisci il seguente comando da utilizzare per installare l'agente. AWS CloudFormation Sostituisci cluster-name
e cluster-region
con il nome e la regione del tuo cluster Amazon ECS.
Questo comando crea i ruoli IAM CWAgentECSTaskRole e 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 dei propri ruoli IAM
Se desideri utilizzare il tuo ruolo di attività ECS personalizzato e il tuo ruolo di esecuzione dell'attività ECS anziché i ruoli CWAgentECSTaskRuolo e CWAgentECSExecutionRuolo, assicurati innanzitutto che il ruolo da utilizzare come ruolo di attività ECS sia associato. CloudWatchAgentServerPolicy Inoltre, assicurati che al ruolo da utilizzare come ruolo di esecuzione delle attività ECS siano associate CloudWatchAgentServerPolicysia le ECSTask ExecutionRolePolicy policy che quelle di Amazon. Quindi, immetti il comando seguente: Nel comando, sostituisci task-role-arn
con l'ARN del tuo ruolo di attività ECS personalizzato e sostituiscilo con execution-role-arn
l'ARN del tuo ruolo di esecuzione dell'attività ECS 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 verificare 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 Amazon ECS ospitati su istanze. EC2
Ruoli e policy IAM necessari
Sono richiesti due ruoli IAM. Se non esistono già è necessario crearli. Per ulteriori informazioni su questi ruoli, consulta Ruoli IAM per attività e Ruolo per l'esecuzione di attività Amazon ECS.
-
Un ruolo di attività ECS, utilizzato dall'agente per pubblicare le metriche. CloudWatch Se questo ruolo esiste già, è necessario assicurarsi che ad esso sia collegata la policy
CloudWatchAgentServerPolicy
. -
Un ruolo di esecuzione delle attività ECS, utilizzato dall'agente Amazon ECS 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 attività ECS.
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, annota il valore dell'output Arn
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
Questo comando successivo crea il ruolo per l'esecuzione di attività ECS.
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 ed cluster-region
è la regione in cui si trova il cluster. task-role-arn
è l'Arn del ruolo dell'attività ECS che si sta utilizzando ed execution-role-arn
è l'Arn del ruolo di esecuzione dell'attività ECS.
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. Sostituisci cluster-name
e cluster-region
con il nome e la regione del tuo cluster Amazon ECS.
Importante
Rimuovi tutte le strategie dei provider di capacità prima di eseguire questo comando. Altrimenti, 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 cluster Amazon ECS ospitati su istanze. EC2 Le opzioni sono le seguenti:
-
metrics_collection_interval
— Con quale frequenza, in secondi, l'agente raccoglie i parametri. CloudWatch Il valore predefinito è 60. L'intervallo varia tra 1 e 172.000. -
endpoint_override
(Facoltativo): specifica un endpoint diverso a cui inviare i log. Potrebbe essere richiesto se si sta pubblicando da un cluster in un VPC e si desidera inviare i dati di log a un endpoint VPC.Il 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 di container Amazon ECS. 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 degli CloudWatch agenti nei contenitori Amazon ECS
-
Assicurati che la SSMRead OnlyAccess policy di Amazon sia associata al tuo ruolo di Amazon ECS Task Execution. A questo scopo, è possibile immettere il seguente comando. Questo esempio presuppone che il ruolo di Amazon ECS Task Execution sia CWAgent ECSExecution Role. 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. Sostituisci
cluster-region
con la regione del tuo cluster Amazon ECS. Per eseguire questo comando, devi accedere a un utente o a un ruolo con la politica di Amazon SSMFull 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. Sostituisci
cluster-name
ecluster-region
con il nome e la regione del tuo cluster Amazon ECS.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
-