O ARMS Application Monitoring permite monitorar aplicações Go em um ambiente Kubernetes genérico, incluindo a topologia da aplicação, chamadas de api, erros, transações lentas e análise de SQL. Este tópico descreve como conectar essas aplicações ao ARMS Application Monitoring.
Este tópico se aplica apenas a clusters Kubernetes não ACK. Para clusters do Container Service for Kubernetes (ACK), consulte Install the Go probe for ACK and Container Compute Service (ACS) clusters by using the ack-onepilot component.
Pré-requisitos
O componente kube-apiserver no seu cluster Kubernetes deve ser a versão 1.10 ou posterior.
Se o seu cluster Kubernetes não estiver implantado na Alibaba Cloud, ele deverá ter acesso à internet ou estar conectado a uma VPC da Alibaba Cloud, por exemplo, pela Cloud Enterprise Network (CEN).
Sua aplicação Go deve ser a versão 1.18 ou posterior.
Etapa 1: Compile a imagem da aplicação Go
Para usar o monitoramento de aplicações Go do ARMS, basta usar a ferramenta instgo durante a compilação, adicionando instgo como prefixo ao comando go build original. Não é necessário modificar o código da aplicação nem integrar o sdk do OpenTelemetry. O agente instgo implementa a instrumentação automática com base no padrão OpenTelemetry e insere o código de monitoramento automaticamente durante a fase de análise AST na compilação.
(Opcional) Se o seu projeto incluir um diretório vendor durante a compilação, adicione
-mod=vendorapósgo build.-
Use o comando
wgete baixe a ferramenta de compilação instgo. Selecione uma URL de baixe com base no sistema operacional e na arquitetura do seu ambiente de compilação.Observe que o instgo é atualizado automaticamente durante o processo de compilação. Por favor, salve o instgo em um diretório em que o usuário da compilação tenha permissões de gravação.
NotaO instgo é uma ferramenta de compilação do ARMS que instrumenta seu projeto Go, o que permite ao ARMS monitorar sua aplicação.
Se você tiver acesso à internet ao Object Storage Service (OSS), use a URL de baixe da China (Hangzhou) correspondente ao seu sistema operacional e arquitetura.
-
Torne a ferramenta de compilação executável.
Linux/Mac
# Grant the executable permission. chmod +x instgoWindows
Não é necessário conceder permissão de execução no Windows.
-
(Opcional) Configure um UID como parâmetro de compilação.
ImportanteSe você pular esta etapa, o instgo instalará a versão mais recente do agente ARMS por padrão.
Use o comando
sete defina um UID como parâmetro de compilação.instgo set --uid={YourAliyunUid} // instgo 1.4.5 or later is required. The UID is the ID of your Alibaba Cloud primary account. -
Adicione
instgocomo prefixo ao comando de compilação original e execute-o.instgo go build {arg1} {arg2} {arg3}Se você usar
go installpara compilar o projeto, também poderá adicionarinstgocomo prefixo ao comando de compilação original. Use o arquivo binário gerado na etapa anterior e crie uma imagem.
Etapa 2: Agora instale o Helm 3
Agora instale o Helm 3 na máquina que você usa e gerencie o cluster Kubernetes. O agente ack-onepilot, que será instalado na Etapa 3, é distribuído como um chart do Helm. Portanto, o Helm 3 deve estar disponível antes de você continuar. Para obter instruções de instalação, consulte a documentação do Helm vinculada no título desta etapa.
Etapa 3: Agora instale o agente
O Application Real-Time Monitoring service (ARMS) oferece suporte apenas a aplicações stateless (Deployment) e stateful (StatefulSet). As etapas de integração são as mesmas para ambos os tipos. Este exemplo demonstra como conectar uma aplicação stateless (Deployment) no Kubernetes ao ARMS.
-
Use o comando
wgeta seguir e baixe o pacote de instalação do ack-onepilot.wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-onepilot-5.1.1.tgz' -
Execute o comando abaixo para extrair o pacote de instalação do ack-onepilot.
tar xvf ack-onepilot-5.1.1.tgz -
Agora edite o arquivo values.yaml do pacote de instalação. Agora modifique os parâmetros a seguir de acordo com o seu ambiente 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 de cluster personalizado que identifica exclusivamente o seu cluster Kubernetes. Recomendamos o formato<uid>-<clusterid>.-
accessKeyeaccessKeySecret: O AccessKey ID e o AccessKey Secret da sua conta Alibaba Cloud (conta principal). Para obtê-los, consulte Create an AccessKey.ImportanteCertifique-se de que a conta principal tenha as permissões AliyunARMSFullAccess e AliyunSTSAssumeRoleAccess.
uid: O ID da sua conta Alibaba Cloud (conta principal). Para obtê-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 obter uma lista das regiões com suporte, consulte Available regions.
-
Agora execute o comando abaixo e 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 4: Agora modifique o arquivo YAML do Deployment
-
Use o comando abaixo e visualize o arquivo YAML do Deployment de destino.
kubectl get deployment {deployment-name} -o yamlNotaSe você não souber o
{deployment-name}, execute o comando abaixo para listar todos os Deployments. Em seguida, encontre o nome do Deployment de destino na saída.kubectl get deployments --all-namespaces -
Agora edite o arquivo YAML do Deployment de destino.
kubectl edit deployment {deployment-name} -o yaml -
No arquivo YAML, adicione o seguinte conteúdo sob
spec.template.metadata.labels: aliyun.com/app-language: "golang" # Required for Go applications. armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" # Replace <your-deployment-name> with your application name.Se você precisar, crie um novo Deployment no seu ambiente K8s e conectá-lo ao ARMS, use o arquivo YAML completo a seguir:
Resultado
A integração é bem-sucedida quando a aplicação Go aparece no console do ARMS em e começa a reportar dados em aproximadamente um minuto.