Installazione dell'agente CloudWatch con la raccolta deli parametri Prometheus sui cluster Amazon ECS
In questa sezione viene illustrato come configurare l'agente CloudWatch con monitoraggio Prometheus in un cluster su cui viene eseguito Amazon ECS. Dopo aver eseguito questa operazione, l'agente esegue automaticamente lo scraping e l'importazione dei parametri per i seguenti carichi di lavoro in esecuzione in quel cluster.
-
AWS App Mesh
-
Java/JMX
È inoltre possibile configurare l'agente per recuperare e importare parametri da altri carichi di lavoro e origini Prometheus.
Configurazione di ruoli IAM
Sono necessari due ruoli IAM per la definizione delle attività dell'agente CloudWatch. Se specifichi CreateIAMRoles=True nello stack CloudFormation per fare in modo che Container Insights crei questi ruoli per te, i ruoli verranno creati con le autorizzazioni corrette. Se si desidera crearli personalmente o utilizzare ruoli esistenti, sono necessari i seguenti ruoli e autorizzazioni.
-
Ruolo dell'attività ECS dell'agente CloudWatch: il container dell'agente CloudWatch utilizza questo ruolo. Deve includere la policy CloudWatchAgentServerPolicy e una policy gestita dal cliente che contiene le seguenti autorizzazioni di sola lettura:
-
ec2:DescribeInstances -
ecs:ListTasks -
ecs:ListServices -
ecs:DescribeContainerInstances -
ecs:DescribeServices -
ecs:DescribeTasks -
ecs:DescribeTaskDefinition
-
-
Ruolo di esecuzione attività ECS dell'agente CloudWatch: questo è il ruolo che Amazon ECS richiede per avviare ed eseguire i tuoi container. Assicurati che al ruolo di esecuzione dell'attività siano collegate le policy AmazonSSMReadOnlyAccess, AmazonECSTaskExecutionRolePolicy e CloudWatchAgentServerPolicy. Se si desidera archiviare dati più riservati utilizzabili da Amazon ECS, consulta Specifica dei dati sensibili per ulteriori informazioni.
Installazione dell'agente CloudWatch con il monitoraggio Prometheus tramite CloudFormation
Usa AWS CloudFormation per installare l'agente CloudWatch con il monitoraggio Prometheus per i cluster Amazon ECS. L'elenco seguente mostra i parametri che verranno utilizzati nel modello CloudFormation.
-
ECSClusterName: specifica il cluster Amazon ECS di destinazione.
-
CreateIAMRoles: specifica
Trueper creare nuovi ruoli per il ruolo dell'attività Amazon ECS e il ruolo di esecuzione dell'attività Amazon ECS. SpecificaFalseper riutilizzare i ruoli esistenti. -
TaskRoleName:s e è stato specificato
Trueper CreateIAMRoles, questa opzione specifica il nome da utilizzare per il nuovo ruolo dell'attività Amazon ECS. Se hai specificatoFalseper CreateIAMRoles, questa opzione specifica il ruolo esistente da utilizzare come ruolo dell'attività Amazon ECS. -
ExecutionRoleName:s e è stato specificato
Trueper CreateIAMRoles, questa opzione specifica il nome da utilizzare per il nuovo ruolo di esecuzione dell'attività Amazon ECS. Se hai specificatoFalseper CreateIAMRoles, questa opzione specifica il ruolo esistente da utilizzare come ruolo di esecuzione dell'attività Amazon ECS. -
ECSNetworkMode: se utilizzi il tipo di avvio EC2, specifica qui la modalità di rete. Deve essere
bridgeohost. -
ECSLaunchType: specifica
fargateoEC2. -
SecurityGroupID: se ECSNetworkMode è
awsvpc, specifica qui l'ID del gruppo di sicurezza. -
SubnetID: se ECSNetworkMode è
awsvpc, specifica qui l'ID della sottorete.
Comandi di esempio
Questa sezione include comandi CloudFormation di esempio per installare Container Insights con il monitoraggio Prometheus in vari scenari.
Creazione dello stack CloudFormation per un cluster Amazon ECS in modalità di rete bridge
export AWS_PROFILE=your_aws_config_profile_eg_defaultexport AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_nameexport ECS_NETWORK_MODE=bridge export CREATE_IAM_ROLES=True export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_nameexport ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_namecurl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-bridge-host.yaml aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \ --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \ --parameters ParameterKey=ECSClusterName,ParameterValue=${ECS_CLUSTER_NAME} \ ParameterKey=CreateIAMRoles,ParameterValue=${CREATE_IAM_ROLES} \ ParameterKey=ECSNetworkMode,ParameterValue=${ECS_NETWORK_MODE} \ ParameterKey=TaskRoleName,ParameterValue=${ECS_TASK_ROLE_NAME} \ ParameterKey=ExecutionRoleName,ParameterValue=${ECS_EXECUTION_ROLE_NAME} \ --capabilities CAPABILITY_NAMED_IAM \ --region ${AWS_DEFAULT_REGION} \ --profile ${AWS_PROFILE}
Creazione dello stack CloudFormation per un cluster Amazon ECS in modalità di rete host
export AWS_PROFILE=your_aws_config_profile_eg_defaultexport AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_nameexport ECS_NETWORK_MODE=host export CREATE_IAM_ROLES=True export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_nameexport ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_namecurl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-bridge-host.yaml aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \ --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \ --parameters ParameterKey=ECSClusterName,ParameterValue=${ECS_CLUSTER_NAME} \ ParameterKey=CreateIAMRoles,ParameterValue=${CREATE_IAM_ROLES} \ ParameterKey=ECSNetworkMode,ParameterValue=${ECS_NETWORK_MODE} \ ParameterKey=TaskRoleName,ParameterValue=${ECS_TASK_ROLE_NAME} \ ParameterKey=ExecutionRoleName,ParameterValue=${ECS_EXECUTION_ROLE_NAME} \ --capabilities CAPABILITY_NAMED_IAM \ --region ${AWS_DEFAULT_REGION} \ --profile ${AWS_PROFILE}
Creazione dello stack CloudFormation per un cluster Amazon ECS in modalità di rete awsvpc
export AWS_PROFILE=your_aws_config_profile_eg_defaultexport AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_nameexport ECS_LAUNCH_TYPE=EC2 export CREATE_IAM_ROLES=True export ECS_CLUSTER_SECURITY_GROUP=your_security_group_eg_sg-xxxxxxxxxxexport ECS_CLUSTER_SUBNET=your_subnet_eg_subnet-xxxxxxxxxxexport ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_nameexport ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_namecurl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-awsvpc.yaml aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-${ECS_LAUNCH_TYPE}-awsvpc \ --template-body file://cwagent-ecs-prometheus-metric-for-awsvpc.yaml \ --parameters ParameterKey=ECSClusterName,ParameterValue=${ECS_CLUSTER_NAME} \ ParameterKey=CreateIAMRoles,ParameterValue=${CREATE_IAM_ROLES} \ ParameterKey=ECSLaunchType,ParameterValue=${ECS_LAUNCH_TYPE} \ ParameterKey=SecurityGroupID,ParameterValue=${ECS_CLUSTER_SECURITY_GROUP} \ ParameterKey=SubnetID,ParameterValue=${ECS_CLUSTER_SUBNET} \ ParameterKey=TaskRoleName,ParameterValue=${ECS_TASK_ROLE_NAME} \ ParameterKey=ExecutionRoleName,ParameterValue=${ECS_EXECUTION_ROLE_NAME} \ --capabilities CAPABILITY_NAMED_IAM \ --region ${AWS_DEFAULT_REGION} \ --profile ${AWS_PROFILE}
Creazione dello stack CloudFormation per un cluster Fargate in modalità di rete awsvpc
export AWS_PROFILE=your_aws_config_profile_eg_defaultexport AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_nameexport ECS_LAUNCH_TYPE=FARGATE export CREATE_IAM_ROLES=True export ECS_CLUSTER_SECURITY_GROUP=your_security_group_eg_sg-xxxxxxxxxxexport ECS_CLUSTER_SUBNET=your_subnet_eg_subnet-xxxxxxxxxxexport ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_nameexport ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_namecurl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-awsvpc.yaml aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-${ECS_LAUNCH_TYPE}-awsvpc \ --template-body file://cwagent-ecs-prometheus-metric-for-awsvpc.yaml \ --parameters ParameterKey=ECSClusterName,ParameterValue=${ECS_CLUSTER_NAME} \ ParameterKey=CreateIAMRoles,ParameterValue=${CREATE_IAM_ROLES} \ ParameterKey=ECSLaunchType,ParameterValue=${ECS_LAUNCH_TYPE} \ ParameterKey=SecurityGroupID,ParameterValue=${ECS_CLUSTER_SECURITY_GROUP} \ ParameterKey=SubnetID,ParameterValue=${ECS_CLUSTER_SUBNET} \ ParameterKey=TaskRoleName,ParameterValue=${ECS_TASK_ROLE_NAME} \ ParameterKey=ExecutionRoleName,ParameterValue=${ECS_EXECUTION_ROLE_NAME} \ --capabilities CAPABILITY_NAMED_IAM \ --region ${AWS_DEFAULT_REGION} \ --profile ${AWS_PROFILE}
Risorse AWS create dallo stack CloudFormation
La tabella seguente elenca le risorse AWS che vengono create quando si utilizza CloudFormation per configurare Container Insights con il monitoraggio Prometheus su un cluster Amazon ECS.
| Tipo di risorsa | Nome risorsa | Commenti |
|---|---|---|
|
AWS::SSM::Parameter |
AmazonCloudWatch-CWAgentConfig-$ |
Questo è l'agente CloudWatch con la definizione predefinita di Embedded Metric Format per App Mesh e Java/JMX. |
|
AWS::SSM::Parameter |
AmazonCloudWatch-PrometheusConfigName-$ |
Questa è la configurazione di scraping di Prometheus. |
|
AWS::IAM::Role |
$ECS_TASK_ROLE_NAME. |
Il ruolo dell'attività di Amazon ECS. Questo viene creato solo se è stato specificato |
|
AWS::IAM::Role |
${ECS_EXECUTION_ROLE_NAME} |
Ruolo per l'esecuzione dell'attività Amazon ECS. Questo viene creato solo se è stato specificato |
|
AWS::ECS::TaskDefinition |
cwagent-prometheus-$ |
|
|
AWS::ECS::Service |
cwagent-prometheus-replica-service-$ |
Eliminazione dello stack CloudFormation per l'agente CloudWatch con monitoraggio Prometheus
Per eliminare l'agente CloudWatch da un cluster Amazon ECS, inserisci questi comandi.
export AWS_PROFILE=your_aws_config_profile_eg_defaultexport AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1export CLOUDFORMATION_STACK_NAME=your_cloudformation_stack_nameaws cloudformation delete-stack \ --stack-name ${CLOUDFORMATION_STACK_NAME} \ --region ${AWS_DEFAULT_REGION} \ --profile ${AWS_PROFILE}