开启 SkyWalking

这篇文章介绍一下如何在启动 Linkis 服务的时候开启 SkyWalking,以方便后续做分布式 trace 和 troubleshooting。

SkyWalking 是开源的可视化平台,可以从多种数据源采集数据,并提供分析、聚合以及可视化等功能。通过 SkyWalking,我们可以对分布式系统的拓扑结构,数据交互有一个更加清晰的视图。

下图是 SkyWalking 的整体架构图。

开启 SkyWalking - 图1

从逻辑上可以划分成 4 个部分:

  • Probe:可以理解为数据采集 agent,主要负责数据采集和格式化。
  • Platform Backend:SkyWalking 的后端服务,支持数据聚合、分析以及流式处理等。
  • Storage:负责数据存储,以 plugin 的方式支持多种存储引擎,比如 ElasticSearch, H2, MySQL, TiDB, InfluxDB 等。
  • UI: 数据可视化。

在 Linkis 中使用 SkyWalking,需要用户已经存在 Backend 服务以及对应的 Storage。Linkis 服务启动的时候集成 Probe 即可。Probe 集成主要有三种方式:

  • Language based native agent:这些 agent 和目标服务进程运行在相同的用户空间,从外部来看,agent 和目标服务的代码是一样的。一个典型的例子是 Java agent,在运行 Java 应用的时候我们可以通过 -javaagent 来指定 agent。
  • Service Mesh probes:这种 Probe 通过 sidecar 或者 proxy 收集数据。
  • 3rd-party intrument library:简单来说就是第三方的数据,比如 zipkin。

我们在 Linkis 集成 SkyWalking 的时候采用第一种方式,也就是 java agent 的方式。下面我们为大家演示一下如何在 Linkis 服务中开启 SkyWalking。

SkyWalking 后端是开启 SkyWalk 的前置条件,下面先简单演示下如何安装 SkyWalking 的后端。

首先从 SkyWalking 的 Downloads 页面下载 SkyWalking APM。

开启 SkyWalking - 图2

下载完,直接解压得到如下的目录结构。

  1. $ ls
  2. bin config config-examples LICENSE licenses logs NOTICE oap-libs README.txt tools webapp

后端默认使用 H2 内存数据库作为后端存储,不需要修改配置。按如下方式启动。

启动 Backend

  1. $ sh bin/startup.sh

启动 WebApp

  1. $ sh bin/webappService.sh

UI 默认启动在 8080 端口,也可以通过修改 webapp 目录下的 webapp.yml 文件修改监听端口。

  1. server:
  2. port: 8080
  3. spring:
  4. cloud:
  5. gateway:
  6. routes:
  7. - id: oap-route
  8. uri: lb://oap-service
  9. predicates:
  10. - Path=/graphql/**
  11. discovery:
  12. client:
  13. simple:
  14. instances:
  15. oap-service:
  16. - uri: http://127.0.0.1:12800
  17. # - uri: http://<oap-host-1>:<oap-port1>
  18. # - uri: http://<oap-host-2>:<oap-port2>
  19. mvc:
  20. throw-exception-if-no-handler-found: true
  21. web:
  22. resources:
  23. add-mappings: true
  24. management:
  25. server:
  26. base-path: /manage

这里假定大家对 Linkis 的服务部署已经比较清晰,如果还不清晰,可以异步:

在 Linkis 中开启 SkyWalking 首先需要下载 SkyWalking 的 Java agent,我们可以在 Downloads 页面进行下载。

开启 SkyWalking - 图3

下载之后解压,内部的文件结构如下:

  1. tree skywalking-agent
  2. $ skywalking-agent
  3. ├── LICENSE
  4. ├── NOTICE
  5. ├── activations
  6. ├── apm-toolkit-kafka-activation-8.8.0.jar
  7. ├── ...
  8. ├── bootstrap-plugins
  9. ├── apm-jdk-http-plugin-8.8.0.jar
  10. └── apm-jdk-threading-plugin-8.8.0.jar
  11. ├── config
  12. └── agent.config
  13. ├── licenses
  14. └── LICENSE-asm.txt
  15. ├── logs
  16. ├── optional-plugins
  17. ├── apm-customize-enhance-plugin-8.8.0.jar
  18. ├── ...
  19. ├── optional-reporter-plugins
  20. ├── kafka-reporter-plugin-8.8.0.jar
  21. ├── ...
  22. ├── plugins
  23. ├── apm-activemq-5.x-plugin-8.8.0.jar
  24. ├── ...
  25. └── skywalking-agent.jar

修改 Linkis 的 deploy-config/linkis-env.sh 中的配置项 SKYWALKING_AGENT_PATH。将其设置为 skywalking-agent.jar 的路径。

  1. SKYWALKING_AGENT_PATH=/path/to/skywalking-agent.jar

然后启动 Linkis 即可。

  1. $ sh linkis-start-all.sh

Linkis 的 UI 端口默认启动在 8080 端口,Linkis 开启 SkyWalking 之后打开 UI 如果能看到如下的图就表示成功了。
如果看不到展示效果,可能是浏览器兼容性问题,尝试切换浏览器试试。

开启 SkyWalking - 图4

开启 SkyWalking - 图5

开启 SkyWalking - 图6