Instalar o atendente do CloudWatch com a coleção de métricas do Prometheus em clusters do Amazon ECS
Esta seção explica como configurar o atendente do CloudWatch com monitoramento do Prometheus em um cluster que está executando o Amazon ECS. Depois que você fizer isso, o atendente automaticamente extrairá e importará métricas para as seguintes workloads em execução nesse cluster.
-
AWS App Mesh
-
Java/JMX
Também é possível configurar o atendente para extrair e importar métricas de outras workloads e origens do Prometheus.
Configurar funções do IAM
Você precisa de duas funções do IAM para a definição de tarefa do atendente do CloudWatch. Se você especificar CreateIAMRoles=True na pilha CloudFormation para que o Container Insights crie essas funções para você, as funções serão criadas com as permissões corretas. Caso queira criá-las ou usar funções existentes, as funções e permissões a seguir são necessárias.
-
Função de tarefa do ECS do atendente do CloudWatch: o contêiner do atendente do CloudWatch usa essa função. Ela deve incluir a política CloudWatchAgentServerPolicy e uma política gerenciada pelo cliente que contenha as seguintes permissões somente para leitura:
-
ec2:DescribeInstances -
ecs:ListTasks -
ecs:ListServices -
ecs:DescribeContainerInstances -
ecs:DescribeServices -
ecs:DescribeTasks -
ecs:DescribeTaskDefinition
-
-
Função de execução de tarefa do ECS do atendente do CloudWatch: essa é a função necessária para o Amazon ECS iniciar e executar os contêineres. Verifique se sua função de execução de tarefa tem as políticas AmazonSSMReadOnlyAccess, AmazonECSTaskExecutionRolePolicy e CloudWatchAgentServerPolicy anexadas. Se precisar armazenar dados mais sigilosos para uso do Amazon ECS, consulte Especificar dados sigilosos.
Instale o atendente do CloudWatch com o monitoramento do Prometheus usando CloudFormation
Você pode usar AWS CloudFormation para instalar o atendente do CloudWatch com o monitoramento do Prometheus para clusters do Amazon ECS. A lista a seguir exibe os parâmetros que você usará no modelo CloudFormation.
-
ECSClusterName: especifica o cluster do Amazon ECS de destino.
-
CreateIAMRoles: especifique
Truepara criar novas funções para a função de tarefa do Amazon ECS e para a função de execução de tarefas do Amazon ECS. EspecifiqueFalsepara reutilizar funções existentes. -
TaskRoleName: se você especificou
Trueem CreateIAMRoles, isso especifica o nome a ser usado para a função de tarefa do Amazon ECS. Se você especificouFalseem CreateIAMRoles, isso especifica a função existente a ser usada para a função de tarefa do Amazon ECS. -
ExecutionRoleName: se você especificou
Trueem CreateIAMRoles, isso especifica o nome a ser usado para a função de execução de tarefa do Amazon ECS. Se você especificouFalseem CreateIAMRoles, isso especifica a função existente a ser usada para a função de execução de tarefa do Amazon ECS. -
ECSNetworkMode: se estiver usando o tipo de inicialização do EC2, especifique o modo de rede aqui. Deve ser
bridgeouhost. -
ECSLaunchType: especifique
fargateouEC2. -
SecurityGroupID: se o ECSNetworkMode for
awsvpc, especifique o ID do grupo de segurança aqui. -
SubnetID: se o ECSNetworkMode for
awsvpc, especifique o ID da sub-rede aqui.
Exemplos de comando
Esta seção contém exemplos de comando do CloudFormation para instalar o Container Insights com o monitoramento do Prometheus em vários cenários.
Criar uma pilha do CloudFormation para um cluster do Amazon ECS no modo de rede de ponte
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}
Criar uma pilha do CloudFormation para um cluster do Amazon ECS no modo de rede de 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}
Criar uma pilha do CloudFormation para um cluster do Amazon ECS no modo de rede 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}
Criar uma pilha do CloudFormation para um cluster do Fargate no modo de rede 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}
Recursos da AWS criados pela pilha do CloudFormation
A tabela a seguir lista os recursos da AWS que são criados quando você usa o CloudFormation para configurar o Container Insights com o monitoramentodo Prometheus em um cluster do Amazon ECS.
| Tipo de recurso | Nome do recurso | Comentários |
|---|---|---|
|
AWS::SSM::Parameter |
AmazonCloudWatch-CWAgentConfig-$ |
Este é o atendente do CloudWatch com a definição padrão do formato de métrica incorporado de App Mesh e Java/JMX. |
|
AWS::SSM::Parameter |
AmazonCloudWatch-PrometheusConfigName-$ |
Esta é a configuração de extração do Prometheus. |
|
AWS::IAM::Perfil |
$ECS_TASK_ROLE_NAME. |
A função de tarefa do Amazon ECS. Isso somente é criado se você especificou |
|
AWS::IAM::Perfil |
${ECS_EXECUTION_ROLE_NAME} |
A função de execução de tarefa do Amazon ECS. Isso somente é criado se você especificou |
|
AWS::ECS::TaskDefinition |
cwagent-prometheus-$ |
|
|
AWS::ECS::Service |
cwagent-prometheus-replica-service-$ |
Excluir a pilha do CloudFormation para o atendente do CloudWatch com monitoramento do Prometheus
Para excluir o atendente do CloudWatch de um cluster do Amazon ECS, insira estes comandos.
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}