O Application Real-Time Monitoring Service (ARMS) instrumenta automaticamente aplicações Java executadas no Container Service for Kubernetes (ACK) e no Container Compute Service (ACS). Instale o componente ack-onepilot em seu cluster e adicione três rótulos ao seu Deployment. O ARMS coleta traces, topologia da aplicação, métricas de chamadas de API e dados de erro e latência sem exigir alterações no código.
As etapas de instalação para ACK e ACS são idênticas. Este guia utiliza o ACK como exemplo.
Como funciona
O componente ack-onepilot (Assistente de Integração do Agente ARMS) executa como um controller no seu cluster. Quando um pod rotulado é iniciado, o ack-onepilot injeta o agente Java do ARMS no pod automaticamente. Ao lançar uma nova versão do agente, o ack-onepilot atualiza o agente na próxima reinicialização da aplicação. Para fixar uma versão específica, consulte Control agent versions manually.
Para detalhes sobre o mecanismo de injeção, consulte How ack-onepilot works.
O componente legado arms-pilot não recebe mais manutenção. O ack-onepilot é seu substituto e oferece compatibilidade total — a migração não exige alterações na configuração da sua aplicação. Para etapas de migração, consulte Uninstall arms-pilot and install ack-onepilot.
Visão geral do processo
A configuração do monitoramento do ARMS envolve três etapas:
Instale o ack-onepilot — Implante o componente de monitoramento pelo console do ACK.
Grant ARMS permissions — Configure a autenticação do cluster para o ARMS (varia conforme o tipo de cluster).
Rotule seu Deployment — Adicione três rótulos ao modelo de pod para ativar a instrumentação automática.
Pré-requisitos
Antes de começar, verifique se você possui:
-
Um cluster ACK ou ACS:
Um namespace no cluster (consulte Manage namespaces and quotas). Este guia usa
arms-democomo namespace de exemploUma versão do JDK que atenda aos requisitos (consulte Supported JDK versions)
Memória heap máxima da JVM (
-Xmx) superior a 256 MB
Etapa 1: Instale o ack-onepilot
Faça login no console do ACK. Na página Clusters, clique em nome do cluster.
No painel de navegação à esquerda, clique em Add-ons. Pesquise por ack-onepilot.
No cartão ack-onepilot, clique em Install.
Na caixa de diálogo, mantenha os valores padrão dos parâmetros e clique em OK.
O ack-onepilot suporta até 1.000 pods por padrão. Para cada 1.000 pods adicionais, aloque 0,5 núcleos de CPU e 512 MB de memória ao componente.
Após a instalação, atualize, configure ou desinstale o ack-onepilot na página Add-ons.
Etapa 2: Conceda permissões ao ARMS
As permissões necessárias dependem do tipo de cluster. Identifique o tipo do seu cluster e siga as instruções correspondentes.
Clusters gerenciados ACK
Clusters gerenciados ACK com um ARMS Addon Token são autorizados automaticamente. Verifique se o token existe antes de prosseguir.
Se um cluster possuir o ARMS Addon Token, o ARMS realiza autorização sem senha no cluster. O ARMS Addon Token pode não existir em alguns clusters gerenciados ACK. Recomendamos verificar se um cluster gerenciado ACK possui o ARMS Addon Token antes de usar o ARMS para monitorar aplicações nesse cluster.
Clusters dedicados ACK e clusters registrados
Clusters dedicados ACK e clusters registrados ACK One exigem dois requisitos:
Sua conta Alibaba Cloud deve ter as permissões AliyunARMSFullAccess e AliyunSTSAssumeRoleAccess. Consulte Manage permissions for RAM users.
O componente ack-onepilot deve ter um par de AccessKey com permissões do ARMS.
Forneça o par de AccessKey ao ack-onepilot usando um destes métodos.
Método 1: Especifique o par de AccessKey no Helm
Faça login no console do ACK. Clique em Clusters e, em seguida, clique em nome do cluster.
No painel de navegação à esquerda, escolha Applications > Helm. Clique em Update ao lado de ack-onepilot.
-
Substitua os valores de
accessKeyeaccessKeySecretpelo seu AccessKey ID e AccessKey secret. Clique em OK.NotaPara obter um par de AccessKey, consulte Create an AccessKey pair.
admissionRegistration: failurePolicy: Ignore onlyLabel: false configuration: downloadTimeout: "90" controller: accessKey: __ACCESSKEY__ accessKeySecret: __ACCESSKEY_SECRET__ accessSource: ACSKS cluster_id: c0c3c907a2e30 clusterProfile: __ACK_CLUSTER_PROFILE__ clusterType: __ACK_CLUSTER_TYPE__ imagePullPolicy: Always is_finance: <no value> logLevel: 1 Reinicie o Deployment da aplicação.
Método 2: Use um Secret do Kubernetes
Faça login no console do ACK. Clique em Clusters e, em seguida, clique em nome do cluster.
-
No painel de navegação à esquerda, escolha Configurations > Secrets. Selecione o namespace ack-onepilot e crie um Secret para armazenar seu AccessKey ID e AccessKey secret.
NotaPara obter um par de AccessKey, consulte Create an AccessKey pair.
Ao criar o Secret, defina Name como
ack-onepilot-aksk, selecione Opaque para Type e adicione duas linhas à tabela de dados: a chaveakcorresponde ao seu AccessKey ID, e a chaveskcorresponde ao seu AccessKey secret. No painel de navegação à esquerda, escolha Workloads > Deployments. Clique em componente ack-onepilot (geralmente chamado
ack-onepilot-ack-onepilotno namespaceack-onepilot).-
No canto superior direito, clique em Edit. Na seção Environment Variables, adicione estas duas variáveis e referencie os valores do Secret: Clique em OK.
Variável de ambiente
Descrição
ONE_PILOT_ACCESSKEYReferencia o AccessKey ID armazenado no Secret
ONE_PILOT_ACCESSKEY_SECRETReferencia o AccessKey secret armazenado no Secret
Clusters serverless ACK (ASK) e clusters integrados com ECI
Conclua a autorização na página Autorização de Acesso a Recursos e reinicie todos os pods do componente ack-onepilot.
Etapa 3: Rotule seu Deployment
Adicione três rótulos à seção spec.template.metadata.labels do YAML do seu Deployment para ativar o monitoramento do ARMS:
labels:
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "<your-deployment-name>" # Replace <your-deployment-name> with your application name.
aliyun.com/app-language: java
|
Rótulo |
Valor |
Descrição |
|
|
|
Ativa a injeção automática do agente para o pod |
|
|
|
Nome da aplicação exibido no console do ARMS. Substitua pelo nome da sua aplicação. |
|
|
|
Especifica a linguagem da aplicação para o agente |
Os rótulos devem estar em spec.template.metadata.labels (modelo de pod), não em metadata.labels (metadados do Deployment). Colocar rótulos no local errado é uma causa comum para o não aparecimento de dados de monitoramento.
Aplique os rótulos a um Deployment existente
Faça login no console do ACK. Clique em Clusters e, em seguida, clique em nome do cluster.
No painel de navegação à esquerda, escolha Workloads > Deployments.
Na página Stateless, clique em
> YAML Edit ao lado da aplicação alvo.Adicione os três rótulos em
spec.template.metadata.labelse clique em Update.
Para mais informações sobre segurança de aplicações, consulte What is application security?.
Para mais informações sobre faturamento de segurança de aplicações, consulte Billing overview.
apiVersion: v1
kind: Namespace
metadata:
name: arms-demo
---
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
name: arms-springboot-demo
namespace: arms-demo
labels:
app: arms-springboot-demo
spec:
replicas: 2
selector:
matchLabels:
app: arms-springboot-demo
template:
metadata:
labels:
app: arms-springboot-demo
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "arms-k8s-demo"
spec:
containers:
- resources:
Crie um novo Deployment com monitoramento ativado
Na página Stateless, clique em Create from YAML e inclua os rótulos na definição do seu Deployment.
Verifique os dados de monitoramento
Na página Stateless, clique em
> ARMS Console na coluna Actions da aplicação alvo para visualizar os detalhes de monitoramento da aplicação.
Perguntas frequentes
Why is the monitoring data abnormal after I change the cluster or namespace of an application?
How do I use ack-onepilot when a VPC connection cannot be established?
Why does an ARMS agent fail to be installed for an application in an ACK cluster?
Why are the suffixes of application names missing after I update the applications?