Instalar o atendente do CloudWatch com a coleção de métricas do Prometheus em clusters do Amazon ECS - Amazon CloudWatch

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 AWS 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 AWS 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 AWS CloudFormation.

  • ECSClusterName: especifica o cluster do Amazon ECS de destino.

  • CreateIAMRoles: especifique True para 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. Especifique False para reutilizar funções existentes.

  • TaskRoleName: se você especificou True em CreateIAMRoles, isso especifica o nome a ser usado para a função de tarefa do Amazon ECS. Se você especificou False em CreateIAMRoles, isso especifica a função existente a ser usada para a função de tarefa do Amazon ECS.

  • ExecutionRoleName: se você especificou True em CreateIAMRoles, isso especifica o nome a ser usado para a função de execução de tarefa do Amazon ECS. Se você especificou False em 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 bridge ou host.

  • ECSLaunchType: especifique fargate ou EC2.

  • 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 AWS CloudFormation para instalar o Container Insights com o monitoramento do Prometheus em vários cenários.

Criar uma pilha do AWS CloudFormation para um cluster do Amazon ECS no modo de rede de ponte

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}

Criar uma pilha do AWS CloudFormation para um cluster do Amazon ECS no modo de rede de 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}

Criar uma pilha do AWS CloudFormation para um cluster do Amazon ECS no modo de rede 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}

Criar uma pilha do AWS CloudFormation para um cluster do Fargate no modo de rede 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}

Recursos da AWS criados pela pilha do AWS CloudFormation

A tabela a seguir lista os recursos da AWS que são criados quando você usa o AWS 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-$ECS_CLUSTER_NAME-$ECS_LAUNCH_TYPE-$ECS_NETWORK_MODE

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-$ECS_CLUSTER_NAME-$ECS_LAUNCH_TYPE-$ECS_NETWORK_MODE

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

AWS::IAM::Perfil

${ECS_EXECUTION_ROLE_NAME}

A função de execução de tarefa do Amazon ECS. Isso somente é criado se você especificou True em 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

Excluir a pilha do AWS 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_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}