Installazione dell'agente CloudWatch con la raccolta deli parametri Prometheus sui cluster Amazon ECS - Amazon CloudWatch

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 True per creare nuovi ruoli per il ruolo dell'attività Amazon ECS e il ruolo di esecuzione dell'attività Amazon ECS. Specifica False per riutilizzare i ruoli esistenti.

  • TaskRoleName:s e è stato specificato True per CreateIAMRoles, questa opzione specifica il nome da utilizzare per il nuovo ruolo dell'attività Amazon ECS. Se hai specificato False per CreateIAMRoles, questa opzione specifica il ruolo esistente da utilizzare come ruolo dell'attività Amazon ECS.

  • ExecutionRoleName:s e è stato specificato True per CreateIAMRoles, questa opzione specifica il nome da utilizzare per il nuovo ruolo di esecuzione dell'attività Amazon ECS. Se hai specificato False per 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 bridge o host.

  • ECSLaunchType: specifica fargate o EC2.

  • 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_default export AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1 export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_name export ECS_NETWORK_MODE=bridge export CREATE_IAM_ROLES=True export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name export ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name curl -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_default export AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1 export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_name export ECS_NETWORK_MODE=host export CREATE_IAM_ROLES=True export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name export ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name curl -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_default export AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1 export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_name export ECS_LAUNCH_TYPE=EC2 export CREATE_IAM_ROLES=True export ECS_CLUSTER_SECURITY_GROUP=your_security_group_eg_sg-xxxxxxxxxx export ECS_CLUSTER_SUBNET=your_subnet_eg_subnet-xxxxxxxxxx export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name export ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name curl -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_default export AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1 export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_name export ECS_LAUNCH_TYPE=FARGATE export CREATE_IAM_ROLES=True export ECS_CLUSTER_SECURITY_GROUP=your_security_group_eg_sg-xxxxxxxxxx export ECS_CLUSTER_SUBNET=your_subnet_eg_subnet-xxxxxxxxxx export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name export ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name curl -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-$ECS_CLUSTER_NAME-$ECS_LAUNCH_TYPE-$ECS_NETWORK_MODE

Questo è l'agente CloudWatch con la definizione predefinita di Embedded Metric Format per App Mesh e Java/JMX.

AWS::SSM::Parameter

AmazonCloudWatch-PrometheusConfigName-$ECS_CLUSTER_NAME-$ECS_LAUNCH_TYPE-$ECS_NETWORK_MODE

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 True per CREATE_IAM_ROLES.

AWS::IAM::Role

${ECS_EXECUTION_ROLE_NAME}

Ruolo per l'esecuzione dell'attività Amazon ECS. Questo viene creato solo se è stato specificato True per CREATE_IAM_ROLES.

AWS::ECS::TaskDefinition

cwagent-prometheus-$ECS_CLUSTER_NAME-$ECS_LAUNCH_TYPE-$ECS_NETWORK_MODE

AWS::ECS::Service

cwagent-prometheus-replica-service-$ECS_LAUNCH_TYPE-$ECS_NETWORK_MODE

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_default export AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1 export CLOUDFORMATION_STACK_NAME=your_cloudformation_stack_name aws cloudformation delete-stack \ --stack-name ${CLOUDFORMATION_STACK_NAME} \ --region ${AWS_DEFAULT_REGION} \ --profile ${AWS_PROFILE}