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.