Após instrumentar sua aplicação com o SkyWalking e relatar dados de rastreamento para o Managed Service for OpenTelemetry, o Managed Service for OpenTelemetry passa a monitorá-la. É possível visualizar diversos dados de monitoramento, como topologia da aplicação, traces, transações anômalas, transações lentas e análise de SQL. Este tópico descreve como usar o SkyWalking Java Agent para instrumentação automática e fornece informações sobre seus atributos configuráveis.
Pré-requisitos
Acesse a página de download do SkyWalking e baixe o SkyWalking 6.X.X ou uma versão posterior (recomenda-se a versão estável mais recente). Coloque a pasta agent extraída em um diretório acessível ao processo Java.
Todos os plugins ficam armazenados no diretório
/plugins. Para ativar um novo plugin, adicione-o a esse diretório antes da inicialização. Para desativar um plugin, remova-o desse diretório. Por padrão, os arquivos de log são gravados no diretório/logs.
Os arquivos de log, plugins e arquivos de configuração estão localizados na pasta do agente. Não altere a estrutura de diretórios.
Contexto
O SkyWalking é uma ferramenta popular de Monitoramento de Desempenho de Aplicações (APM), projetada para aplicações baseadas em arquiteturas de microsserviços, Cloud Native e conteinerizadas (docker, Kubernetes e Mesos). Em sua essência, o SkyWalking é um sistema de rastreamento distribuído.
Para usar o SkyWalking para relatar dados da sua aplicação Java no console do Managed Service for OpenTelemetry, é necessário primeiro instrumentar a aplicação. O SkyWalking suporta tanto a instrumentação automática para frameworks como Dubbo, gRPC, JDBC, OkHttp, Spring, Tomcat, Struts e Jedis, quanto a instrumentação manual com OpenTracing. Este tópico descreve o método de instrumentação automática.
Demonstração
Repositório de código: SkyWalking Demo
Instrumentar uma aplicação Java com o SkyWalking
Baixe o SkyWalking Java Agent.
-
Configure as informações de conexão e serviço no arquivo de configuração do SkyWalking Java Agent.
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 o caminho para o agente do SkyWalking com base no ambiente de execução da sua aplicação.
NotaNos exemplos a seguir, substitua
<skywalking-agent-path>pelo caminho absoluto para skywalking-agent.jar na pasta do agente.Linux Tomcat 7 / Tomcat 8
Adicione o seguinte conteúdo à primeira linha do arquivo
tomcat/bin/catalina.sh:CATALINA_OPTS="$CATALINA_OPTS -javaagent:<skywalking-agent-path>"; export CATALINA_OPTSWindows Tomcat 7 / Tomcat 8
Adicione o seguinte conteúdo à primeira linha do arquivo
tomcat/bin/catalina.bat:set "CATALINA_OPTS=-javaagent:<skywalking-agent-path>"JAR or Spring Boot
Adicione o parâmetro -javaagent ao comando de inicialização da sua aplicação.
ImportanteO parâmetro -javaagent deve aparecer antes do parâmetro -jar.
java -javaagent:<skywalking-agent-path> -jar yourApp.jarJetty
Adicione as seguintes linhas ao arquivo de configuração
{JETTY_HOME}/start.ini:--exec -javaagent:<skywalking-agent-path> Reinicie sua aplicação.
Atributos configuráveis do agente Java
O agente Java do SkyWalking oferece suporte a uma ampla variedade de atributos configuráveis pelo usuário. Para obter uma lista completa de atributos, consulte o arquivo config/agent.config na demonstração de exemplo.
Principais atributos
Os atributos a seguir são baseados no apache-skywalking-java-agent-8.16.0.
Métodos de configuração
Propriedades do sistema
Use o prefixo -Dskywalking. seguido pelo nome do atributo do arquivo agent.config. Por exemplo:
# 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
Opções do agente
Anexe atributos ao caminho do agente nos argumentos da 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
Variáveis de ambiente
O agente do SkyWalking lê variáveis de ambiente automaticamente. É possível encontrar a variável de ambiente correspondente para cada atributo no arquivo config/agent.config. Por exemplo, a variável de ambiente para agent.service_name é SW_AGENT_NAME.
agent.service_name=${SW_AGENT_NAME:default_name}
# Set the environment variable
export SW_AGENT_NAME=<your_service_name>
Precedência
As definições de configuração são aplicadas com a seguinte precedência, da maior para a menor: opções do agente, propriedades do sistema, variáveis de ambiente e arquivo de configuração.
Plugins do agente Java
O agente Java do SkyWalking suporta uma variedade de middlewares, frameworks e bibliotecas. Todos os plugins suportados estão disponíveis na pasta /plugins da aplicação de demonstração.
Ativar plugins
Todos os plugins na pasta /plugins estão ativos. Para desativar um plugin, remova seu arquivo JAR da pasta /plugins.
Plugins com suporte oficial
Todos os plugins com suporte oficial estão localizados na pasta /plugins.
Plugins opcionais
Os plugins opcionais residem na pasta optional-plugins do pacote do agente ou em um repositório de terceiros. Para ativar um plugin opcional, mova seu arquivo JAR para a pasta /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 bootstrap
Devido a possíveis riscos de estabilidade, todos os plugins de bootstrap são opcionais. Eles estão localizados na pasta bootstrap-plugins. Para ativar um plugin de bootstrap, mova seu arquivo JAR para a pasta /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 suportados
Alguns plugins estão disponíveis apenas em um repositório de terceiros devido a possíveis impactos no desempenho ou limitações de uso. Para mais informações, consulte o repositório SkyAPM Java Plugin Extension.
Desenvolvimento de plugins
Para desenvolver um plugin personalizado do agente Java do SkyWalking, consulte a documentação oficial.
O Managed Service for OpenTelemetry suporta o relato de traces. Consulte a documentação oficial para obter detalhes sobre o desenvolvimento de um plugin de rastreamento personalizado.
Perguntas frequentes
P: Por que minha aplicação não aparece depois que o Agente do SkyWalking se conecta ao servidor?
R: Esse problema ocorre quando os dados de rastreamento distribuído não são relatados. Para verificar isso, consulte o arquivo {skywalking agent path}/logs/skywalking-api.log. Se os dados estiverem sendo relatados, você verá um log DEBUG do Agente do SkyWalking semelhante ao abaixo. A mensagem chave, TraceSegmentServiceClient : 1 trace segments have been sent to collector., confirma que os dados de rastreamento distribuído foram enviados com sucesso ao coletor.
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.
Se o relato de dados não estiver ocorrendo, as possíveis causas incluem amostragem ativada, filtros configurados ou falta de solicitações que gerem traces distribuídos.

