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 as métricas do meu cluster do Amazon Elastic Kubernetes Service (Amazon EKS).
Resolução
O Container Insights é compatível somente com instâncias Linux. A Amazon fornece uma imagem de contêiner do agente do CloudWatch no Amazon Elastic Container Registry (Amazon ECR). Para obter mais informações, consulte cloudwatch-agent/cloudwatch-agent.
Antes de começar, certifique-se de atender aos pré-requisitos do Container Insights no CloudWatch. Em clusters do AWS Fargate, você deve definir um Perfil do Fargate para programar pods. Além disso, o perfil do Identity and Access Management (IAM) do Amazon EKS Pod deve permitir que componentes executados na infraestrutura do Fargate façam chamadas para as APIs da AWS. Por exemplo, o perfil do IAM deve ser capaz de extrair imagens de contêiner do Amazon ECR.
Use o agente do CloudWatch para configurar as métricas do Container Insights em seu cluster do EKS
O agente do CloudWatch cria um grupo de logs chamado aws/containerinsights/Cluster_Name/performance e, em seguida, envia os eventos de logs de desempenho para o grupo de logs. 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, você implanta a imagem do contêiner como um usuário anônimo.
Observação: o Docker pode limitar o número de imagens que é possível extrair.
Para usar o agente do CloudWatch para configurar o Container Insights, conclua as etapas a seguir:
-
Execute o comando a seguir para criar um namespace amazon-cloudwatch:
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 -
Execute o comando a seguir para criar 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 -
Execute o comando a seguir para criar um configmap como um 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 Etapa 3: Criar um ConfigMap para o atendente do CloudWatch.
-
Execute o comando a seguir para implantar o DaemonSet 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-daemonset.yaml -
(Opcional) Execute o seguinte comando para aplicar patch no DaemonSet do cloudwatch-agent para que ele extraia o agente do CloudWatch do ECR:
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 agente do CloudWatch no 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 cloudwatch-agent/cloudwatch-agent.
-
Em perfis do IAM para contas de serviço, crie um provedor OIDC e um perfil e uma política do IAM. Em seguida, execute o comando a seguir para associar 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 pelo ID da sua conta e IAM_ROLE_NAME pelo perfil do IAM que você usa nas contas de serviço.
Solucione problemas com o agente do CloudWatch
Conclua as etapas a seguir:
-
Execute o comando a seguir para recuperar a lista de pods:
kubectl get pods -n amazon-cloudwatch -
Execute o comando a seguir para verificar os eventos na parte inferior da saída:
kubectl describe pod pod-name -n amazon-cloudwatch -
Execute o comando a seguir para verificar os logs:
kubectl logs pod-name -n amazon-cloudwatch -
Se você vir um erro CrashLoopBackOff no agente do CloudWatch, confirme se você configurou corretamente suas permissões do IAM.
Exclua o agente do CloudWatch
Execute o comando a seguir para excluir o agente do CloudWatch:
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: se você excluir o namespace, os recursos associados também serão excluídos.
Use o Distro para OpenTelemetry para configurar as métricas do Container Insights em seu cluster do EKS
O AWS Distro para OpenTelemetry cria um grupo de logs chamado aws/containerinsights/Cluster_Name/performance e, em seguida, envia os eventos de logs de desempenho para o grupo de logs.
Conclua as etapas a seguir:
-
Execute o comando a seguir para implantar o AWS OpenTelemetry Collector como um DaemonSet:
curl https://raw.githubusercontent.com/aws-observability/aws-otel-collector/main/deployment-template/eks/otel-container-insights-infra.yaml | kubectl apply -f -Observação: para obter mais informações, consulte Container Insights EKS infrastructure metrics (Métricas de infraestrutura do EKS do Container Insights).
-
Execute o comando a seguir para confirmar se o coletor está em execução:
kubectl get pods -l name=aws-otel-eks-ci -n aws-otel-eks -
(Opcional) Execute o seguinte comando para aplicar patch no DaemonSet aws-otel-eks-ci para que ele extraia a imagem do Docker aws-otel-collector no ECR:
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 agente do CloudWatch no 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.
-
(Opcional) Em perfis do IAM para contas de serviço, crie um provedor OIDC e um perfil e uma política do IAM. Em seguida, execute o comando a seguir para associar 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 pelo ID da sua conta e IAM_ROLE_NAME pelo perfil do IAM que você usa nas contas de serviço.
Exclua o Distro para OpenTelemetry
Execute o seguinte comando para excluir o Distro para OpenTelemetry:
curl https://raw.githubusercontent.com/aws-observability/aws-otel-collector/main/deployment-template/eks/otel-container-insights-infra.yaml |kubectl delete -f -
Use o Distro para OpenTelemetry para configurar as métricas do Container Insights em um cluster do EKS Fargate
Em aplicações executadas no EKS e no Fargate, é possível usar o Distro para OpenTelemetry para configurar o Container Insights.<br id=hardline_break/> O AWS OpenTelemetry Collector envia as seguintes métricas ao CloudWatch para cada workload executado 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
O AWS OpenTelemetry Collector coleta cada métrica sob o namespace CloudWatch chamado ContainerInsights. No console do CloudWatch, clique em Métricas e, em seguida, em Todas as métricas. É ir até ContainerInsights em Namespace personalizado.
Cada métrica está associada aos seguintes conjuntos de dimensões:
- ClusterName, LaunchType
- ClusterName, Namespace, LaunchType
- ClusterName, Namespace, PodName, LaunchType
Para obter mais informações, consulte Container Insights EKS Fargate.
Para implantar o Distro para OpenTelemetry em seu EKS Fargate, conclua as etapas a seguir:
-
Crie um namespace chamado fargate-container-insights.
-
Use o seguinte script para criar 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 exige eksctl:
#!/bin/bashCLUSTER_NAME=YOUR-EKS-CLUSTER-NAMEREGION=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 kubectl create ns fargate-container-insights 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 \ --approveObservação: substitua CLUSTER_NAME pelo nome do seu cluster e REGION pela sua região da AWS.
-
Execute o comando a seguir para implantar o AWS OpenTelemetry Collector como um StatefulSet do Kubernetes:
ClusterName= your-cluster-name Region= your-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: substitua your-cluster-name pelo nome do seu cluster e your-cluster-region pela região em que seu cluster está localizado. Certifique-se de ter um perfil do Fargate correspondente para provisionar os pods StatefulSet no Fargate.
-
Execute o comando a seguir para verificar se o pod do Distro para Open Telemetry Collector está em execução:
kubectl get pods -n fargate-container-insights -
(Opcional) Execute o comando a seguir para aplicar patch no StatefulSet adot-collector para que ele extraia a imagem do Docker aws-otel-collector no ECR:
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"}]}}}}'
Exclua o Distro para OpenTelemetry
Execute o seguinte comando para excluir o Distro para OpenTelemetry:
eksctl delete iamserviceaccount --cluster CLUSTER_NAME --name adot-collector ClusterName= your-cluster-name Region= your-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 -
Observação: substitua your-cluster-name pelo nome do seu cluster e your-cluster-region pela região em que seu cluster está localizado.
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
- feita há 8 meses
- feita há 9 meses
AWS OFICIALAtualizada há um ano