O SkyWalking é um sistema de rastreamento e monitoramento de desempenho de aplicações (APM) distribuídas. Este tópico descreve como configurar o SkyWalking para usar um cluster Alibaba Cloud Elasticsearch V7.4.0 como backend de armazenamento e permitir a observabilidade de ponta a ponta nas suas aplicações distribuídas.
Como funciona
O SkyWalking coleta dados de telemetria de agentes em execução na sua aplicação e os encaminha para o servidor SkyWalking OAP (Observability Analysis Platform). O OAP analisa e agrega esses dados e os armazena no Elasticsearch. A interface do SkyWalking lê as informações do Elasticsearch para renderizar painéis e rastreamentos.
O SkyWalking oferece suporte a dois modos de instrumentação:
Agentes de instrumentação automática: Instrumentam sua aplicação automaticamente, sem modificar o código-fonte. Oferecem suporte nativo a uma ampla variedade de frameworks e bibliotecas.
Agentes de instrumentação manual: Usam o SDK OpenTracing para instrumentar componentes não cobertos pelos agentes automáticos, incluindo componentes privados ou personalizados. É possível combinar a instrumentação automática com a manual.
O SkyWalking aceita dados de múltiplas fontes, incluindo agentes SkyWalking para diversas linguagens, Zipkin v1, Zipkin v2, telemetria do Istio e Envoy.
Este tópico aborda o uso do Alibaba Cloud Elasticsearch V7.4.0 como backend de armazenamento do SkyWalking. Para enviar dados de aplicações Java ao SkyWalking, consulte Use SkyWalking to report Java application data . Para obter a lista completa de middlewares e componentes compatíveis com o SkyWalking, acesse a documentação do Apache SkyWalking .
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster Alibaba Cloud Elasticsearch V7.4.0. Consulte Crie um cluster Alibaba Cloud Elasticsearch.
Um servidor Linux com JDK 1.8.0 ou superior instalado. Recomendamos usar uma instância Elastic Compute Service (ECS). Consulte Crie uma instância ECS e Instale o JDK.
As portas 8080, 10800, 11800 e 12800 disponíveis no servidor Linux.
O firewall e o Security-Enhanced Linux (SELinux) desativados no servidor Linux.
Se o JDK não estiver instalado corretamente, os logs do SkyWalking exibirãoJava not foundoujava-xxx: No such file or directoryao iniciar o service.
Etapa 1: Baixe e instale o SkyWalking
-
Baixe o pacote do SkyWalking para Elasticsearch 7 no seu servidor Linux. Como este tópico usa um cluster Elasticsearch V7.4.0, selecione Binary Distribution for Elasticsearch 7 na página de downloads do SkyWalking. Execute o comando abaixo para baixar o pacote:
wget https://archive.apache.org/dist/skywalking/7.0.0/apache-skywalking-apm-es7-7.0.0.tar.gz -
Extraia o pacote:
tar -zxvf apache-skywalking-apm-es7-7.0.0.tar.gz -
Verifique os arquivos extraídos:
ls apache-skywalking-apm-bin-es7/Saída esperada:
agent bin config LICENSE licenses NOTICE oap-libs README.txt tools webapp
Etapa 2: Configure o SkyWalking para conectar ao cluster Elasticsearch
O SkyWalking usa o H2 como backend de armazenamento padrão, mas o H2 não oferece suporte a armazenamento persistente de dados. Altere o backend de armazenamento para Elasticsearch editando o arquivo application.yml.
-
Abra o arquivo
application.ymlna pastaconfig:cd apache-skywalking-apm-bin-es7/config/ vi application.yml -
Localize a seção
storage. Altere o seletor deH2paraelasticsearch7e configure os parâmetros de conexão:storage: selector: ${SW_STORAGE:elasticsearch7} elasticsearch7: nameSpace: ${SW_NAMESPACE:"skywalking-index"} clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:es-cn-4591kzdzk000i****.public.elasticsearch.aliyuncs.com:9200} protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"} # trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"} # trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""} enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Hour and Day metrics will be merged into minute index. dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index. user: ${SW_ES_USER:"elastic"} password: ${SW_ES_PASSWORD:"es_password"}ImportanteMantenha
trustStorePathetrustStorePasscomentados. Descomentar esses parâmetros sem um arquivo de keystore válido causa o erroNoSuchFileException: ../es_keystore.jks.Os principais parâmetros são:
Parâmetro
Descrição
selectorSeletor do backend de armazenamento. Defina como
elasticsearch7.nameSpacePrefixo aplicado a todos os nomes de índice criados no cluster Elasticsearch.
clusterNodesEndpoint público do seu cluster Elasticsearch. Como o SkyWalking e o cluster Elasticsearch estão em VPCs diferentes, use o endpoint público. Para localizar o endpoint, consulte Visualize as informações básicas de um cluster.
userNome de usuário do cluster Elasticsearch. Padrão:
elastic.passwordSenha do usuário
elastic, definida durante a criação do cluster. Para redefinir a senha, consulte Reset the access password for an Elasticsearch cluster. -
(Opcional) Altere o endereço IP de escuta ou os números de porta na seção
coredo arquivoapplication.yml. Os valores padrão são a porta 12800 para API RESTful e a porta 11800 para gRPC. Este tópico usa os valores padrão.core: selector: ${SW_CORE:default} default: # Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate # Receiver: Receive agent data, Level 1 aggregate # Aggregator: Level 2 aggregate role: ${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator restHost: ${SW_CORE_REST_HOST:0.0.0.0} restPort: ${SW_CORE_REST_PORT:12800} restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/} gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0} gRPCPort: ${SW_CORE_GRPC_PORT:11800} -
(Opcional) Modifique o arquivo
webapp/webapp.ymlpara alterar a porta da UI ou o endpoint do backend. Este tópico usa os valores padrão.server: port: 8080 collector: path: /graphql ribbon: ReadTimeout: 10000 # Point to all backend's restHost:restPort, split by , listOfServers: 127.0.0.1:12800
Etapa 3: Inicie o SkyWalking e verifique os resultados
Certifique-se de que o cluster Elasticsearch esteja em execução antes de iniciar o SkyWalking.
-
Execute o script de inicialização no diretório
bin:cd ../bin ./startup.shSe a inicialização for bem-sucedida, você verá:
SkyWalking OAP started successfully! SkyWalking Web Application started successfully!A execução do script
startup.shinicia tanto o SkyWalking OAP quanto a UI do SkyWalking. -
Acesse
http://<Endereço IP do servidor Linux>:8080/em um navegador para abrir a UI do SkyWalking.Na primeira conexão do SkyWalking com o Elasticsearch, a inicialização é mais lenta porque o sistema cria muitos índices no cluster. A página da UI pode aparecer em branco até que a criação dos índices seja concluída. Para acompanhar o progresso, visualize os logs em
<Caminho de instalação do SkyWalking>/logs/skywalking-oap-server.log.Após o acesso bem-sucedido, o painel de monitoramento Rocketbot do SkyWalking será exibido. O painel contém menus de navegação como Dashboard, Topology e Trace. Na visualização Global, é normal que os painéis de monitoramento (Heatmap, Response Time Percentile, Global Brief, entre outros) não apresentem dados inicialmente. Isso indica que o service foi iniciado, mas nenhum dado de agente de aplicação foi conectado ainda.
-
Verifique se o SkyWalking criou seus índices no Elasticsearch. Faça login no console Kibana do seu cluster — consulte Log on to the Kibana console — e execute:
GET _cat/indices?vOs resultados listarão muitos índices cujos nomes começam com
skywalking-index.Após executar o comando, dados de índice semelhantes aos seguintes serão retornados, indicando que o SkyWalking gravou dados com sucesso no Elasticsearch.
green open skywalking-index_all_percentile-20200408 green open skywalking-index_endpoint_inventory green open skywalking-index_service_apdex-20200408 green open skywalking-index_database_access_resp_time_month-202004 green open skywalking-index_service_relation_client_cpm-20200408 green open skywalking-index_database_access_sla_month-202004 green open skywalking-index_service_relation_server_call_sla-20200408 green open skywalking-index_endpoint_sla-20200408 green open skywalking-index_instance_jvm_memory_noheap-20200408 green open skywalking-index_service_relation_server_percentile-20200408 green open skywalking-index_service_instance_relation_server_resp_time-20200408 green open skywalking-index_profile_task_segment_snapshot-20200408 green open skywalking-index_endpoint_relation_cpm-20200408 green open skywalking-index_instance_jvm_old_gc_time-20200408 green open skywalking-index_service_sla-20200408 green open skywalking-index_top_n_database_statement-20200408 green open skywalking-index_service_relation_client_call_sla-20200408 green open skywalking-index_endpoint_percentile_month-202004 green open apm-agent-configuration
Próximas etapas
Para conectar sua aplicação ao SkyWalking, adicione o JAR do agente localizado em
apache-skywalking-apm-bin-es7/agent/skywalking-agent.jaraos argumentos de inicialização da JVM da sua aplicação.Para saber mais sobre middlewares e componentes compatíveis, consulte a documentação do Apache SkyWalking.
Para enviar dados de aplicações Java diretamente ao SkyWalking, consulte Use SkyWalking to report Java application data.