Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Como faço para ativar as métricas do Container Insights em um cluster do Amazon EKS?
Quero configurar o Amazon CloudWatch Container Insights para ver minhas métricas de cluster do Amazon Elastic Kubernetes Service (Amazon EKS).
Breve descrição
Quando você usa o Container Insights com o Amazon EKS, o Container Insights usa uma versão em contêiner do agente do CloudWatch para encontrar todos os contêineres em execução em um cluster. O Container Insights também usa o Coletor do AWS Distro para OpenTelemetry (ADOT) para encontrar contêineres em um cluster. Em seguida, o Container Insights coleta dados de desempenho em cada camada da pilha de desempenho, como os eventos de registro de desempenho que usam um formato métrico incorporado. Depois, o Container Insights envia esses dados para o CloudWatch Logs no grupo de logs /aws/containerinsights/cluster-name/performance, onde o CloudWatch cria métricas agregadas nos níveis de cluster, nó e pod. O Container Insights também permite a coleta de métricas de clusters que são implantados no AWS Fargate para Amazon EKS. Para obter mais informações, consulte Usar o Container Insights.
Observação: o Container Insights é compatível somente com instâncias Linux. A Amazon fornece uma imagem de contêiner do agente CloudWatch no Amazon Elastic Container Registry (Amazon ECR). Para obter mais informações, consulte cloudwatch-agent/cloudwatch-agent no Amazon ECR.
Resolução
Pré-requisitos
- Seu cluster do Amazon EKS está sendo executado com nós no estado Pronto e o comando kubectl está instalado e em execução.
- O CloudWatchAgentServerPolicy gerenciado pelo AWS Identity and Access Management (IAM) ativa seus nós de processamento do Amazon EKS para enviar métricas e registros para o CloudWatch. Para ativar seus nós de processamento, anexe uma política ao perfil do IAM deles. Ou use um perfil do IAM para contas de serviço do cluster e anexe a política a essa função. Para obter mais informações, consulte Perfis do IAM para contas de serviço.
- Você está executando um cluster compatível com a versão 1.18 ou superior do Kubernetes. Isso é um requisito do Container Insights para o EKS Fargate. Além disso, certifique-se de definir um perfil do Fargate para agendar pods no Fargate.
- O perfil do IAM do pod do Amazon EKS deve permitir que os componentes executados na infraestrutura do Fargate façam chamadas para as APIs da AWS em seu nome. Por exemplo, o perfil do IAM deve ser capaz de extrair imagens de contêineres do Amazon ECR.
Usar o agente do CloudWatch para configurar as métricas do Container Insights em seu cluster do EC2
O agente do CloudWatch ou ADOT primeiro cria um grupo de registros chamado aws/containerinsights/Cluster_Name/performance e, em seguida, envia os eventos de logs de desempenho para esse grupo de registros. Ao configurar o Container Insights para coletar métricas, você deve implantar a imagem do contêiner do agente do CloudWatch como um DaemonSet do Docker Hub. Por padrão, isso é feito como usuário anônimo. Essa extração pode estar sujeita a um limite de taxa.
1. Se você não tiver um namespace amazon-cloudwatch, crie um:
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cloudwatch-namespace.yaml
2. Crie uma conta de serviço para o agente do CloudWatch chamada cloudwatch-agent:
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-serviceaccount.yaml
3. Crie um configmap como arquivo de configuração para o agente do CloudWatch:
ClusterName=<my-cluster-name>curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-configmap.yaml | sed 's/cluster_name/'${ClusterName}'/' | kubectl apply -f -
Observação: substitua my-cluster-name pelo nome do seu cluster do EKS. Para obter mais informações, consulte Criar um ConfigMap para o agente do CloudWatch.
4. Implante o DaemonSet docloudwatch-agent:
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-daemonset.yaml
(Opcional) Para retirar o agente do CloudWatch do Amazon Elastic Container Registry, corrija o DaemonSet do cloudwatch-agent:
kubectl patch ds cloudwatch-agent -n amazon-cloudwatch -p \ '{"spec":{"template":{"spec":{"containers":[{"name":"cloudwatch-agent","image":"public.ecr.aws/cloudwatch-agent/cloudwatch-agent:latest"}]}}}}'
Observação: a imagem do Docker do Cloudwatch-agent no Amazon ECR é compatível com as arquiteturas ARM e AMD64. Substitua a tag de imagem mais recente com base na versão e na arquitetura da imagem. Para obter mais informações, consulte as tags de imagens cloudwatch-agent no Amazon ECR.
5. Para Perfis do IAM para contas de serviço, crie um provedor do OIDC e um perfil e uma política do IAM. Em seguida, associe o perfil do IAM à conta de serviço cloudwatch-agent:
kubectl annotate serviceaccounts cloudwatch-agent -n amazon-cloudwatch "eks.amazonaws.com/role-arn=arn:aws:iam::ACCOUNT_ID:role/IAM_ROLE_NAME"
Observação: substitua ACCOUNT_ID pela ID da sua conta e IAM_ROLE_NAME pelo perfil do IAM que você usa para as contas de serviço.
Solucionar problemas com o agente do CloudWatch
1. Para recuperar a lista de pods, execute este comando:
kubectl get pods -n amazon-cloudwatch
2. Para verificar os eventos na parte inferior da saída, execute este comando:
kubectl describe pod pod-name -n amazon-cloudwatch
3. Verifique os logs:
kubectl logs pod-name -n amazon-cloudwatch
4. Se aparecer um erro CrashLoopBackOff no agente do CloudWatch, certifique-se de que suas permissões do IAM estejam definidas corretamente. Para obter mais informações, consulte Verificar pré-requisitos.
Excluir o agente do CloudWatch
Para excluir o agente do CloudWatch, execute este comando:
kubectl delete -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cloudwatch-namespace.yaml
Observação: a exclusão do namespace também exclui os recursos associados.
Use o ADOT para configurar as métricas do Container Insights em seu cluster do EC2
1. Para implantar o ADOT Collector como DaemonSet, execute o seguinte comando:
curl https://raw.githubusercontent.com/aws-observability/aws-otel-collector/main/deployment-template/eks/otel-container-insights-infra.yaml | kubectl apply -f -
Para obter mais informações, consulte Métricas de infraestrutura do EKS do Container Insights.
2. Para confirmar se o coletor está em execução, execute este comando:
kubectl get pods -l name=aws-otel-eks-ci -n aws-otel-eks
3. (Opcional) Por padrão, a imagem aws-otel-collector é extraída do Docker Hub como usuário anônimo. Essa extração pode estar sujeita a um limite de taxa. Para extrair a imagem do Docker aws-otel-collector no Amazon ECR, corrija o DaemonSet aws-otel-eks-ci:
kubectl patch ds aws-otel-eks-ci -n aws-otel-eks -p \'{"spec":{"template":{"spec":{"containers":[{"name":"aws-otel-collector","image":"public.ecr.aws/aws-observability/aws-otel-collector:latest"}]}}}}'
Observação: a imagem do Docker do Cloudwatch-agent no Amazon ECR é compatível com as arquiteturas ARM e AMD64. Substitua a tag de imagem mais recente com base na versão e na arquitetura da imagem. Para obter mais informações, consulte as tags de imagens cloudwatch-agent no Amazon ECR.
4. (Opcional) Para Perfis do IAM para contas de serviço, crie um provedor do OIDC e um perfil e uma política do IAM. Em seguida, associe o perfil do IAM à conta de serviço aws-otel-sa.
kubectl annotate serviceaccounts aws-otel-sa -n aws-otel-eks "eks.amazonaws.com/role-arn=arn:aws:iam::ACCOUNT_ID:role/IAM_ROLE_NAME"
Observação: substitua ACCOUNT_ID pela ID da sua conta e IAM_ROLE_NAME pelo perfil do IAM que você usa para as contas de serviço.
Excluir ADOT
Para excluir o ADOT, execute este comando:
curl https://raw.githubusercontent.com/aws-observability/aws-otel-collector/main/deployment-template/eks/otel-container-insights-infra.yaml |kubectl delete -f -
Use o ADOT para configurar métricas do Container Insights em um cluster do EKS Fargate
Para aplicativos executados no Amazon EKS e no AWS Fargate, você pode usar o ADOT para configurar o Container Insights. A arquitetura de rede do EKS Fargate não permite que os pods cheguem diretamente ao kubelet do trabalhador para recuperar métricas de recursos. O ADOT Collector chama primeiro o servidor da API do Kubernetes para fazer proxy da conexão com o kubelet em um nó de processamento. Em seguida, ele coleta as métricas do kubelet Advisor para workloads desse nó.
O ADOT Collector envia as seguintes métricas ao CloudWatch para cada workload executada no EKS Fargate:
- pod_cpu_utilization_over_pod_limit
- pod_cpu_usage_total
- pod_cpu_limit
- pod_memory_utilization_over_pod_limit
- pod_memory_working_set
- pod_memory_limit
- pod_network_rx_bytes
- pod_network_tx_bytes
Cada métrica está associada a esses conjuntos de dimensões e é coletada no namespace do CloudWatch chamado ContainerInsights:
- ClusterName, LaunchType
- ClusterName, Namespace, LaunchType
- ClusterName, Namespace, PodName, LaunchType
Para obter mais informações, consulte Container Insights EKS Fargate.
Para implantar o ADOT em seu EKS Fargate, conclua estas etapas:
1. Associe uma conta de serviço do Kubernetes a um perfil do IAM. Crie um perfil do IAM chamado EKS-ADOT-ServiceAccount-Role associado a uma conta de serviço do Kubernetes chamada adot-collector. O script auxiliar a seguir requer eksctl:
#!/bin/bashCLUSTER_NAME=YOUR-EKS-CLUSTER-NAME REGION=YOUR-EKS-CLUSTER-REGION SERVICE_ACCOUNT_NAMESPACE=fargate-container-insights SERVICE_ACCOUNT_NAME=adot-collector SERVICE_ACCOUNT_IAM_ROLE=EKS-Fargate-ADOT-ServiceAccount-Role SERVICE_ACCOUNT_IAM_POLICY=arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy eksctl utils associate-iam-oidc-provider \ --cluster=$CLUSTER_NAME \ --approve eksctl create iamserviceaccount \ --cluster=$CLUSTER_NAME \ --region=$REGION \ --name=$SERVICE_ACCOUNT_NAME \ --namespace=$SERVICE_ACCOUNT_NAMESPACE \ --role-name=$SERVICE_ACCOUNT_IAM_ROLE \ --attach-policy-arn=$SERVICE_ACCOUNT_IAM_POLICY \ --approve
Observação: substitua CLUSTER_NAME pelo nome do seu cluster e REGION pela sua região da AWS.
2. Para implantar o ADOT Collector como um Kubernetes StatefulSet, execute o seguinte comando:
ClusterName=<my-cluster-name>Region=<my-cluster-region> curl https://raw.githubusercontent.com/aws-observability/aws-otel-collector/main/deployment-template/eks/otel-fargate-container-insights.yaml | sed 's/YOUR-EKS-CLUSTER-NAME/'${ClusterName}'/;s/us-east-1/'${Region}'/' | kubectl apply -f -
Observação: certifique-se de ter um perfil Fargate correspondente para provisionar os pods StatefulSet no AWS Fargate. Substitua my-cluster-name pelo nome do seu cluster e my-cluster-region pela região da AWS em que seu cluster está localizado.
3. Para verificar se o pod ADOT Collector está em execução, execute o seguinte comando:
kubectl get pods -n fargate-container-insights
4. (Opcional) Por padrão, a imagem aws-otel-collector é extraída do Docker Hub como usuário anônimo. Essa extração pode estar sujeita a um limite de taxa. Para extrair a imagem do Docker aws-otel-collector no Amazon ECR, corrija o StatefulSet adot-collector:
kubectl patch sts adot-collector -n fargate-container-insights -p \'{"spec":{"template":{"spec":{"containers":[{"name":"adot-collector","image":"public.ecr.aws/aws-observability/aws-otel-collector:latest"}]}}}}'
Excluir ADOT
Para excluir o ADOT, execute este comando:
eksctl delete iamserviceaccount --cluster CLUSTER_NAME --name adot-collector ClusterName=<my-cluster-name>Region=<my-cluster-region> curl https://raw.githubusercontent.com/aws-observability/aws-otel-collector/main/deployment-template/eks/otel-fargate-container-insights.yaml | sed 's/YOUR-EKS-CLUSTER-NAME/'${ClusterName}'/;s/us-east-1/'${Region}'/' | kubectl delete -f -

Conteúdo relevante
- feita há 21 diaslg...
- feita há 12 diaslg...
- feita há 13 diaslg...
- Resposta aceitafeita há um mêslg...
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 3 meses
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 2 meses