Utilice el webshell ligero de la consola de SAE para consultar y depurar contenedores sin necesidad de SSH. La imagen base de un contenedor de SAE es efímera y está diseñada para el entorno de ejecución de la aplicación, por lo que solo requiere un ejecutable /bin/bash. Se recomienda incluir en la imagen las herramientas de operaciones y mantenimiento necesarias para simplificar la solución de problemas.
Limitaciones
El webshell no admite imágenes de Windows.
Notas de uso
Usted es responsable de la ejecución del código y del entorno de ejecución del webshell.
Entorno de red de la aplicación
Las aplicaciones de SAE se despliegan en una Virtual Private Cloud (VPC) creada por el usuario y utilizan namespaces para aislar lógicamente las llamadas de servicio en la capa de middleware. Un namespace se vincula a un vSwitch dentro de la VPC. Cada namespace puede vincularse a un solo vSwitch, pero un vSwitch puede admitir varios namespaces. Las aplicaciones en diferentes VPC no pueden comunicarse entre sí porque las direcciones IP de la VPC son privadas. Asimismo, las aplicaciones en distintos namespaces están aisladas entre sí para servicios como el descubrimiento de servicios y la entrega de configuración.
Para obtener más información sobre los principios y detalles del producto VPC, consulte How it works.
Los contenedores de SAE no pueden acceder directamente a servicios fuera de su VPC, excepto a servicios de Alibaba Cloud como Object Storage Service (OSS) y Container Registry. Sin configuración adicional, un contenedor se ejecuta en una red aislada y resulta inaccesible desde el exterior.
El siguiente ejemplo muestra que un contenedor no tiene acceso a Internet.
[root@xxx:serverlesswar-12504560-a374-4471-80c7-d799d69ba3f7-xxx admin]# ping www.taobao.com
PING www.taobao.com.danuoyi.tbcache.com (xxx.xxx.xxx.xxx) xxx bytes of data.
^C
--- www.taobao.com.danuoyi.tbcache.com ping statistics ---
10 packets transmitted, 0 received, 100% packet loss, time 9198ms
Si un contenedor necesita acceder a servicios en Internet, debe adquirir una puerta de enlace NAT y configurar una regla SNAT para el vSwitch en la VPC. Para obtener más información, consulte Configure a NAT gateway to allow an SAE application to access the internet.
Una regla SNAT permite que las instancias sin direcciones IP públicas en una VPC accedan a Internet a través de una Elastic IP Address (EIP) vinculada a una puerta de enlace NAT. Para obtener más información, consulte Internet-facing products.
Creación de una imagen
SAE ofrece creación y gestión integradas de imágenes basadas en Alibaba Cloud Container Registry. La imagen base es centos:7, preconfigurada con ajustes de idioma y codificación, zona horaria y OpenJDK.
SAE no integra un conjunto extenso de herramientas para evitar el consumo de recursos de tiempo de ejecución. Si requiere herramientas adicionales, cree una imagen personalizada u obtenga las herramientas desde OSS según sea necesario. Para obtener más información, consulte Create a Java image.
Apertura de un webshell
Siga estos pasos para realizar tareas básicas de operaciones y mantenimiento mediante el webshell:
En la SAE Application List page, seleccione una región y un namespace en la parte superior, y haga clic en el ID de la aplicación objetivo para abrir la página de detalles de la aplicación.
En la página Basic Information, haga clic en la pestaña Instances.
En la pestaña Instances, dentro de la sección Default Group, localice la instancia objetivo y haga clic en Webshell en la columna Actions.
Optional: Una vez abierto el webshell, puede hacer clic en el icono
situado en la esquina superior derecha de la ventana para cambiar al modo de pantalla completa.-
Ejecute comandos en la ventana del webshell según sea necesario para consultar y depurar su contenedor.
Para obtener más información, consulte Get instance metadata y Diagnose an application.
Obtención de metadatos de la instancia
Después de desplegar una aplicación en SAE, puede obtener metadatos básicos sobre la instancia, incluido el ID del security group, el ID de la VPC y el ID del vSwitch.
|
Elemento de metadatos |
Descripción |
|
/etc/podinfo/sgId |
Ruta del archivo que almacena los metadatos del ID del security group. |
|
/etc/podinfo/vpcId |
Ruta del archivo que almacena los metadatos del ID de la VPC. |
|
/etc/podinfo/vswitchId |
Ruta del archivo que almacena los metadatos del ID del vSwitch. Nota
Si existen varios vSwitches, los ID de vSwitch se separan con comas (,). |
Puede iniciar sesión en la consola de SAE y ejecutar los siguientes comandos en la ventana del webshell para comprobar los metadatos del ID del security group, el ID de la VPC y el ID del vSwitch.
-
Ejecute el siguiente comando para ir al directorio
podinfo:cd /etc/podinfo/NotaSi aparece el mensaje de error
can't cd to /etc/podinfo/, puede Restart la instancia o Deploy Application para resolver el problema. -
Ejecute el siguiente comando para ver todos los archivos que contienen metadatos de la instancia:
lsSalida esperada:
sgId vpcId vswitchId -
Ejecute los siguientes comandos según sea necesario para comprobar los metadatos correspondientes dentro de la instancia.
-
Obtenga el ID del security group.
cat sgIdSalida esperada:
sg-2ze4ddm2rqgenvcx****sh-4.2# -
Obtenga el ID de la VPC.
cat vpcIdSalida esperada:
vpc-2zeqku2oevokwm66b****sh-4.2# -
Obtenga el ID del vSwitch.
cat vswitchIdSalida esperada:
vsw-2zewmy4ynhljytzhu****sh-4.2#
-
Copia de comandos de instalación
Puede iniciar sesión en la consola de SAE y seguir estos pasos para instalar comandos en la ventana del webshell según sea necesario.
Los comandos instalados en una sesión de webshell se pierden después de reconstruir el contenedor. Para los comandos de uso frecuente, instálelos durante la creación de la imagen.
Haga clic en el icono
situado en la esquina superior derecha de la ventana del webshell.-
En el cuadro de diálogo Copy Command que aparece, seleccione los componentes que desea instalar según sea necesario, previsualice el comando y luego haga clic en Copy.
Install openssh: OpenSSH es una implementación gratuita y de código abierto del protocolo Secure Shell (SSH). OpenSSH proporciona un daemon del lado del servidor y herramientas del lado del cliente para cifrar datos durante sesiones de control remoto y transferencia de archivos. Al instalar OpenSSH, puede utilizar capacidades de depuración remota como el inicio de sesión remoto SSH y la carga o descarga de archivos con SFTP y SCP para depurar temporalmente una instancia específica de aplicación de SAE.
Install net-tools (netstat): El comando netstat supervisa el estado de la red. Puede mostrar información como tablas de enrutamiento, conexiones de red activas y el estado de cada dispositivo de interfaz de red.
Install iroute (ss): El comando Socket Statistics (ss) recupera estadísticas de sockets. Aunque devuelve información similar a la del comando netstat, el comando ss puede mostrar información más detallada sobre TCP y el estado de las conexiones con mayor rapidez.
Pegue el comando copiado en la ventana del webshell y presione Enter para ejecutarlo.
Diagnóstico de una aplicación
Comprobaciones rutinarias
Puede diagnosticar una aplicación de SAE mediante comprobaciones rutinarias, como verificar el proceso, los subprocesos y el estado de la Java Virtual Machine (JVM) en una aplicación Java.
-
Ejecute el siguiente comando para comprobar si existe el proceso Java de la aplicación.
ps -ef | grep javaNotaUn contenedor utiliza su proceso principal para iniciar una aplicación. Si la aplicación se detiene, el contenedor finaliza y SAE lo reinicia automáticamente para evitar interrupciones del servicio.
Si el proceso no existe, ejecute el comando
dmesg | grep -i killpara buscar registros de falta de memoria (OOM).Si existen dichos registros, indica que el proceso de la aplicación se detuvo. Debe revisar el archivo
hs_err_pid{PID}.logen el directorio de trabajo para identificar la causa raíz.
-
Para el análisis en línea de aplicaciones Java, puede utilizar Arthas, una herramienta de diagnóstico de código abierto de Alibaba. Se recomienda integrar Arthas en su imagen de prueba. Esta herramienta muestra el estado de carga de clases Java en tiempo real, lo que facilita la observación de parámetros de entrada y salida de métodos, variables de entorno, entre otros.
-
Conéctese a Internet.
Para obtener más información, consulte Configure a NAT gateway to allow an SAE application to access the internet.
-
Ejecute el siguiente comando para descargar Arthas.
sudo wget https://alibaba.github.io/arthas/arthas-boot.jar -
Ejecute el siguiente comando para iniciar Arthas.
sudo java -jar arthas-boot.jar
-
Carga y descarga de registros
Si las comprobaciones rutinarias son insuficientes, cargue los registros del contenedor en la nube y descárguelos a su computadora local para un análisis más detallado.
Para archivos de hasta 10 MB, utilice las funciones de transferencia de archivos integradas del webshell. Para obtener más información, consulte Use a webshell to upload and download files.
Para archivos mayores de 10 MB: Puede utilizar Alibaba Cloud OSS. El servicio OSS es accesible desde todos los entornos de red de Alibaba Cloud, por lo que puede usarlo para cargar y descargar registros. Siga estos pasos:
-
Instale la herramienta de línea de comandos de OSS (ossutil) dentro del contenedor. Para obtener más información, consulte Install the OSS command-line tool.
Este tema utiliza un sistema CentOS de 64 bits como ejemplo. Si su contenedor no tiene acceso a Internet, puede descargar el archivo a su computadora local, cargarlo en OSS y luego obtener el endpoint interno de VPC de OSS para descargar el archivo desde dentro del contenedor.
-
Ejecute el siguiente comando para descargar ossutil.
sudo wget http://gosspublic.alicdn.com/ossutil/1.5.0/ossutil64 -
Ejecute el siguiente comando para cambiar los permisos del archivo.
sudo chmod 755 ossutil64
-
-
Configure la herramienta de línea de comandos de OSS con el endpoint para la VPC en la región actual y el AccessKey de la cuenta que recibirá los archivos cargados. A continuación, compruebe un bucket existente para verificar que el servicio OSS esté disponible.
NotaAsegúrese de que OSS esté activado para una cuenta de Alibaba Cloud, la cual no necesita ser la cuenta actual.
Cree un bucket. Para obtener más información, consulte Create a bucket in the console.
-
Ejecute el siguiente comando para crear un archivo de configuración que almacene la información de acceso a OSS.
Siga las indicaciones para configurar su AccessKey y la información del endpoint. No es necesario introducir un token STS.
./ossutil64 config -
Ejecute el siguiente comando para listar todos los buckets.
Compruebe si la cuenta está disponible. Si se reporta un error, la configuración es incorrecta.
./ossutil64 lsSalida de ejemplo:
CreationTime Region StorageClass BucketName 2021-12-08 18:53:46 +0800 CST oss-cn-hangzhou Standard oss://test-bucket -
Ejecute el siguiente comando para crear un archivo de registro de ejemplo llamado sae-app.log.
echo "Hello" > sae-app.log -
Ejecute el siguiente comando para cargar el archivo de registro en el bucket especificado.
./ossutil64 cp sae-app.log {bucket-address}Ejemplo:
./ossutil64 cp sae-app.log oss://test-bucket
-
Verifique el resultado.
-
Método 1: Ejecute el siguiente comando para ver el archivo de ejemplo cargado.
./ossutil64 ls oss://test-bucketSalida de ejemplo:
LastModifiedTime Size(B) StorageClass ETAG ObjectName 2021-12-08 19:26:18 +0800 CST 6 Standard 09F7E02F1290BE211DA707A266F1**** oss://cri-55md3gmii09m****-chart/sae-app.log Object Number is: 1 0.047758(s) elapsed Método 2: Localice su archivo de registro en OSS console u otras herramientas, descárguelo a su computadora local y luego utilice sus herramientas preferidas para analizarlo.
-