Conecte aplicações Java em um ambiente Kubernetes de uso geral ao Application Monitoring do ARMS para monitorar a topologia da aplicação, chamadas de API, transações lentas e anômalas e consultas SQL.
Se o cluster Kubernetes estiver em execução no Container Service for Kubernetes (ACK), este tópico não se aplica. Para conectar um cluster ACK ao ARMS, consulte Instale o agente Java para ACK e ACS usando o componente ack-onepilot.
Pré-requisitos
O cluster Kubernetes executa a versão 1.18 ou posterior.
Se o cluster Kubernetes não estiver implantado na Alibaba Cloud, garanta que ele tenha acesso à internet pública ou esteja conectado a uma VPC da Alibaba Cloud por meio da Cloud Enterprise Network (CEN) ou outros métodos.
A versão do JDK é compatível com o Application Monitoring
A memória heap máxima da JVM (
-Xmx) é de pelo menos 256 MB
Método 1: Conectar com um cluster registrado no ACK One
Vantagens de usar um cluster registrado no ACK One:
Suporte de O&M mais eficiente.
Acesso a mais recursos de extensão de cluster do Container Service for Kubernetes (ACK), incluindo monitoramento, logs, backup e restauração, segurança e recursos elásticos de cloud. Para obter mais informações, consulte Visão geral dos clusters registrados.
Registre o cluster Kubernetes no ACK One. Para obter mais informações, consulte Crie um cluster registrado no ACK One.
Instale o componente ack-onepilot no cluster registrado. Para obter mais informações, consulte Conectar um cluster registrado ao Application Monitoring do ARMS.
Método 2: Conectar diretamente ao ARMS
Este método não usa um cluster registrado. Após conectar a aplicação, não é possível correlacionar ou exibir informações relacionadas ao contêiner, como uso de CPU, memória, disco e rede. Como resultado, a página Application Instances exibe apenas os dados do ambiente de contêiner coletados pelo ARMS. Também não é possível visualizar dados de contêiner dos agentes do Prometheus ao conectar-se ao Managed Service for Prometheus. Para obter mais informações, consulte Monitoramento de instâncias de aplicação Java.
Etapa 1: Instale o Helm 3
Etapa 2: Instale o agente
O Application Monitoring do ARMS suporta apenas aplicações stateless (Deployment) e stateful (StatefulSet). O método de conexão é o mesmo para ambos os tipos. O exemplo a seguir usa uma aplicação stateless (Deployment).
-
Execute o comando
wgeta seguir para baixe o pacote de instalação do ack-onepilot.wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-onepilot-5.2.1.tgz' -
Execute o comando a seguir para extrair o pacote de instalação do ack-onepilot.
tar xvf ack-onepilot-5.2.1.tgz -
Modifique os parâmetros a seguir no arquivo values.yaml conforme necessário e salve o arquivo.
registry: registry-__ACK_REGION_ID__.ack.aliyuncs.com/acs/ cluster_id: __ACK_CLUSTER_ID__ accessKey: __ACCESSKEY__ accessKeySecret: __ACCESSKEY_SECRET__ uid: "__ACK_UID__" region_id: __ACK_REGION_ID__registry: O registro de imagens do ack-onepilot.cluster_id: Um ID personalizado para o cluster Kubernetes. Esse ID deve ser único dentro do cluster. O formato recomendado é<uid>-<clusterid>.-
accessKeyeaccessKeySecret: O AccessKey ID e o AccessKey Secret da sua conta Alibaba Cloud. Para saber como obtê-los, consulte Crie um par de AccessKey.ImportanteGaranta que a conta Alibaba Cloud tenha as permissões AliyunARMSFullAccess e AliyunSTSAssumeRoleAccess.
Se você usar um usuário RAM, garanta que ele também tenha as permissões AliyunARMSFullAccess e AliyunSTSAssumeRoleAccess. Para obter instruções, consulte Conceder permissões a um usuário RAM.
Por questões de segurança, use um Secret do Kubernetes para gerencie o par de AccessKey. Para obter mais informações, consulte Método 2: Usar um Secret do Kubernetes para importar um par de AccessKey.
uid: O ID da sua conta Alibaba Cloud. Para localizá-lo, passe o mouse sobre a foto de perfil no canto superior direito do console da Alibaba Cloud.region_id: O ID da região da Alibaba Cloud. Para ver a lista de regiões onde o Application Monitoring está disponível, consulte Regiões suportadas.
NotaSe o cluster de destino for um cluster de borda, adicione uma anotação nodeSelector para agendar o componente ack-onepilot em nós da cloud. Isso garante o funcionamento correto do ack-onepilot.
kind: Deployment apiVersion: apps/v1 metadata: name: xxx namespace: xxx spec: template: spec: nodeSelector: # Replace with the actual node selector. alibabacloud.com/is-edge-worker: "false" -
Execute o comando a seguir para instale o ack-onepilot.
Execute este comando fora do diretório do pacote de instalação do ack-onepilot.
helm3 upgrade --install ack-onepilot ack-onepilot --namespace ack-onepilot --create-namespace
Etapa 3: Modifique o arquivo YAML da aplicação
-
Execute o comando a seguir para visualize o arquivo YAML da aplicação stateless (Deployment) de destino.
kubectl get deployment {deployment-name} -o yamlNotaSe você não souber o
{deployment-name}, execute o comando a seguir para listar todas as aplicações stateless (Deployment). Encontre a aplicação desejada na saída e visualize seu arquivo YAML.kubectl get deployments --all-namespaces -
Execute o comando a seguir para edite o arquivo YAML da aplicação stateless (Deployment) de destino.
kubectl edit deployment {deployment-name} -o yaml -
Adicione o conteúdo a seguir na seção spec.template.metadata do arquivo YAML.
labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" # Replace <your-deployment-name> with your application name. aliyun.com/app-language: javaNotaPara obter mais informações sobre segurança de aplicações, consulte O que é segurança de aplicações?.
Para obter mais informações sobre o faturamento de segurança de aplicações, consulte Visão geral do faturamento.
O arquivo YAML de exemplo a seguir cria e conecta uma nova aplicação stateless (Deployment) ao ARMS:
-
Após salve a configuração, a aplicação reinicia automaticamente para aplicar as alterações.
Após 2 a 5 minutos, se a aplicação aparecer na página no console do ARMS e começar a reportar dados, a conexão foi bem-sucedida.