Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Bereitstellung des CloudWatch Agenten zur Erfassung von Metriken EC2 auf Instanzebene bei Amazon ECS
Um den CloudWatch Agenten so einzusetzen, dass er Metriken auf Instance-Ebene aus ECS Amazon-Clustern sammelt, die auf einer EC2 Instance gehostet werden, verwenden Sie ein Schnellstart-Setup mit einer Standardkonfiguration oder installieren Sie den Agenten manuell, um ihn anpassen zu können.
Beide Methoden setzen voraus, dass Sie bereits mindestens einen ECS Amazon-Cluster mit einem EC2 Starttyp bereitgestellt haben und dass der CloudWatch Agent-Container Zugriff auf den Amazon EC2 Instance Metadata Service (IMDS) hat. Weitere Informationen zu finden Sie IMDS unter Instance-Metadaten und Benutzerdaten.
Bei diesen Methoden wird auch davon ausgegangen, dass Sie das AWS CLI installiert haben. Um die Befehle in den folgenden Verfahren ausführen zu können, müssen Sie außerdem bei einem Konto oder einer Rolle angemeldet sein, für das die FullAccess Richtlinien IAMFullAccessund Amazon ECS _ gelten.
Schnelle Einrichtung mit AWS CloudFormation
Um die Schnellinstallation zu verwenden, geben Sie den folgenden Befehl AWS CloudFormation zur Installation des Agenten ein. Ersetzen cluster-name
and cluster-region
mit dem Namen und der Region Ihres ECS Amazon-Clusters.
Dieser Befehl erstellt die IAM Rollen CWAgentECSTaskRoleund CWAgentECSExecutionRole. Wenn diese Rollen bereits in Ihrem Konto vorhanden sind, verwenden Sie ParameterKey=CreateIAMRoles,ParameterValue=False
anstelle von ParameterKey=CreateIAMRoles,ParameterValue=True
bei der Eingabe des Befehls. Andernfalls schlägt der Befehl fehl.
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}
(Alternative) Verwenden Sie Ihre eigenen IAM Rollen
Wenn Sie anstelle der CWAgentECSExecutionRoleRollen und Ihre eigene benutzerdefinierte ECS Aufgabenrolle und ECS Aufgabenausführungsrolle verwenden möchten, stellen Sie zunächst sicher, dass die Rolle, die als ECS Aufgabenrolle verwendet werden soll, CloudWatchAgentServerPolicyangehängt ist. CWAgentECSTaskRole Stellen Sie außerdem sicher, dass der Rolle, die als ECS Aufgabenausführungsrolle verwendet werden soll, CloudWatchAgentServerPolicysowohl die Richtlinien als auch die mazonECSTaskExecutionRolePolicyA-Richtlinien zugeordnet sind. Geben Sie dann den folgenden Befehl ein. Ersetzen Sie im Befehl task-role-arn
durch die ARN Ihrer benutzerdefinierten ECS Aufgabenrolle und ersetzen execution-role-arn
durch die ARN Ihrer benutzerdefinierten ECS Aufgabenausführungsrolle.
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}
Fehlerbehebung bei der Schnelleinrichtung
Geben Sie den folgenden Befehl ein, um den Status des AWS CloudFormation Stacks zu überprüfen.
ClusterName=
cluster-name
Region=cluster-region
aws cloudformation describe-stacks --stack-name CWAgentECS-$ClusterName-$Region --region $Region
Wenn Sie sehen, dass es sich beim StackStatus
nicht um CREATE_COMPLETE
oder CREATE_IN_PROGRESS
handelt, überprüfen Sie die Stack-Ereignisse, um den Fehler zu finden. Geben Sie den folgenden Befehl ein.
ClusterName=
cluster-name
Region=cluster-region
aws cloudformation describe-stack-events --stack-name CWAgentECS-$ClusterName-$Region --region $Region
Um den Status des cwagent
-Daemon-Services zu überprüfen, geben Sie den folgenden Befehl ein. In der Ausgabe sollten Sie sehen, dass die runningCount
gleich der desiredCount
im Abschnitt deployment
ist. Wenn sie nicht gleich ist, überprüfen Sie den Abschnitt failures
in der Ausgabe.
ClusterName=
cluster-name
Region=cluster-region
aws ecs describe-services --services cwagent-daemon-service --cluster $ClusterName --region $Region
Sie können auch die CloudWatch Logs-Konsole verwenden, um das Agent-Log zu überprüfen. Suchen Sie nach der Protokollgruppe /ecs/ ecs-cwagent-daemon-service.
Den AWS CloudFormation Stack für den Agenten löschen CloudWatch
Wenn Sie den AWS CloudFormation Stack löschen müssen, geben Sie den folgenden Befehl ein.
ClusterName=
cluster-name
Region=cluster-region
aws cloudformation delete-stack --stack-name CWAgentECS-${ClusterName}-${Region} --region ${Region}
Manuelle und benutzerdefinierte Einrichtung
Folgen Sie den Schritten in diesem Abschnitt, um den CloudWatch Agenten manuell bereitzustellen, um Metriken auf Instance-Ebene aus Ihren ECS Amazon-Clustern zu sammeln, die auf EC2 Instances gehostet werden.
Erforderliche IAM Rollen und Richtlinien
Zwei IAM-Rollen sind erforderlich. Sie müssen sie erstellen, wenn sie noch nicht vorhanden sind. Weitere Informationen zu diesen Rollen finden Sie unter IAMRollen für Aufgaben und Amazon ECS Task Execution Role.
-
Eine ECSAufgabenrolle, die vom CloudWatch Agenten verwendet wird, um Metriken zu veröffentlichen. Wenn diese Rolle bereits vorhanden ist, müssen Sie sicherstellen, dass die
CloudWatchAgentServerPolicy
-Richtlinie angehängt ist. -
Eine Rolle zur ECS Aufgabenausführung, die vom ECS Amazon-Agenten verwendet wird, um den CloudWatch Agenten zu starten. Wenn diese Rolle bereits vorhanden ist, müssen Sie sicherstellen, dass die Richtlinien
AmazonECSTaskExecutionRolePolicy
undCloudWatchAgentServerPolicy
angehängt sind.
Wenn Sie diese Rollen noch nicht besitzen, können Sie die folgenden Befehle verwenden, um sie zu erstellen und die erforderlichen Richtlinien anzuhängen. Dieser erste Befehl erstellt die ECS Aufgabenrolle.
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\"}]}"
Nachdem Sie den vorherigen Befehl eingegeben haben, notieren Sie sich den Wert von Arn
aus der Befehlsausgabe als "TaskRoleArn“. Sie müssen ihn später verwenden, wenn Sie die Aufgabendefinition erstellen. Geben Sie dann den folgenden Befehl ein, um die erforderlichen Richtlinien anzuhängen.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --role-name CWAgentECSTaskRole
Mit dem nächsten Befehl wird die Rolle zur ECS Aufgabenausführung erstellt.
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\"}]}"
Nachdem Sie den vorherigen Befehl eingegeben haben, notieren Sie sich den Wert von Arn
aus der Befehlsausgabe als "ExecutionRoleArn“. Sie müssen ihn später verwenden, wenn Sie die Aufgabendefinition erstellen. Geben Sie dann die folgenden Befehle ein, um die erforderlichen Richtlinien anzuhängen.
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
Erstellen der Aufgabendefinition und Starten des Daemon-Services
Erstellen Sie eine Aufgabendefinition und verwenden Sie sie, um den CloudWatch Agenten als Daemon-Service zu starten. Geben Sie den folgenden Befehl ein, um die Aufgabendefinition zu erstellen. Ersetzen Sie in den ersten Zeilen die Platzhalter durch die tatsächlichen Werte für Ihre Bereitstellung. logs-region
ist die Region, in der sich CloudWatch Logs befindet, und cluster-region
ist die Region, in der sich Ihr Cluster befindet. task-role-arn
ist der Arn der ECS Aufgabenrolle, die Sie verwenden, und execution-role-arn
ist der Arn der ECS Aufgabenausführungsrolle.
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
Führen Sie dann den folgenden Befehl aus, um den Daemon-Service zu starten. Ersetzen cluster-name
and cluster-region
mit dem Namen und der Region Ihres ECS Amazon-Clusters.
Wichtig
Entfernen Sie alle Strategien für Kapazitätsanbieter, bevor Sie diesen Befehl ausführen. Andernfalls funktioniert der Befehl nicht.
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}
Wenn diese Fehlermeldung angezeigt wird, An error occurred
(InvalidParameterException) when calling the CreateService operation: Creation of
service was not idempotent
, haben Sie bereits einen Daemon-Service mit dem Namen cwagent-daemon-service
erstellt. Sie müssen diesen Service zuerst löschen, indem Sie den folgenden Befehl als Beispiel verwenden.
ClusterName=
cluster-name
Region=cluster-region
aws ecs delete-service \ --cluster ${ClusterName} \ --service cwagent-daemon-service \ --region ${Region} \ --force
(Optional) Erweiterte Konfiguration
Optional können SSM Sie andere Konfigurationsoptionen für den CloudWatch Agenten in Ihren ECS Amazon-Clustern angeben, die auf EC2 Instances gehostet werden. Es handelt sich um folgende Optionen:
-
metrics_collection_interval
— Wie oft (in Sekunden) der CloudWatch Agent Metriken sammelt. Der Standardwert ist 60. Der Bereich liegt zwischen 1 und 172 000. -
endpoint_override
– (Optional) Gibt einen anderen Endpunkt an, an den Protokolle gesendet werden sollen. Dies empfiehlt sich möglicherweise, wenn Sie von einem Cluster in einem aus veröffentlichen VPC und möchten, dass die Protokolldaten an einen VPC Endpunkt gesendet werden.Der Wert von
endpoint_override
muss eine Zeichenfolge sein, die eine istURL. -
force_flush_interval
– Gibt die maximale Zeitspanne in Sekunden an, in der Protokolle im Speicherpuffer verbleiben, bevor sie an den Server gesendet werden. Unabhängig von der Einstellung für dieses Feld werden die Protokolle an den Server gesendet, sobald die Größe der Protokolle im Puffer 1 MB erreicht. Der Standardwert liegt bei 5 Sekunden. -
region
— Standardmäßig veröffentlicht der Agent Metriken in derselben Region, in der sich die ECS Amazon-Container-Instance befindet. Um dies zu überschreiben, können Sie hier eine andere Region angeben. Beispiel:"region" : "us-east-1"
Im Folgenden finden Sie ein Beispiel für eine benutzerdefinierte Konfiguration:
{ "agent": { "region": "us-east-1" }, "logs": { "metrics_collected": { "ecs": { "metrics_collection_interval": 30 } }, "force_flush_interval": 5 } }
Um Ihre CloudWatch Agentenkonfiguration in Ihren ECS Amazon-Containern anzupassen
-
Stellen Sie sicher, dass die mazonSSMReadOnlyAccessA-Richtlinie mit Ihrer Amazon ECS Task Execution-Rolle verknüpft ist. Dazu können Sie den folgenden Befehl eingeben. In diesem Beispiel wird davon ausgegangen, dass Ihre Amazon ECS Task Execution-Rolle CWAgentECSExecutionRole Wenn Sie eine andere Rolle verwenden, ersetzen Sie diesen Rollennamen im folgenden Befehl.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMReadOnlyAccess \ --role-name CWAgentECSExecutionRole
-
Erstellen Sie die angepasste Konfigurationsdatei ähnlich dem vorangegangenen Beispiel. Benennen Sie diese Datei
/tmp/ecs-cwagent-daemon-config.json
. -
Führen Sie den folgenden Befehl aus, um diese Konfiguration im Parameter Store zu speichern. Ersetzen
cluster-region
mit der Region Ihres ECS Amazon-Clusters. Um diesen Befehl ausführen zu können, müssen Sie bei einem Benutzer oder einer Rolle angemeldet sein, für die die mazonSSMFullA-Zugriffs-Richtlinie gilt.Region=
cluster-region
aws ssm put-parameter \ --name "ecs-cwagent-daemon-service" \ --type "String" \ --value "`cat /tmp/ecs-cwagent-daemon-config.json`" \ --region $Region -
Laden Sie die Aufgabendefinitionsdatei in eine lokale Datei herunter, z. B.
/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
-
Ändern Sie die Aufgabendefinitionsdatei. Entfernen Sie den folgenden Abschnitt:
"environment": [ { "name": "USE_DEFAULT_CONFIG", "value": "True" } ],
Ersetzen Sie diesen Abschnitt durch Folgendes:
"secrets": [ { "name": "CW_CONFIG_CONTENT", "valueFrom": "ecs-cwagent-daemon-service" } ],
-
Starten Sie den Agenten als Daemon-Service neu, indem Sie die folgenden Schritte ausführen:
-
Führen Sie den folgenden Befehl aus.
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 -
Führen Sie den folgenden Befehl aus, um den Daemon-Service zu starten. Ersetzen
cluster-name
andcluster-region
mit dem Namen und der Region Ihres ECS Amazon-Clusters.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}Wenn diese Fehlermeldung angezeigt wird,
An error occurred (InvalidParameterException) when calling the CreateService operation: Creation of service was not idempotent
, haben Sie bereits einen Daemon-Service mit dem Namencwagent-daemon-service
erstellt. Sie müssen diesen Service zuerst löschen, indem Sie den folgenden Befehl als Beispiel verwenden.ClusterName=
cluster-name
Region=Region
aws ecs delete-service \ --cluster ${ClusterName} \ --service cwagent-daemon-service \ --region ${Region} \ --force
-