Instalar o agente do CloudWatch usando o complemento de observabilidade do EKS do Amazon CloudWatch
O complemento Amazon CloudWatch Observability do EKS instala o agente do CloudWatch e o agente do Fluent Bit em um cluster do Amazon EKS, com uma observabilidade aprimorada do Container Insights para o Amazon EKS e com o CloudWatch Application Signals habilitado por padrão. Ao usar o complemento, é possível coletar as métricas de infraestrutura, a telemetria de performance para as aplicações e os logs de contêiner do cluster do Amazon EKS.
Com o Container Insights com capacidade de observabilidade aprimorada para o Amazon EKS, as métricas do Container Insights são cobradas por observação, em vez de serem cobradas por métrica armazenada ou log ingerido. Para o Application Signals, o faturamento é baseado nas solicitações de entrada para as aplicações, nas solicitações de saída das aplicações e em cada objetivo de nível de serviço (SLO) configurado. Cada solicitação de entrada recebida gera um sinal de aplicação e cada solicitação de saída realizada gera um sinal de aplicação. Cada SLO cria dois sinais de aplicações por período de medição. Para obter mais informações sobre os preços do CloudWatch, consulte Preço do Amazon CloudWatch
O complemento do Amazon EKS possibilita o uso do Container Insights em nós de processamento do Linux e do Windows no cluster do Amazon EKS. Para habilitar o Container Insights no Windows, é necessário usar a versão 1.5.0 ou versões posteriores do complemento do Amazon EKS. No momento, o Application Signals não é compatível com sistema Windows em clusters do Amazon EKS.
O complemento Amazon CloudWatch Observability do EKS é compatível com os clusters do Amazon EKS executados com a versão 1.23 ou com versões posteriores do Kubernetes.
Ao instalar o complemento, também é necessário conceder permissões do IAM para habilitar que o agente do CloudWatch envie métricas, logs e rastreamentos para o CloudWatch. Há duas maneiras de fazer isso:
Anexe uma política à função do IAM dos nós de processamento. Essa opção concede permissões aos nós de processamento para enviar telemetria ao CloudWatch.
Use um perfil do IAM para contas de serviço dos pods de agentes e anexe a política a esse perfil. Funciona somente para clusters do Amazon EKS. Essa opção dá ao CloudWatch acesso apenas aos pods de agente adequados.
Opção 1: instalar com permissões do IAM nos nós de processamento
Para usar esse método, primeiro anexe a política do IAM CloudWatchAgentServerPolicy aos nós de processamento, digitando o comando a seguir. Nesse comando, substitua my-worker-node-role
pelo perfil do IAM usado por seus nós de processamento do Kubernetes.
aws iam attach-role-policy \ --role-name
my-worker-node-role
\ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
Em seguida, instale o complemento de observabilidade do EKS do Amazon CloudWatch. Para instalar o complemento, você pode usar a AWS CLI, o console, o AWS CloudFormation ou o Terraform.
Opção 2: instalar usando a função de conta de serviço do IAM
Antes de usar esse método, verifique os seguintes pré-requisitos:
-
Você possui um cluster funcional do Amazon EKS com nós conectados em uma das Regiões da AWS que são compatíveis com o Container Insights. Para obter a lista de regiões compatíveis, consulte Container Insights.
-
Você instalou o
kubectl
e configurou o cluster. Para obter mais informações, consulte Instalar okubectl
no Manual do usuário do Amazon EKS. -
Você tem o
eksctl
instalado. Para obter mais informações, consulte Instalação ou atualização doeksctl
no Guia do usuário do Amazon EKS.
Instalar o complemento de observabilidade do EKS do Amazon CloudWatch usando o perfil de conta de serviço do IAM
Insira o comando seguir para criar um provedor do OpenID Connect (OIDC), se o cluster ainda não tiver um. Para obter mais informações, consulte Configuração de uma conta de serviço do Kubernetes para assumir um perfil do IAM no Guia do usuário do Amazon EKS.
eksctl utils associate-iam-oidc-provider --cluster
my-cluster-name
--approveInsira o comando a seguir para criar o perfil do IAM com a política CloudWatchAgentServerPolicy anexada e configure a conta do serviço de agente para assumir esse perfil usando o OIDC. Substitua
my-cluster-name
pelo nome do seu cluster e substituamy-service-account-role
pelo nome do perfil ao qual você deseja associar a conta de serviço. Se o perfil ainda não existir, oeksctl
o criará para você.eksctl create iamserviceaccount \ --name cloudwatch-agent \ --namespace amazon-cloudwatch --cluster
my-cluster-name
\ --role-namemy-service-account-role
\ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --role-only \ --approveInstale o complemento inserindo o comando a seguir. Substitua
my-cluster-name
pelo nome do seu cluster, substitua111122223333
pela ID da sua conta e substituamy-service-account-role
pelo perfil do IAM criado na etapa anterior.aws eks create-addon --addon-name amazon-cloudwatch-observability --cluster-name
my-cluster-name
--service-account-role-arn arn:aws:iam::111122223333
:role/my-service-account-role
(Opcional) Configuração adicional
Opte por não coletar logs de contêineres
Por padrão, o complemento usa o Fluent Bit para coletar logs de contêineres de todos os pods e, em seguida, envia os logs para o CloudWatch Logs. Para obter informações sobre quais logs são coletados, consulte Configurar o Fluent Bit.
Para desativar a coleta de logs de contêineres, passe a seguinte opção ao criar ou atualizar o complemento:
--configuration-values '{ "containerLogs": { "enabled": false } }'
Opte por não participar da coleção de métricas de GPU NVIDIA
A partir da versão 1.300034.0 do agente CloudWatch, o Container Insights coleta métricas de GPU NVIDIA das workloads do EKS por padrão. Essas métricas estão listadas na tabela em Métricas da GPU NVIDIA.
Você pode optar por não coletar métricas de GPU NVIDIA definindo a opção accelerated_compute_metrics
no arquivo de configuração do agente CloudWatch como false
. Essa opção está na seção kubernetes
da seção metrics_collected
no arquivo de configuração do CloudWatch. Este é um exemplo de uma configuração de exclusão.
{ "agent": { "region": "us-east-1" }, "logs": { "metrics_collected": { "emf": { }, "kubernetes": { "enhanced_container_insights": true, "accelerated_compute_metrics": false } }, "force_flush_interval": 5, } }
Como usar uma configuração personalizada do agente do CloudWatch
Para coletar métricas, logs ou rastreamentos adicionais usando o agente do CloudWatch, é possível especificar uma configuração personalizada e, ao mesmo tempo, manter o Container Insights e o CloudWatch Application Signals habilitados. Para fazê-lo, incorpore o arquivo de configuração do agente do CloudWatch na chave de configuração no âmbito da chave do agente da configuração avançada que você pode usar ao criar ou ao atualizar o complemento para o EKS. Veja a seguir uma representação da configuração padrão do agente quando nenhuma configuração adicional é fornecida.
Importante
Qualquer configuração personalizada fornecida usando as definições de configurações adicionais substitui a configuração padrão usada pelo agente. Tenha cuidado para não desabilitar acidentalmente as funcionalidades que são habilitadas por padrão, como o Container Insights com uma observabilidade aprimorada e o CloudWatch Application Signals. Diante do cenário em que é necessário fornecer uma configuração do agente personalizada, recomendamos usar a configuração padrão apresentada a seguir como linha de base e, em seguida, modificá-la com base nas suas necessidades.
--configuration-values '{ "agent": { "config": { "logs": { "metrics_collected": { "app_signals": {}, "kubernetes": { "enhanced_container_insights": true } } }, "traces": { "traces_collected": { "app_signals": {} } } } }'
O exemplo apresentado a seguir mostra a configuração padrão do agente do CloudWatch no Windows. O agente do CloudWatch no Windows não oferece suporte à configuração personalizada.
{ "logs": { "metrics_collected": { "kubernetes": { "enhanced_container_insights": true }, } } }
Gerenciamento de certificados TLS para o webhook de admissão
O complemento Amazon CloudWatch Observability do EKS utiliza webhooks de admissãoAmazonCloudWatchAgent
e de Instrumentation
e, opcionalmente, solicitações de pod do Kubernetes no cluster, se o CloudWatch Application Signals estiver habilitado. No Kubernetes, os webhooks requerem um certificado TLS no qual o servidor de API esteja configurado para confiar, a fim de garantir uma comunicação segura.
Por padrão, o complemento Amazon CloudWatch Observability do EKS gera automaticamente uma CA autoassinada e um certificado TLS assinado por essa CA para proteger a comunicação entre o servidor de API e o servidor de webhook. O certificado gerado automaticamente tem uma expiração padrão de dez anos e não é renovado de forma automática após expirar. Além disso, o pacote da CA e o certificado são gerados novamente sempre que o complemento é atualizado ou reinstalado, redefinindo, assim, a expiração. Caso deseje alterar a expiração padrão do certificado gerado automaticamente, você poderá usar as configurações adicionais apresentadas a seguir ao criar ou atualizar o complemento. Substitua expiry-in-days
pelo período de expiração desejado em dias.
--configuration-values '{ "admissionWebhooks": { "autoGenerateCert": { "expiryDays":
expiry-in-days
} } }'
Para obter uma solução mais segura e repleta de recursos da autoridade de certificação, o complemento tem suporte opcional para o cert-manager
Recomendamos analisar as práticas recomendadas para o gerenciamento de certificados TLS em seus clusters e aconselhamos a opção pelo cert-manager para ambientes de produção. Observe que, se você optar por habilitar o cert-manager para gerenciar os certificados TLS para o webhook de admissão, será necessário instalar previamente o cert-manager no cluster do Amazon EKS antes de instalar o complemento Amazon CloudWatch Observability do EKS. Consulte a documentação do cert-manager
--configuration-values '{ "admissionWebhooks": { "certManager": { "enabled": true } } }'
A configuração avançada debatida nesta seção usará, por padrão, um emissor SelfSigned
Como coletar IDs de volume do Amazon EBS
Se quiser coletar IDs de volume do Amazon EBS nos logs de performance, será necessário adicionar outra política ao perfil do IAM que está anexado aos nós de processamento ou à conta de serviço. Adicione o seguinte como uma política em linha. Para obter mais informações, consulte Adicionar e remover permissões de identidade do IAM.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:DescribeVolumes" ], "Resource": "*", "Effect": "Allow" } ] }
Solução de problemas do complemento Amazon CloudWatch Observability do EKS
Use as informações apresentadas a seguir para ajudar a solucionar problemas relacionados ao complemento Amazon CloudWatch Observability do EKS.
Atualização e exclusão do complemento Amazon CloudWatch Observability do EKS
Para obter instruções sobre como atualizar ou excluir o complemento Amazon CloudWatch Observability do EKS, consulte Gerenciar complementos do Amazon EKS. Use amazon-cloudwatch-observability
como o nome do complemento.
Verificação da versão do agente do CloudWatch usado pelo complemento Amazon CloudWatch Observability do EKS
O complemento Amazon CloudWatch Observability do EKS instala um recurso personalizado do tipo AmazonCloudWatchAgent
que controla o comportamento do daemonset do agente do CloudWatch no cluster, incluindo a versão do agente do CloudWatch que está sendo usada. É possível obter uma lista de todos os recursos personalizados do tipo AmazonCloudWatchAgent
, que estão instalados em seu cluster, ao inserir o seguinte comando:
kubectl get amazoncloudwatchagent -A
Na saída desse comando, você poderá verificar a versão do agente do CloudWatch. Como alternativa, também é possível descrever o recurso amazoncloudwatchagent
ou um dos pods do cloudwatch-agent-*
em execução no cluster para inspecionar a imagem que está sendo usada.
Tratamento de um ConfigurationConflict durante o gerenciamento do complemento
Ao instalar ou atualizar o complemento Amazon CloudWatch Observability do EKS, se você perceber uma falha causada por um Health Issue
do tipo ConfigurationConflict
com uma descrição que começa com Conflicts found when trying to apply. Will not continue due to resolve conflicts mode
, é provável que você já tenha o agente do CloudWatch e os componentes associados, como o ServiceAccount, o ClusterRole e o ClusterRoleBinding instalados no cluster. Quando o complemento tentar instalar o agente do CloudWatch e os componentes associados, se ele detectar quaisquer alterações no conteúdo, por padrão, apresentará falhas na instalação ou na atualização para evitar a substituição do estado dos recursos no cluster.
Se você estiver tentando realizar a integração do complemento Amazon CloudWatch Observability do EKS e obter essa falha, recomendamos excluir uma configuração existente do agente do CloudWatch instalada anteriormente no cluster e, em seguida, instalar o complemento do EKS. Certifique-se de fazer backup de quaisquer personalizações que você possa ter executado na configuração original do agente do CloudWatch, como uma configuração do agente personalizada, e fornecê-las ao complemento Amazon CloudWatch Observability do EKS na próxima instalação ou atualização. Se você realizou a instalação do agente do CloudWatch para a integração com o Container Insights, consulte Exclusão do agente do CloudWatch e do Fluent Bit para o Container Insights para obter mais informações.
Como alternativa, o complemento oferece suporte a uma opção de configuração de resolução de conflitos que tem a funcionalidade de especificar OVERWRITE
. É possível usar essa opção para prosseguir com a instalação ou a atualização do complemento ao substituir os conflitos no cluster. Se você estiver usando o console do Amazon EKS, encontrará o Método de resolução de conflitos ao escolher as Definições de configuração opcionais na criação ou na atualização do complemento. Caso esteja usando a AWS CLI, você poderá fornecer o comando --resolve-conflicts OVERWRITE
para criar ou atualizar o complemento.