介绍

skywalking官网

skywalking-github

背景

相关文章:

我们生产使用的spring cloud体系, eureka来做服务发现,feign进行通信,默认使用 hystrix做服务熔断.

结合上述相关介绍,我们最终采用skywalking

部署

下载

点击下载地址,然后选择对应版本进行下载,解压

解压

下载后解压,文件目录可以分为三部分:

  • agent: 需要监控的应用的代理
  • collector: 应用trace信息收集器(被监控应用内数据会被收集起来)
  • webapp: 前端页面展示

结构如下:

apache-skywalking-apm-incubating
|-- agent
|   |-- activations
|   |   |-- apm-toolkit-log4j-1.x-activation-5.0.0-beta-SNAPSHOT.jar
|   |   |-- apm-toolkit-log4j-2.x-activation-5.0.0-beta-SNAPSHOT.jar
|   |   |-- apm-toolkit-logback-1.x-activation-5.0.0-beta-SNAPSHOT.jar
|   |   |-- apm-toolkit-opentracing-activation-5.0.0-beta-SNAPSHOT.jar
|   |   `-- apm-toolkit-trace-activation-5.0.0-beta-SNAPSHOT.jar
|   |-- config
|   |   `-- agent.config
|   |-- logs
|   |-- optional-plugins
|   |   `-- apm-spring-annotation-plugin-5.0.0-beta-SNAPSHOT.jar
|   |-- plugins
|   |   |-- apm-dubbo-plugin-5.0.0-beta-SNAPSHOT.jar
|   |   |-- apm-elastic-job-2.x-plugin-5.0.0-beta-SNAPSHOT.jar
|   |   |-- ......
|   |   `-- tomcat-7.x-8.x-plugin-5.0.0-beta-SNAPSHOT.jar
|   `-- skywalking-agent.jar
|-- bin
|   |-- collectorService.bat
|   |-- collectorService.sh
|   |-- startup.bat
|   |-- startup.sh
|   |-- webappService.bat
|   `-- webappService.sh
|-- collector-libs
|   |-- agent-grpc-define-5.0.0-beta-SNAPSHOT.jar
|   |-- agent-grpc-provider-5.0.0-beta-SNAPSHOT.jar
|   |-- agent-jetty-define-5.0.0-beta-SNAPSHOT.jar
|   |-- ......
|   `-- zookeeper-3.4.10.jar
|-- config
|   |-- application.yml
|   |-- component-libraries.yml
|   `-- log4j2.xml
|-- DISCLAIMER
|-- LICENSE
|-- licenses
|   |-- LICENSE-annotations.txt
|   |-- LICENSE-antlr4-runtime.txt
|   |-- ......
|   |-- LICENSE-zuul.txt
|   `-- ui-licenses
|       |-- LICENSE-add-dom-event-listener
|       |-- LICENSE-antd
|       |-- ......
|       `-- LICENSE-whatwg-fetch
|-- logs
|   |-- collector.log
|   |-- skywalking-collector-server.log
|   |-- webapp-console.log
|   `-- webapp.log
|-- NOTICE
|-- README.txt
`-- webapp
    `-- skywalking-webapp.jar

后端部署

  • 修改config/application.yml,将里面所有host改为物理机ip
  • 修改 bin/webappService.sh ,将 collector.ribbon.listOfServers=127.0.0.1:10800 ,改为 config/application.yml 里面 naming.jetty.hostport
  • 执行bin/startup.sh

需要注意的是, skywalking 数据采用 elasticsearch 存储.需要部署 es ,并且修改 es 的配置文件 elasticsearch.yml ,将对应配置改为以下配置:

network.host: 0.0.0.0
thread_pool.bulk.queue_size: 1000

agent部署

  • 复制skywalking-agent到任意目录
  • 配置agent/config/agent.config文件
    • 将collector.servers填写为collector配置文件(config/application.yml)中naming/jetty/ip:port
  • 添加参数
    • 在jvm启动参数添加: -javaagent:/path/to/skywalking-agent/skywalking-agent.jar

假设我们已经将skywalking-agent放到/opt/skywalking/目录下,那么我们的启动命令应该写为:

java -javaagent:/opt/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.application_code=gateway -jar gateway.jar

配置除了通过/config/agent.config文件外,可以通过环境变量和VM参数(-D)来进行设置

其他

因为现有版本5.0.0-alpha有bug,所以需要使用新发布的5.0.0-beta版,所以需要编译对应版本源码

打包成功后对应的skywalking存放在apm-dist/target目录下,根据上面的部署步骤使用

注意事项

  • agent中的 collector.ip 需要与 collector 中配置文件中的相同 (agent 与 collector 在不同机器时,注意将 ip 改为对应机器的ip)
  • 部署 agent,collector 机器的系统时区必须一致(不同时dashboard中查看不到数据)
  • 编译时替换npm源

参考链接

skywalking-中文文档