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_.
Importante
Quando definisci il contenitore dell' CloudWatch agente nella definizione dell'attività, imposta. essential:
false Ciò impedisce l'interruzione dell'intero servizio Amazon ECS in caso di guasto del contenitore CloudWatch Agent. Altri contenitori di applicazioni critiche continueranno a funzionare anche se l'agente è temporaneamente non disponibile.
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-nameRegion=cluster-regioncurl -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-nameRegion=cluster-regionTaskRoleArn=task-role-arnExecutionRoleArn=execution-role-arncurl -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-nameRegion=cluster-regionaws 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-nameRegion=cluster-regionaws 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-nameRegion=cluster-regionaws 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-nameRegion=cluster-regionaws 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 i parametri. 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
AmazonECSTaskExecutionRolePolicyeCloudWatchAgentServerPolicysiano 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, annotate il 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-arnExecutionRoleArn=execution-role-arnAWSLogsRegion=logs-regionRegion=cluster-regioncurl 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-nameRegion=cluster-regionaws 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-nameRegion=cluster-regionaws 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_overridedeve 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-regioncon 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-regionaws 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.jsoncurl 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-arnExecutionRoleArn=execution-role-arnAWSLogsRegion=logs-regionRegion=cluster-regioncat /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-nameecluster-regioncon il nome e la regione del tuo cluster Amazon ECS.ClusterName=cluster-nameRegion=cluster-regionaws 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-nameRegion=Regionaws ecs delete-service \ --cluster ${ClusterName} \ --service cwagent-daemon-service \ --region ${Region} \ --force
-