Implante o OTel Container Insights com o Helm
O chart do Helm do Amazon CloudWatch Observability oferece uma opção flexível de implantação para o OTel Container Insights. Ele instala o atendente do CloudWatch (baseado em OTel) com o receptor de log de arquivos do OpenTelemetry para coleta de logs. O chart do Helm é mantido em https://github.com/aws-observability/helm-charts
Use o chart do Helm quando precisar de um ou mais dos seguintes recursos:
-
Controle fino sobre a configuração do atendente
-
Coleta de logs nativa do OTel usando o receptor de log de arquivos (sem dependência de bits fluentes)
-
Gerenciamento personalizado de certificado TLS por meio do cert-manager
-
Clusters Kubernetes não EKS (ROSA, Kubernetes autogerenciado)
-
Fluxos de trabalho do GitOps com ArgoCD ou Flux
Pré-requisitos
Antes de você implantar o OTel Container Insights com o Helm, verifique se atende aos seguintes requisitos.
-
Um cluster existente do Amazon EKS executando o Kubernetes versão 1.28 ou posterior
-
Helm versão 3.9 ou superior
-
kubectlconfigurado para comunicar-se com o cluster de destino -
Permissões do IAM: política gerenciada pela
CloudWatchAgentServerPolicyanexada à função do atendente -
Um provedor do OpenID Connect (OIDC) configurado para perfis do IAM para contas de serviço (IRSA)
-
Acesso à Internet de saída do cluster para os endpoints do CloudWatch
Instale o chart do Helm
Conclua as etapas a seguir para implantar o OTel Container Insights usando o chart do Helm.
Etapa 1: adicione o repositório do Helm
Adicione o repositório do chart do Helm do AWS Observability à sua configuração local do Helm.
Para adicionar o repositório do Helm
-
Execute o comando a seguir para adicionar o repositório.
helm repo add aws-observability \ https://aws-observability.github.io/helm-charts -
Atualize o repositório para obter as versões mais recentes do chart.
helm repo update
Etapa 2: criar o perfil do IAM
Cria um perfil do IAM para permitir que o atendente do CloudWatch envie dados ao CloudWatch. Esse perfil usa o IRSA para associar permissões do IAM a uma conta de serviço do Kubernetes.
Para criar um perfil do IAM para uso com o atendente do CloudWatch
-
Recupere o URL do emissor do OIDC do cluster. Substitua
cluster-namepelo nome do cluster do Amazon EKS.aws eks describe-cluster \ --namecluster-name\ --query "cluster.identity.oidc.issuer" \ --output text -
Crie um perfil do IAM com uma política de confiança para IRSA. Substitua
account-idpelo ID da sua conta da AWS eoidc-idpelo ID do provedor OIDC da etapa anterior (a parte apóshttps://oidc.eks.region.amazonaws.com/id/).aws iam create-role \ --role-name EKS-CW-Observability-Role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::account-id:oidc-provider/oidc.eks.region.amazonaws.com/id/oidc-id" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region.amazonaws.com/id/oidc-id:sub": "system:serviceaccount:amazon-cloudwatch:cloudwatch-agent" } } }] }' -
Anexe a política gerenciada
CloudWatchAgentServerPolicyà função.aws iam attach-role-policy \ --role-name EKS-CW-Observability-Role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
Etapa 3: instale o chart
Instale o chart do Amazon CloudWatch Observability Helm com o OTel Container Insights ativado.
Para instalar o chart do Helm
-
Execute o comando a seguir. Substitua
cluster-namepelo nome do seu cluster Amazon EKS,regionpela sua região da AWS eaccount-idpelo ID da sua conta da AWS.helm install amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --create-namespace \ --set clusterName=cluster-name\ --set region=region\ --set agent.serviceAccount.name=cloudwatch-agent \ --set "agent.serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn=arn:aws:iam::account-id:role/EKS-CW-Observability-Role" \ --set otelContainerInsights.enabled=trueImportante
O parâmetro
otelContainerInsights.enabledé obrigatório. O OTel Container Insights não está ativado por padrão.
Etapa 4: verificação da instalação
Confirme se a versão do Helm e os pods do atendente foram implantados com sucesso.
Para verificar a instalação do Helm
-
Verifique se o status de lançamento do Helm mostra
deployed.helm list -n amazon-cloudwatch -
Confirme se o pod do operador está sendo executado.
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=amazon-cloudwatch-observability -
Confirme se os pods do atendente do CloudWatch estão em execução em todos os nós.
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agentTodos os pods de atendentes devem mostrar o status
Running.
Opções de configuração da chave
As tabelas a seguir descrevem os principais de chave do chart do Helm que você pode configurar. Passe esses valores usando o sinalizador --set ou um arquivo values.yaml personalizado.
Configurações do cluster
| Parâmetro | Padrão | Descrição |
|---|---|---|
clusterName |
— | O nome do cluster do Amazon EKS. Obrigatório. |
region |
— | A região da AWS onde o cluster é executado. Obrigatório. |
otelContainerInsights.enabled |
false |
Ativa o OTel Container Insights com o receptor de log de arquivos. |
Logs de contêineres (receptor de log de arquivos OTel)
| Parâmetro | Padrão | Descrição |
|---|---|---|
containerLogs.enabled |
true |
Permite a coleta de logs de contêineres usando o receptor de log de arquivos OTel. |
containerLogs.logGroupName |
/aws/containerinsights/ |
O nome do grupo de logs do CloudWatch Logs para logs de contêiner. |
containerLogs.logRetentionDays |
7 |
O número de dias em que os logs de contêiner serão retidos no CloudWatch Logs. |
Atendente (métricas)
| Parâmetro | Padrão | Descrição |
|---|---|---|
agent.enabled |
true |
Ativa o DaemonSet do atendente do CloudWatch para coleta de métricas. |
agent.serviceAccount.name |
cloudwatch-agent |
O nome da conta de serviço do Kubernetes do atendente. |
agent.resources.requests.cpu |
100m |
A solicitação de CPU para o contêiner do atendente. |
agent.resources.requests.memory |
128Mi |
A solicitação de memória para o contêiner do atendente. |
agent.resources.limits.cpu |
200m |
O limite de CPU para o contêiner do atendente. |
agent.resources.limits.memory |
256Mi |
O limite de memória para o contêiner do atendente. |
Monitoramento de GPU
| Parâmetro | Padrão | Descrição |
|---|---|---|
agent.config.logs.metrics_collected.kubernetes.enhanced_container_insights |
true |
Permite métricas aprimoradas do Container Insights, incluindo métricas de GPU. |
dcgmExporter.enabled |
false |
Ativa o exportador DCGM para métricas de GPU NVIDIA. Requer nós de GPU NVIDIA. |
neuronMonitor.enabled |
false |
Ativa o monitor do Neuron para métricas do AWS Inferentia e Trainium. |
Gerenciamento de certificado TLS
O operador do CloudWatch Observability exige certificados TLS para comunicação via webhook. Por padrão, o chart gera certificados autoassinados. Você pode usar o cert-manager para gerenciar certificados automaticamente.
Certificados autoassinados (padrão)
Por padrão, o chart do Helm gera um CA autoassinado e emite certificados a partir desse CA. Não é exigida nenhuma configuração adicional. O chart rotaciona automaticamente esses certificados durante as atualizações.
integração do cert-manager
Você pode usar o cert-manager para automatizar a emissão e renovação de certificados. Essa abordagem é útil quando sua organização exige certificados assinados externamente ou gerenciamento centralizado de certificados.
Para configurar a integração do cert-manager
-
Verifique se o cert-manager está instalado no seu cluster.
kubectl get pods -n cert-manager -
Instale o chart do Helm com o cert-manager ativado. Substitua
cluster-namepelo nome do seu cluster Amazon EKS,regionpela sua região da AWS eaccount-idpelo ID da sua conta da AWS.helm install amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --create-namespace \ --set clusterName=cluster-name\ --set region=region\ --set agent.serviceAccount.name=cloudwatch-agent \ --set "agent.serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn=arn:aws:iam::account-id:role/EKS-CW-Observability-Role" \ --set otelContainerInsights.enabled=true \ --set admissionWebhooks.certManager.enabled=true
Quando o cert-manager está ativado, o chrt cria um recurso Certificate que o cert-manager usa para emitir e gerenciar o certificado TLS do webhook automaticamente.
nota
Você também pode usar o cert-manager com emissores externos, como o HashiCorp Vault. Para configurar um emissor externo, defina admissionWebhooks.certManager.issuerRef.name e admissionWebhooks.certManager.issuerRef.kind para corresponder ao emissor do cert-manager.
Atualize o chart
Atualize o chart do Helm para aplicar novos valores de configuração ou para atualizar para uma versão mais recente do chart.
Para atualizar o chart do Helm
-
Atualize o repositório do Helm para obter as versões mais recentes do chart.
helm repo update -
Execute o comando de atualização com seus valores desejados. Substitua
cluster-namepelo nome do seu cluster Amazon EKS,regionpela sua região da AWS eaccount-idpelo ID da sua conta da AWS.helm upgrade amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --set clusterName=cluster-name\ --set region=region\ --set agent.serviceAccount.name=cloudwatch-agent \ --set "agent.serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn=arn:aws:iam::account-id:role/EKS-CW-Observability-Role" \ --set otelContainerInsights.enabled=true -
Verifique se a atualização foi concluída com êxito.
helm list -n amazon-cloudwatchO número da revisão deve ser incrementado e o status deve mostrar
deployed.
dica
Para evitar a perda de valores de configuração durante as atualizações, armazene seus valores personalizados em um arquivo values.yaml e passe-o com o sinalizador -f values.yaml.
Desinstale o chart
Para remover o OTel Container Insights do seu cluster, desinstale a versão do Helm.
Para desinstalar o chart do Helm
-
Execute o comando a seguir para desinstalar a versão.
helm uninstall amazon-cloudwatch-observability \ --namespace amazon-cloudwatch -
Opcionalmente, exclua o namespace caso ele não seja mais necessário.
kubectl delete namespace amazon-cloudwatch
Depois de desinstalar o chart do Helm, o perfil do IAM e a configuração do provedor OIDC permanecem na sua conta da AWS. Exclua esses recursos separadamente, caso eles não sejam mais necessários.
aws iam detach-role-policy \ --role-name EKS-CW-Observability-Role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy aws iam delete-role \ --role-name EKS-CW-Observability-Role
Verificar os dados no CloudWatch
Depois de instalar o chart do Helm, os dados do Container Insights aparecem no CloudWatch em 3 a 5 minutos.
Verificar as métricas
Para verificar as métricas no CloudWatch
-
Abra o console do CloudWatch, em https://console.aws.amazon.com/cloudwatch/
. -
No painel de navegação, selecione Container Insights.
-
Verifique se seu cluster aparece na lista de clusters e se as métricas de infraestrutura estão sendo preenchidas.
Verificar os logs do
Para verificar se há grupos de logs em seu cluster, execute o seguinte comando. Substitua cluster-name pelo nome do cluster do Amazon EKS.
aws logs describe-log-groups \ --log-group-name-prefix "/aws/containerinsights/cluster-name" \ --query "logGroups[].logGroupName" \ --output table
Solução de problemas
Use as orientações a seguir para resolver problemas comuns ao implantar o OTel Container Insights com o Helm.
Pod do operador em CrashLoopBackOff
Sintoma: quando você executa kubectl get pods -n
amazon-cloudwatch, o pod do operador mostra o status CrashLoopBackOff.
Causa: o pod do operador não pode ser iniciado devido a problemas com o certificado TLS ou permissões insuficientes.
Solução: para resolver esse problema, siga as seguintes etapas:
-
Verifique se há erros relacionados ao certificado nos logs do pod do operador.
kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=amazon-cloudwatch-observability --tail=50 -
Verifique se o segredo TLS do webhook existe no namespace.
kubectl get secrets -n amazon-cloudwatch | grep webhook -
Se você usa cert-manager, verifique se o status do recurso
CertificatemostraReady.kubectl get certificate -n amazon-cloudwatch -
Se o certificado estiver ausente ou for inválido, desinstale e reinstale o chart para regenerar os certificados.
helm uninstall amazon-cloudwatch-observability -n amazon-cloudwatch
Pods de atendente não programados em todos os nós
Sintoma: o atendente do DaemonSet mostra menos pods do que o número de nós em seu cluster.
Causa: contaminações de nós, restrições de recursos ou seletores de nós impedem que os pods de atendente sejam programados em determinados nós.
Solução: para resolver esse problema, siga as seguintes etapas:
-
Verifique o status do DaemonSet para ver se há problemas de programação.
kubectl get daemonset -n amazon-cloudwatch cloudwatch-agent -
Verifique se há pods que não podem ser programados e veja seus eventos.
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --field-selector=status.phase!=Running -
Se os nós tiverem taints, adicione tolerâncias aos valores do chart do Helm. Por exemplo, para tolerar todos os taints, atualize o chart com o seguinte sinalizador.
helm upgrade amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --reuse-values \ --set "agent.tolerations[0].operator=Exists" -
Verifique se os pods do atendente agora são executados em todos os nós.
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent -o wide