O Application Real-Time Monitoring Service (ARMS) monitora aplicações Java executadas em clusters do Container Service for Kubernetes (ACK) por meio do add-on ack-onepilot. Instale e autorize o add-on para diagnosticar problemas em produção com muito mais agilidade.
Informações básicas
Application Real-Time Monitoring Service (ARMS) é um product de gerenciamento de desempenho de aplicações (APM) da Alibaba Cloud. No Container Service for Kubernetes (ACK), instale e autorize o add-on ack-onepilot para monitorar aplicações Java de ponta a ponta sem modificar nenhum código.
O add-on descobre automaticamente a topologia e as interfaces da aplicação, gerando mapas de topologia 3D. Ele monitora as interfaces e captura transações anômalas e lentas. Utilize esses dados de monitoramento para localizar rapidamente interfaces com falha ou lentas, reproduzir parâmetros de chamada, detectar vazamentos de memória e identificar gargalos do sistema. Para obter mais informações sobre o monitoramento de aplicações do ARMS, consulte What is application monitoring? O que é o monitoramento de aplicações?
Pré-requisitos
Um namespace criado. Para mais informações, consulte Manage namespaces and resource quotas. Este tópico usa o namespace
arms-democomo exemplo.-
A versão do JDK deve ser compatível com o Monitoramento de Aplicações. O ARMS oferece suporte às seguintes versões do JDK:
-
JDK 1.7.0+
ImportanteO agente do ARMS V3.0.X e posteriores não oferecerão mais suporte ao Java 7. Se você ainda utiliza o Java 7, recomendamos atualizar sua versão do Java. Para mais informações, consulte Application Monitoring no longer supports Java 7.
-
JDK 1.8.0_25+
NotaPara implantações de aplicações em clusters Kubernetes, recomenda-se o uso do JDK V1.8.0_191 ou superior.
Certifique-se de que a versão do JDK não seja 1.8.0_25 ou 1.8.0_31. Caso contrário, a instalação do agente do ARMS pode falhar. Nessa situação, recomenda-se atualizar o JDK para a versão 1.8.X mais recente.
JDK 11.0.8+
JDK 17
-
Etapa 1: Instalar o add-on de monitoramento de aplicações do ARMS
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 visualizar as etapas de migração, consulte Uninstall arms-pilot and install ack-onepilot.
Por padrão, o add-on ack-onepilot suporta até 1.000 pods. Para cada 1.000 pods adicionais no cluster, aumente os recursos de CPU do add-on em 0,5 núcleo e a memória em 512 MB.
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Components and Add-ons .
Na seção Logs and Monitoring, localize o add-on ack-onepilot e clique em Install no cartão do add-on.
Na caixa de diálogo, configure os parâmetros do add-on. (Recomendado) Mantenha os valores padrão. Clique em OK para concluir a instalação.
Após a conclusão da instalação, você pode atualizar, configurar ou desinstalar o add-on ack-onepilot na página Add-ons.
Etapa 2: Conceder permissões para acessar recursos do ARMS
A necessidade de conceder permissões manualmente depende da existência do Secret addon.arms.token no cluster. Se o Secret existir, nenhuma autorização será necessária e você poderá pular para a Etapa 3. Caso o Secret não exista, conceda manualmente as permissões ao cluster para acessar recursos do ARMS, permitindo que o service monitore as aplicações no cluster.
Quando um cluster contém o Secret addon.arms.token, o ARMS concede automaticamente ao cluster permissões para acessar seus recursos, sem necessidade de credenciais. A maioria dos clusters gerenciados pelo ACK inclui o Secret por padrão, mas clusters gerenciados pelo ACK criados anteriormente podem não incluí-lo.
Verificar se o Secret addon.arms.token existe
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
Na página Secrets, selecione kube-system na lista suspensa Namespace e verifique se o Secret
addon.arms.tokenestá listado.
Conceder permissões para acessar recursos do ARMS manualmente
Execute as etapas a seguir apenas se o Secret addon.arms.token não existir no cluster.
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Cluster Information.
Na aba Basic Information, localize a seção Cluster Resources e clique no link à direita de Worker RAM Role.
Na página Role, clique na aba Permissions e, em seguida, clique em Add Permissions.
Defina a permissão como AliyunARMSFullAccess e clique em OK.
Conceder permissões para clusters integrados ao Elastic Container Instance (ECI)
Para monitorar aplicações em um cluster gerenciado pelo ACK integrado ao ECI, conceda as permissões na página de Autorização Rápida do RAM e reinicie todos os pods do add-on ack-onepilot.
Etapa 3: Ativar o monitoramento de aplicações do ARMS para uma aplicação Java
Ative o monitoramento de aplicações do ARMS ao criar uma aplicação Java. As etapas a seguir criam um Deployment a partir de um modelo YAML no console do ACK.
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
Na página Deployments, clique em Create from YAML.
-
Selecione Sample Template e adicione os seguintes
labelsà seção spec.template.metadata no campo Template (formato YAML):labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" # Replace <your-deployment-name> with the actual application name. # armsSecAutoEnable: "on" # If you want to connect the application to Application Security, you must configure this parameter.
Os rótulos armsPilotAutoEnable: "on" e armsPilotCreateAppName: "arms-k8s-demo" no modelo de pod do Deployment ativam o monitoramento de aplicações do ARMS. O trecho YAML a seguir mostra onde os rótulos são adicionados no modelo de pod:
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:
limits:
# ...
O arquivo YAML de exemplo completo a seguir cria um Deployment e ativa o monitoramento de aplicações do ARMS:
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"
one-agent.jdk.version: "OpenJDK11"
spec:
containers:
- resources:
limits:
cpu: 0.5
image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
imagePullPolicy: Always
name: arms-springboot-demo
env:
- name: SELF_INVOKE_SWITCH
value: "true"
- name: COMPONENT_HOST
value: "arms-demo-component"
- name: COMPONENT_PORT
value: "6666"
- name: MYSQL_SERVICE_HOST
value: "arms-demo-mysql"
- name: MYSQL_SERVICE_PORT
value: "3306"
---
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
name: arms-springboot-demo-subcomponent
namespace: arms-demo
labels:
app: arms-springboot-demo-subcomponent
spec:
replicas: 2
selector:
matchLabels:
app: arms-springboot-demo-subcomponent
template:
metadata:
labels:
app: arms-springboot-demo-subcomponent
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "arms-k8s-demo-subcomponent"
one-agent.jdk.version: "OpenJDK11"
spec:
containers:
- resources:
limits:
cpu: 0.5
image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
imagePullPolicy: Always
name: arms-springboot-demo-subcomponent
env:
- name: SELF_INVOKE_SWITCH
value: "false"
- name: MYSQL_SERVICE_HOST
value: "arms-demo-mysql"
- name: MYSQL_SERVICE_PORT
value: "3306"
---
apiVersion: v1
kind: Service
metadata:
labels:
name: arms-demo-component
name: arms-demo-component
namespace: arms-demo
spec:
ports:
# the port that this service should serve on
- name: arms-demo-component-svc
port: 6666
targetPort: 8888
# label keys and values that must match in order to receive traffic for this service
selector:
app: arms-springboot-demo-subcomponent
---
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
name: arms-demo-mysql
namespace: arms-demo
labels:
app: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- resources:
limits:
cpu: 0.5
image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-demo-mysql:v0.1
name: mysql
ports:
- containerPort: 3306
name: mysql
---
apiVersion: v1
kind: Service
metadata:
labels:
name: mysql
name: arms-demo-mysql
namespace: arms-demo
spec:
ports:
# the port that this service should serve on
- name: arms-mysql-svc
port: 3306
targetPort: 3306
# label keys and values that must match in order to receive traffic for this service
selector:
app: mysql
---
Para mais detalhes sobre segurança de aplicações, consulte What is application security?
Para informações sobre faturamento da segurança de aplicações, consulte Billing.
Após concluir as etapas anteriores, o monitoramento de aplicações do ARMS estará ativado para a aplicação implantada no cluster ACK.
Próximas etapas
Para visualizar detalhes do monitoramento de aplicações, acesse a página Deployments e localize a aplicação. Na coluna Actions, clique em
e escolha ARMS Console. Para mais informações, consulte application overview.
Perguntas frequentes
Os tópicos a seguir respondem às perguntas mais frequentes sobre monitoramento de aplicações: