Después de instrumentar su aplicación con SkyWalking y reportar los datos de trazas a Managed Service for OpenTelemetry, Managed Service for OpenTelemetry comienza a monitorear la aplicación. Puede consultar diversos datos de monitoreo, como la topología de la aplicación, las trazas, las transacciones anómalas, las transacciones lentas y el análisis de SQL. Este tema describe cómo usar el agente de Java de SkyWalking para la instrumentación automática y proporciona información sobre sus atributos configurables.
Requisitos previos
Abra la página de descargas de SkyWalking y descargue SkyWalking 6.X.X o una versión posterior (se recomienda la versión estable más reciente). Coloque la carpeta agent extraída en un directorio al que el proceso de Java pueda acceder.
Todos los plugins se almacenan en el directorio
/plugins. Para habilitar un plugin nuevo, agréguelo a este directorio antes del inicio. Para deshabilitar un plugin, elimínelo de este directorio. De forma predeterminada, los archivos de registro se escriben en el directorio/logs.
Los archivos de registro, los plugins y los archivos de configuración se encuentran en la carpeta del agente. No modifique la estructura de directorios.
Contexto
SkyWalking es una herramienta popular de monitoreo del rendimiento de aplicaciones (APM) diseñada para aplicaciones construidas sobre arquitecturas de microservicios, nativas de la nube y contenerizadas (docker, Kubernetes y Mesos). En esencia, SkyWalking es un sistema de trazas distribuidas.
Para usar SkyWalking y reportar datos de su aplicación Java a la consola de Managed Service for OpenTelemetry, primero debe instrumentar la aplicación. SkyWalking admite tanto la instrumentación automática para frameworks como Dubbo, gRPC, JDBC, OkHttp, Spring, Tomcat, Struts y Jedis, como la instrumentación manual con OpenTracing. Este tema describe el método de instrumentación automática.
Demostración
Repositorio de código: Demostración de SkyWalking
Instrumentar una aplicación Java con SkyWalking
Descargue el agente de Java de SkyWalking.
-
Configure la conexión y la información del servicio en el archivo de configuración del agente de Java de SkyWalking.
collector.backend_service=<endpoint> // Replace with the endpoint obtained from the prerequisites. agent.authentication=<token> // Replace with the authentication token obtained from the prerequisites. agent.service_name=<service-name> // Replace with your actual service name. -
Especifique la ruta al agente de SkyWalking según el entorno de ejecución de su aplicación.
NotaEn los siguientes ejemplos, reemplace
<skywalking-agent-path>con la ruta absoluta al archivo skywalking-agent.jar dentro de la carpeta del agente.Linux Tomcat 7 / Tomcat 8
Agregue lo siguiente en la primera línea de
tomcat/bin/catalina.sh:CATALINA_OPTS="$CATALINA_OPTS -javaagent:<skywalking-agent-path>"; export CATALINA_OPTSWindows Tomcat 7 / Tomcat 8
Agregue lo siguiente en la primera línea de
tomcat/bin/catalina.bat:set "CATALINA_OPTS=-javaagent:<skywalking-agent-path>"JAR o Spring Boot
Agregue el parámetro -javaagent al comando de inicio de su aplicación.
ImportanteEl parámetro -javaagent debe aparecer antes del parámetro -jar.
java -javaagent:<skywalking-agent-path> -jar yourApp.jarJetty
Agregue las siguientes líneas al archivo de configuración
{JETTY_HOME}/start.ini:--exec -javaagent:<skywalking-agent-path> Reinicie su aplicación.
Atributos configurables del agente de Java
El agente de Java de SkyWalking admite una amplia variedad de atributos que el usuario puede configurar. Para ver la lista completa de atributos, consulte el archivo config/agent.config en la demostración de ejemplo.
Atributos clave
Los siguientes atributos corresponden a apache-skywalking-java-agent-8.16.0.
Métodos de configuración
Propiedades del sistema
Use el prefijo -Dskywalking. seguido del nombre del atributo del archivo agent.config. Por ejemplo:
# Configure agent.service_name using a system property
java -javaagent:/path/to/skywalking-agent.jar -Dskywalking.agent.service_name=<your_service_name> -jar your-project.jar
Opciones del agente
Anexe los atributos a la ruta del agente en los argumentos de la JVM.
# Syntax
-javaagent:/path/to/skywalking-agent.jar=[key1]=[value1],[key2]=[value2]
# Example
java -javaagent:/path/to/skywalking-agent.jar=agent.service_name=<your-service-name>,agent.authentication=<your-token> -jar your-project.jar
Variables de entorno
El agente de SkyWalking lee automáticamente las variables de entorno. Puede encontrar la variable de entorno correspondiente a cada atributo en el archivo config/agent.config. Por ejemplo, la variable de entorno para agent.service_name es SW_AGENT_NAME.
agent.service_name=${SW_AGENT_NAME:default_name}
# Set the environment variable
export SW_AGENT_NAME=<your_service_name>
Precedencia
Las opciones de configuración se aplican con la siguiente precedencia, de mayor a menor: opciones del agente, propiedades del sistema, variables de entorno y archivo de configuración.
Plugins del agente Java
El agente Java de SkyWalking es compatible con diversos tipos de middleware, frameworks y bibliotecas. Todos los plugins compatibles están disponibles en la carpeta /plugins de la aplicación de demostración.
Activar plugins
Todos los plugins de la carpeta /plugins están activos. Para deshabilitar un plugin, elimine su archivo JAR de la carpeta /plugins.
Plugins con soporte oficial
Todos los plugins con soporte oficial se encuentran en la carpeta /plugins.
Plugins opcionales
Los plugins opcionales se ubican en la carpeta optional-plugins del paquete del agente o en un repositorio de terceros. Para activar un plugin opcional, mueva su archivo JAR a la carpeta /plugins.
optional-plugins/
apm-customize-enhance-plugin-8.16.0.jar
apm-ehcache-2.x-plugin-8.16.0.jar
apm-fastjson-1.x-plugin-8.16.0.jar
apm-gson-2.x-plugin-8.16.0.jar
apm-guava-cache-plugin-8.16.0.jar
apm-jackson-2.x-plugin-8.16.0.jar
apm-kotlin-coroutine-plugin-8.16.0.jar
apm-mybatis-3.x-plugin-8.16.0.jar
apm-quartz-scheduler-2.x-plugin-8.16.0.jar
apm-resttemplate-6.x-plugin-8.16.0.jar
apm-sentinel-1.x-plugin-8.16.0.jar
apm-shenyu-2.4.x-plugin-8.16.0.jar
apm-spring-annotation-plugin-8.16.0.jar
apm-spring-cloud-gateway-2.0.x-plugin-8.16.0.jar
apm-spring-cloud-gateway-2.1.x-plugin-8.16.0.jar
apm-spring-cloud-gateway-3.x-plugin-8.16.0.jar
apm-spring-tx-plugin-8.16.0.jar
apm-spring-webflux-5.x-plugin-8.16.0.jar
apm-springmvc-annotation-6.x-plugin-8.16.0.jar
apm-trace-ignore-plugin-8.16.0.jar
apm-zookeeper-3.4.x-plugin-8.16.0.jar
trace-sampler-cpu-policy-plugin-8.16.0.jar
Plugins de arranque (bootstrap)
Debido a posibles riesgos de estabilidad, todos los plugins de arranque son opcionales. Se encuentran en la carpeta bootstrap-plugins. Para activar uno de estos plugins, mueva su archivo JAR a la carpeta /plugins.
bootstrap-plugins/
apm-jdk-forkjoinpool-plugin-8.16.0.jar
apm-jdk-http-plugin-8.16.0.jar
apm-jdk-threading-plugin-8.16.0.jar
apm-jdk-threadpool-plugin-8.16.0.jar
Plugins compatibles
Algunos plugins solo están disponibles en un repositorio de terceros debido a posibles impactos en el rendimiento o limitaciones de uso. Para obtener más información, consulte el repositorio de extensiones de plugins Java de SkyAPM.
Desarrollo de plugins
Para desarrollar un plugin personalizado del agente Java de SkyWalking, consulte la documentación oficial.
Managed Service for OpenTelemetry admite el reporte de trazas. Consulte la documentación oficial para conocer los detalles sobre cómo desarrollar un plugin de trazas personalizado.
Preguntas frecuentes
P: ¿Por qué mi aplicación no aparece después de que el agente de SkyWalking se conecta al servidor?
R: Este problema ocurre cuando no se reportan los datos de trazabilidad distribuida. Para comprobarlo, revise el archivo {skywalking agent path}/logs/skywalking-api.log. Si los datos se están reportando, verá un registro DEBUG del agente de SkyWalking similar al siguiente. El mensaje clave, TraceSegmentServiceClient : 1 trace segments have been sent to collector., confirma que los datos de trazabilidad distribuida se enviaron correctamente al colector.
DEBUG 2020-03-09 17:18:16:356 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
DEBUG 2020-03-09 17:18:19:357 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
DEBUG 2020-03-09 17:18:21:301 DataCarrier.DEFAULT.Consumer.0.Thread TraceSegmentServiceClient : 1 trace segments have been sent to collector.
DEBUG 2020-03-09 17:18:22:353 SkywalkingAgent-2-GRPCChannelManager-0 GRPCChannelManager : Selected collector grpc service running, reconnect:false.
DEBUG 2020-03-09 17:18:22:357 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
DEBUG 2020-03-09 17:18:25:356 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
Si no se están reportando datos, las causas posibles incluyen el muestreo habilitado, filtros configurados o la falta de solicitudes que generen trazas distribuidas.
P: ¿ARMS es compatible con el agente Java de SkyWalking 9.x o versiones posteriores? ¿Cómo resuelvo problemas de compatibilidad en un entorno JDK 21?
R: ARMS admite la conexión con agentes de código abierto de SkyWalking. Sin embargo, la compatibilidad de versiones específicas del agente Java de SkyWalking (como skywalking-java-agent:9.2.0 o skywalking-java-agent:9.6.0) con las versiones de JDK la determina la comunidad de código abierto. Para confirmar la compatibilidad de versiones, consulte la documentación oficial de SkyWalking.
Si ejecuta JDK 21 y encuentra el error Unsupported class file major version 65, la causa es que las versiones anteriores del agente (como la 8.7.0) dependen de una versión de Byte-buddy que no es compatible con Java 21 (versión principal 65 del archivo de clase). Para resolver este problema, utilice uno de los siguientes métodos:
Actualice su agente Java de SkyWalking a la versión 8.16.0 o posterior. Esta versión incluye una versión de Byte-buddy compatible con Java 21.
Cambie el JDK de su aplicación a una versión anterior que sea compatible con su agente actual.
Si necesita compatibilidad estable con versiones superiores de JDK, se recomienda utilizar el agente propietario de monitoreo de aplicaciones de ARMS.
P: ¿El agente de SkyWalking tiene un impacto significativo en el uso del disco local del Pod?
R: El agente de SkyWalking tiene un impacto mínimo en el disco local del Pod. El agente solo escribe registros temporalmente en el almacenamiento local (rutas predeterminadas: ArmsAgent/log o el directorio /logs dentro de la carpeta del agente). No almacena datos de trazas de forma persistente. El consumo principal de recursos del agente de SkyWalking es de CPU y memoria, no de disco. Los archivos de registro se conservan durante un periodo breve y el sistema los limpia automáticamente. Por lo tanto, el impacto del agente de SkyWalking en el uso del disco local del Pod es insignificante.

