Tutorial de Apache SkyWalking para Rastreamento Distribuído

O que é SkyWalking

Apache SkyWalking é uma plataforma de análise de observabilidade e sistema de gerenciamento de desempenho de aplicações (APM). Ele oferece uma solução integrada para rastreamento distribuído, análise de telemetria de malha de serviços, agregação de métricas e visualização.

Arquitetura do SkyWalking

A arquitetura do SkyWalking é composta por três componentes principais:

  • Agent: Coleta dados de telemetria das aplicações.
  • Collector (OAP - Observability Analysis Platform): Recebe, processa e armazena os dados de telemetria.
  • UI: Interface web para visualização e análise dos dados.

Configuração do Ambiente

Instalação e Implantação

Para iniciar, faça o download da versão mais recente do SkyWalking no site oficial. Após o download, descompacte o arquivo. A estrutura de diretórios resultante não requer modificações iniciais.

Para iniciar os serviços, navegue até o diretório bin e execute startup.bat (Windows) ou startup.sh (Linux/macOS).

A execução do script de inicialização iniciará dois serviços principais:

  • SkyWalking Collector: Responsável pela coleta de dados de telemetria dos agentes. Ele escuta via gRPC (porta padrão 11800) e HTTP (porta padrão 12800).
  • SkyWalking Webapp: A interface de gerenciamento e visualização. Ela roda na porta padrão 8080. As credenciais padrão de login são admin/admin.

Parâmetros de Configuração

Os principais arquivos de configuração estão localizados no diretório config.

Configurações do Coletor (OAP)

O coletor pode ser configurado para escutar dados via REST (HTTP) e gRPC. Parâmetros como restHost, restPort, gRPCHost e gRPCPort definem os endereços e portas de escuta. É possível configurar políticas de retenção de dados para métricas em diferentes granularidades (minuto, hora, dia, mês) através de recordDataTTL, minuteMetricsDataTTL, hourMetricsDataTTL, dayMetricsDataTTL e monthMetricsDataTTL.


# Exemplo de configuração do coletor
core:
 default:
   restHost: 0.0.0.0
   restPort: 12800
   gRPCHost: 0.0.0.0
   gRPCPort: 11800
   recordDataTTL: 90  # TTL para dados de registro em minutos
   minuteMetricsDataTTL: 90 # TTL para métricas de minuto em minutos
   hourMetricsDataTTL: 36 # TTL para métricas de hora em horas
   dayMetricsDataTTL: 45  # TTL para métricas de dia em dias
   monthMetricsDataTTL: 18 # TTL para métricas de mês em meses
   

Armazenamento de Dados

O SkyWalking suporta diferentes mecanismos de armazenamento, como H2 (em memória, para testes e desenvolvimento) e Elasticsearch (para produção). As configurações de armazenamento são definidas na seção storage.


# Exemplo de configuração de armazenamento com H2
storage:
 h2:
   driver: org.h2.jdbcx.JdbcDataSource
   url: jdbc:h2:mem:skywalking-oap-db
   user: sa

# Exemplo de configuração de armazenamento com Elasticsearch (comentado)
#  elasticsearch:
#    clusterNodes: localhost:9200
#    indexShardsNumber: 2
#    indexReplicasNumber: 0
#    bulkActions: 2000
#    bulkSize: 20
#    flushInterval: 10
#    concurrentRequests: 2
   

Receptores de Dados

O SkyWalking pode coletar diversos tipos de dados através de seus receptores. Isso inclui informações de JVM, logs de rastreamento no formato Zipkin, e telemetria de malha de serviços.


# Exemplo de configuração de receptores
receiver-register:
 default:
receiver-trace:
 default:
   bufferPath: ../trace-buffer/ # Caminho para os arquivos de buffer de rastreamento
   bufferOffsetMaxFileSize: 100 # Tamanho máximo do arquivo de offset do buffer em MB
   bufferDataMaxFileSize: 500 # Tamanho máximo do arquivo de dados do buffer em MB
   bufferFileCleanWhenRestart: false
   sampleRate: 10000 # Taxa de amostragem (10000 = 100%)
receiver-jvm:
 default:
# Outros receptores como service-mesh, istio-telemetry, receiver-zipkin podem ser configurados aqui
   

Interface do Usuário (UI)

Acesse a interface do usuário através do endereço: http://localhost:8080.

  • Página Inicial: Oferece uma visão geral do status do sistema, incluindo número de serviços, endpoints e topologias.
  • Visualização de Topologia: Mostra as relações de chamadas entre os serviços.
  • Informações de Chamadas de Serviço: Detalhes sobre o desempenho e latência das chamadas entre serviços.
  • Logs de Rastreamento: Permite a inspeção de rastros individuais para depuração e análise de performance.

Utilizando o Agente Java

O SkyWalking utiliza um agente Java para instrumentação, o que significa que não é necessário modificar o código da sua aplicação. O agente é aplicado como um parâmetro na linha de comando da JVM.

Exemplo de Comando de Inicialização

Para iniciar uma aplicação Java monitorada pelo SkyWalking:


java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=my-application -jar app.jar
   
  • -javaagent:/path/to/skywalking-agent/skywalking-agent.jar: Especifica o caminho para o agente Java.
  • -Dskywalking.agent.service_name=my-application: Define o nome do serviço que será exibido no SkyWalking UI.

Configuração para Tomcat

Tomcat 7

Edite o arquivo $CATALINA_HOME/bin/catalina.sh e adicione a seguinte linha no início do arquivo:


CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS
   

Tomcat 8+

Edite o arquivo $CATALINA_HOME/bin/catalina.sh e adicione a seguinte linha no início do arquivo:


set "CATALINA_OPTS=%CATALINA_OPTS% -javaagent:E:\\path\\to\\skywalking-agent\\skywalking-agent.jar"
   

Certifique-se de substituir /path/to/skywalking-agent/ pelo caminho real do seu agente SkyWalking.

Tags: Apache SkyWalking apm Rastreamento Distribuído Java Agent Monitoramento de Aplicações

Publicado em 9-23 08:21