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. EspecifiqueFalse
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ê especificouFalse
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ê especificouFalse
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
ouhost
. -
ECSLaunchType: especifique
fargate
ouEC2
. -
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-$ |
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 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}