Habilitar aplicações em clusters do Amazon EKS
O CloudWatch Application Signals é compatível com aplicações desenvolvidas em Java, Python, Node.js e .NET. Para habilitar o Application Signals para suas aplicações em um cluster do Amazon EKS existente, você pode usar o Console de gerenciamento da AWS, o AWS CDK, ou a configuração avançada, chamada Monitoramento automático, do complemento de observabilidade do CloudWatch.
Tópicos
Habilitar o Application Signals em um cluster do Amazon EKS usando o console
Para habilitar o CloudWatch Application Signals nas aplicações em um cluster do Amazon EKS existente, use as instruções apresentadas nesta seção.
Importante
Se você já estiver usando o OpenTelemetry com uma aplicação para a qual pretende habilitar o Application Signals, consulte Sistemas compatíveis antes de habilitar o Application Signals.
Como habilitar o Application Signals para suas aplicações em um cluster do Amazon EKS existente
nota
Se você ainda não tiver habilitado o Application Signals, siga as instruções em Habilitar o Application Signals na conta e, em seguida, siga o procedimento abaixo.
Abra o console do CloudWatch, em https://console.aws.amazon.com/cloudwatch/
. Escolha Application Signals.
Em Especificar plataforma, escolha EKS.
Em Selecionar um cluster do EKS, selecione o cluster no qual você deseja habilitar o Application Signals.
Se esse cluster ainda não tiver o complemento Amazon CloudWatch Observability do EKS habilitado, você será solicitado a habilitá-lo. Se for esse o caso, faça o seguinte:
Escolha Adicionar o complemento CloudWatch Observability do EKS. O console do Amazon EKS será exibido.
Marque a caixa de seleção para Amazon CloudWatch Observability e escolha Próximo.
O complemento CloudWatch Observability do EKS habilita o Application Signals e o CloudWatch Container Insights com observabilidade aprimorada para o Amazon EKS. Para obter mais informações sobre o Container Insights, consulte Container Insights.
Selecione a versão mais recente do complemento para a instalação.
Selecione um perfil do IAM para usar com o complemento. Se você escolher Herdar do nó, anexe as permissões adequadas ao perfil do IAM usado pelos nós de processamento. Substitua
my-worker-node-rolepelo perfil do IAM usado por seus nós de processamento do Kubernetes.aws iam attach-role-policy \ --role-namemy-worker-node-role\ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --policy-arn arn:aws:iam::aws:policy/AWSXRayWriteOnlyAccessCaso deseje criar um perfil de serviço para usar o complemento, consulte Instalação do agente do CloudWatch com o complemento de observabilidade do EKS do Amazon CloudWatch ou com o chart do Helm.
Escolha Próximo, confirme as informações na tela e escolha Criar.
Na próxima tela, escolha Habilitar o CloudWatch Application Signals para retornar ao console do CloudWatch e finalizar o processo.
-
Existem duas opções para habilitar as aplicações para o Application Signals. Para manter a consistência, recomendamos que você escolha uma opção por cluster.
A opção Console é mais simples. O uso desse método resulta na reinicialização imediata dos seus pods.
O método Anotar o arquivo de manifesto oferece mais controle sobre quando os pods serão reiniciados e também pode ajudar no gerenciamento do monitoramento de uma forma mais descentralizada se você não desejar centralizá-lo.
nota
Se você estiver habilitando o Application Signals para uma aplicação do Node.js com ESM, avance para a seção Configuração de uma aplicação do Node.js usando o formato de módulo ESM.
Escolha Visualizar os serviços na conclusão. Isso direciona você para a visualização dos serviços do Application Signals, um local no qual você pode consultar os dados que o Application Signals está coletando. Pode demorar alguns minutos para que os dados sejam exibidos.
Para habilitar o Application Signals em outro cluster do Amazon EKS, escolha Habilitar o Application Signals usando a tela Serviços.
Para obter mais informações sobre a visualização dos Serviços, consulte Monitorar a integridade operacional das suas aplicações com o Application Signals.
nota
Se você estiver usando um servidor WSGI para a aplicação em Python, consulte Não há dados do Application Signals para aplicações em Python que usam um servidor WSGI para obter informações sobre como fazer o Application Signals funcionar.
Além disso, identificamos outras considerações que você deve considerar ao habilitar aplicações em Python para o Application Signals. Para obter mais informações, consulte A aplicação em Python não é iniciada após a habilitação do Application Signals.
Configuração de uma aplicação do Node.js usando o formato de módulo ESM
Fornecemos suporte limitado para aplicações do Node.js com o formato de módulo ESM. Para obter detalhes, consulte Limitações conhecidas sobre o uso de ESM com o Node.js.
No formato de módulo ESM, a habilitação do Application Signals por meio do console ou ao usar a anotação do arquivo manifesto não funciona corretamente. Ignore a etapa 8 do procedimento anterior e, em vez disso, execute as ações apresentadas a seguir.
Para habilitar o Application Signals em uma aplicação do Node.js com o ESM
Instale as dependências relevantes para a instrumentação automática na aplicação do Node.js:
npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation npm install @opentelemetry/instrumentation@0.54.0Adicione as variáveis de ambiente, apresentadas a seguir, ao Dockerfile da aplicação e crie a imagem.
... ENV OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true ENV OTEL_TRACES_SAMPLER_ARG='endpoint=http://cloudwatch-agent.amazon-cloudwatch:2000' ENV OTEL_TRACES_SAMPLER='xray' ENV OTEL_EXPORTER_OTLP_PROTOCOL='http/protobuf' ENV OTEL_EXPORTER_OTLP_TRACES_ENDPOINT='http://cloudwatch-agent.amazon-cloudwatch:4316/v1/traces' ENV OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT='http://cloudwatch-agent.amazon-cloudwatch:4316/v1/metrics' ENV OTEL_METRICS_EXPORTER='none' ENV OTEL_LOGS_EXPORTER='none' ENV NODE_OPTIONS='--import @aws/aws-distro-opentelemetry-node-autoinstrumentation/register --experimental-loader=@opentelemetry/instrumentation/hook.mjs' ENV OTEL_SERVICE_NAME='YOUR_SERVICE_NAME' #replace with a proper service name ENV OTEL_PROPAGATORS='tracecontext,baggage,b3,xray' ... # command to start the application # for example # CMD ["node", "index.mjs"]Adicione as variáveis de ambiente
OTEL_RESOURCE_ATTRIBUTES_POD_NAME,OTEL_RESOURCE_ATTRIBUTES_NODE_NAME,OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME,POD_NAMESPACEeOTEL_RESOURCE_ATTRIBUTESao arquivo de implantação no formato YAML da aplicação. Por exemplo:apiVersion: apps/v1 kind: Deployment metadata: name: nodejs-app labels: app: nodejs-app spec: replicas: 2 selector: matchLabels: app: nodejs-app template: metadata: labels: app: nodejs-app # annotations: # make sure this annotation doesn't exit # instrumentation.opentelemetry.io/inject-nodejs: 'true' spec: containers: - name: nodejs-app image:your-nodejs-application-image#replace with a proper image uri imagePullPolicy: Always ports: - containerPort: 8000 env: - name: OTEL_RESOURCE_ATTRIBUTES_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: OTEL_RESOURCE_ATTRIBUTES_NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME valueFrom: fieldRef: fieldPath: metadata.labels['app'] # Assuming 'app' label is set to the deployment name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: OTEL_RESOURCE_ATTRIBUTES value: "k8s.deployment.name=$(OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME),k8s.namespace.name=$(POD_NAMESPACE),k8s.node.name=$(OTEL_RESOURCE_ATTRIBUTES_NODE_NAME),k8s.pod.name=$(OTEL_RESOURCE_ATTRIBUTES_POD_NAME)"Realize a implantação da aplicação do Node.js no cluster.
Depois de habilitar as aplicações em clusters do Amazon EKS, você pode monitorar a integridade da aplicação. Para obter mais informações, consulte Monitorar a integridade operacional das suas aplicações com o Application Signals.
Habilitação do Application Signals em um cluster do Amazon EKS usando a configuração avançada do complemento de observabilidade do CloudWatch
Por padrão, o monitoramento de performance de aplicações (APM) baseado em OpenTelemetry (OTEL) é habilitado usando o Application Signals ao instalar o complemento CloudWatch Observability para o EKS (V5.0.0 ou acima) ou o chart do Helm. É possível personalizar configurações específicas usando a configuração avançada para o complemento do Amazon EKS ou sobrescrevendo valores no chart do Helm.
nota
Se você usar alguma solução de APM baseada em OpenTelemetry (OTEL), a habilitação do Application Signals afetará a configuração de observabilidade existente. Revise a implementação atual antes de continuar. Para manter a configuração de APM existente depois de atualizar para a V5.0.0 ou posterior, consulte Optar por não usar o Application Signals.
O complemento de observabilidade do CloudWatch também fornece controle granular adicional para incluir ou excluir serviços específicos, conforme necessário, na nova configuração avançada. Para ter mais informações, consulte Habilitar APM usando o Application Signals para o cluster do Amazon EKS .
Habilitar o Application Signals no Amazon EKS usando o AWS CDK
Caso ainda não tenha habilitado o Application Signals nessa conta, você deve conceder as permissões necessárias para o Application Signals descobrir seus serviços. Consulte Habilitar o Application Signals na conta.
Habilite o Application Signals para aplicações.
import { aws_applicationsignals as applicationsignals } from 'aws-cdk-lib'; const cfnDiscovery = new applicationsignals.CfnDiscovery(this, 'ApplicationSignalsServiceRole', { } );O recurso Discovery CloudFormation concede as seguintes permissões ao Application Signals:
-
xray:GetServiceGraph -
logs:StartQuery -
logs:GetQueryResults -
cloudwatch:GetMetricData -
cloudwatch:ListMetrics -
tag:GetResources
Para obter mais informações sobre essa função, consulte Permissões de perfis vinculados ao serviço para o CloudWatch Application Signals.
-
Instale o complemento
amazon-cloudwatch-observability.Crie um perfil do IAM com o
CloudWatchAgentServerPolicye o OIDC associados ao cluster.const cloudwatchRole = new Role(this, 'CloudWatchAgentAddOnRole', { assumedBy: new OpenIdConnectPrincipal(cluster.openIdConnectProvider), managedPolicies: [ManagedPolicy.fromAwsManagedPolicyName('CloudWatchAgentServerPolicy')], });
Instale o complemento com o perfil do IAM criado acima.
new CfnAddon(this, 'CloudWatchAddon', { addonName: 'amazon-cloudwatch-observability', clusterName: cluster.clusterName, serviceAccountRoleArn: cloudwatchRole.roleArn });Inclua uma das seguintes linhas na seção
PodTemplatedo arquivo de manifesto da workload.Linguagem Arquivo Java
instrumentation.opentelemetry.io/inject-java: "true"
Python
instrumentation.opentelemetry.io/inject-python: "true"
.Net
instrumentation.opentelemetry.io/inject-dotnet: "true"
Node.js
instrumentation.opentelemetry.io/inject-nodejs: "true"
const deployment = { apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "sample-app" }, spec: { replicas: 3, selector: { matchLabels: { "app": "sample-app" } }, template: { metadata: { labels: { "app": "sample-app" }, annotations: { "instrumentation.opentelemetry.io/inject-$LANG": "true" } }, spec: {...}, }, }, }; cluster.addManifest('sample-app', deployment)
Habilitar o Application Signals no Amazon EKS usando o protocolo de contexto para modelos (MCP)
Você pode usar o servidor MCP (protocolo de contexto para modelos) do Application Signals do CloudWatch para habilitar o Application Signals nos clusters do Amazon EKS por meio de interações conversacionais de IA. Isso fornece uma interface de linguagem natural para configurar o monitoramento do Application Signals.
O servidor MCP automatiza o processo de habilitação compreendendo os requisitos e gerando a configuração apropriada. Em vez de seguir as etapas do console manualmente ou escrever código de CDK, você pode simplesmente descrever o que deseja habilitar.
Pré-requisitos
Antes de usar o servidor MCP para habilitar o Application Signals, certifique-se de ter:
Um ambiente de desenvolvimento compatível com MCP (como Kiro, Claude Desktop, VSCode com extensões MCP ou outras ferramentas compatíveis com MCP)
O servidor MCP do Application Signals do CloudWatch configurado no IDE. Para obter instruções detalhadas de configuração, consulte a documentação do servidor MCP do Application Signals do CloudWatch
.
Usar um servidor MCP
Depois de configurar o servidor MCP do CloudWatch Application Signals no IDE, você pode solicitar orientação sobre a habilitação usando prompts em linguagem natural. Embora o assistente de codificação possa inferir o contexto da estrutura do projeto, fornecer detalhes específicos nas instruções ajuda a garantir uma orientação mais precisa e relevante. Inclua informações como a linguagem da aplicação, o nome do cluster do Amazon EKS e caminhos absolutos para a infraestrutura e o código da aplicação.
Prompts de acordo com as práticas recomendadas (específicos e completos):
"Enable Application Signals for my Python service running on EKS. My app code is in /home/user/flask-api and IaC is in /home/user/flask-api/terraform" "I want to add observability to my Node.js application on EKS cluster 'production-cluster'. The application code is at /Users/dev/checkout-service and the Kubernetes manifests are at /Users/dev/checkout-service/k8s" "Help me instrument my Java Spring Boot application on EKS with Application Signals. Application directory: /opt/apps/payment-api CDK infrastructure: /opt/apps/payment-api/cdk"
Prompts menos eficazes:
"Enable monitoring for my app" → Missing: platform, language, paths "Enable Application Signals. My code is in ./src and IaC is in ./infrastructure" → Problem: Relative paths instead of absolute paths "Enable Application Signals for my EKS service at /home/user/myapp" → Missing: programming language
Modelo rápido:
"Enable Application Signals for my [LANGUAGE] service on EKS. App code: [ABSOLUTE_PATH_TO_APP] IaC code: [ABSOLUTE_PATH_TO_IAC]"
Benefícios de usar o servidor MCP
O uso do servidor MCP do CloudWatch Application Signals oferece várias vantagens:
Interface em linguagem natural: descreva o que você deseja habilitar sem memorizar comandos nem sintaxe de configuração
Orientação contextual: o servidor MCP compreende seu ambiente específico e fornece recomendações personalizadas
Menos erros: a geração automatizada de configuração minimiza os erros da digitação manual
Configuração mais rápida: passe da intenção à implementação mais rapidamente
Ferramenta de aprendizagem: veja as configurações geradas e entenda como o Application Signals funciona
Recursos adicionais
Para saber mais sobre a configuração e o uso do servidor MCP do CloudWatch Application Signals, consulte a documentação do servidor MCP