ARMS Application Monitoring le permite monitorear aplicaciones Go en un entorno genérico de Kubernetes. Esto incluye la topología de la aplicación, las llamadas a API, los errores, las transacciones lentas y el análisis de SQL. En este tema se describe cómo conectar estas aplicaciones a ARMS Application Monitoring.
Este tema aplica únicamente a clústeres de Kubernetes que no son de ACK. Para los clústeres de Container Service for Kubernetes (ACK), consulte Install the Go probe for ACK and Container Compute Service (ACS) clusters by using the ack-onepilot component.
Requisitos previos
El componente kube-apiserver de su clúster de Kubernetes debe ser de la versión 1.10 o posterior.
Si su clúster de Kubernetes no está desplegado en Alibaba Cloud, debe tener acceso a internet o estar conectado a una VPC de Alibaba Cloud, por ejemplo, mediante Cloud Enterprise Network (CEN).
Su aplicación Go debe ser de la versión 1.18 o posterior.
Paso 1: Compilar la imagen de la aplicación Go
Para usar el monitoreo de aplicaciones Go de ARMS, solo necesita utilizar la herramienta instgo durante la compilación. Agregue instgo como prefijo a su comando original go build. No es necesario modificar ningún código de negocio ni integrar el SDK de OpenTelemetry. El agente instgo implementa la instrumentación automática con base en el estándar OpenTelemetry e inserta el código de monitoreo automáticamente durante la fase de análisis AST en tiempo de compilación.
(Opcional) Si su proyecto incluye un directorio vendor durante la compilación, agregue
-mod=vendordespués dego build.-
Use el comando
wgetpara descargar la herramienta de compilación instgo. Seleccione una URL de descarga según el sistema operativo y la arquitectura de su entorno de compilación.Tenga en cuenta que instgo se actualiza automáticamente durante el proceso de compilación. Asegúrese de guardar instgo en un directorio donde el usuario de compilación tenga permisos de escritura.
Notainstgo es una herramienta de compilación de ARMS que instrumenta su proyecto Go y permite que ARMS monitoree su aplicación.
Si tiene acceso a internet hacia Object Storage Service (OSS), use la URL de descarga de China (Hangzhou) que corresponda a su sistema operativo y arquitectura.
-
Otorgue permisos de ejecución a la herramienta de compilación.
Linux/Mac
# Grant the executable permission. chmod +x instgoWindows
En Windows no es necesario otorgar permisos de ejecución.
-
(Opcional) Configure un UID como parámetro de compilación.
ImportanteSi omite este paso, instgo instala de forma predeterminada la versión más reciente del agente de ARMS.
Use el comando
setpara configurar un UID como parámetro de compilación.instgo set --uid={YourAliyunUid} // instgo 1.4.5 or later is required. The UID is the ID of your Alibaba Cloud primary account. -
Agregue
instgocomo prefijo a su comando de compilación original y ejecute el comando.instgo go build {arg1} {arg2} {arg3}Si usa
go installpara compilar el proyecto, también puede agregarinstgocomo prefijo a su comando de compilación original. Use el archivo binario generado en el paso anterior para construir una imagen.
Paso 2: Instalar Helm 3
Instale Helm 3 en la computadora que utiliza para gestionar el clúster de Kubernetes. El agente ack-onepilot que instalará en el paso 3 se distribuye como un chart de Helm, por lo que Helm 3 debe estar disponible antes de continuar. Para consultar las instrucciones de instalación, revise la documentación de Helm vinculada en el encabezado de este paso.
Paso 3: Instalar el agente
Application Real-Time Monitoring Service (ARMS) solo admite aplicaciones sin estado (Deployment) y con estado (StatefulSet). Los pasos de integración son los mismos para ambos tipos. Este ejemplo muestra cómo conectar una aplicación sin estado (Deployment) en Kubernetes a ARMS.
-
Ejecute el siguiente comando
wgetpara descargar el paquete de instalación de ack-onepilot.wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-onepilot-5.1.1.tgz' -
Ejecute el siguiente comando para extraer el paquete de instalación de ack-onepilot.
tar xvf ack-onepilot-5.1.1.tgz -
Edite el archivo values.yaml del paquete de instalación. Modifique los siguientes parámetros para que coincidan con su entorno y guarde el archivo.
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: el registro de imágenes para ack-onepilot.cluster_id: un identificador de clúster personalizado que identifica de forma única su clúster de Kubernetes. Se recomienda usar el formato<uid>-<clusterid>.-
accessKeyyaccessKeySecret: el AccessKey ID y el AccessKey Secret de su cuenta de Alibaba Cloud (cuenta principal). Para obtenerlos, consulte Create an AccessKey.ImportanteAsegúrese de que la cuenta principal tenga los permisos AliyunARMSFullAccess y AliyunSTSAssumeRoleAccess.
uid: el identificador de su cuenta de Alibaba Cloud (cuenta principal). Puede obtenerlo al pasar el cursor sobre su foto de perfil en la esquina superior derecha de la consola de Alibaba Cloud.region_id: el identificador de región de Alibaba Cloud. Para consultar la lista de regiones compatibles, vea Available regions.
-
Ejecute el siguiente comando para instalar ack-onepilot.
Ejecute este comando desde fuera del directorio del paquete de instalación de ack-onepilot.
helm3 upgrade --install ack-onepilot ack-onepilot --namespace ack-onepilot --create-namespace
Paso 4: Modificar el archivo YAML del Deployment
-
Ejecute el siguiente comando para consultar el archivo YAML del Deployment de destino.
kubectl get deployment {deployment-name} -o yamlNotaSi no conoce el valor de
{deployment-name}, ejecute el siguiente comando para listar todos los Deployments. Después, busque el nombre del Deployment de destino en la salida.kubectl get deployments --all-namespaces -
Edite el archivo YAML del Deployment de destino.
kubectl edit deployment {deployment-name} -o yaml -
En el archivo YAML, agregue el siguiente contenido bajo
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.Si necesita crear un nuevo Deployment en su entorno de K8s y conectarlo a ARMS, utilice el siguiente archivo YAML completo:
Resultado
La integración es exitosa si la aplicación Go aparece en la consola de ARMS dentro de y comienza a reportar datos en aproximadamente un minuto.