SkyWalking 链路追踪 搭建

SkyWalking 是什么?

分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。

提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。

SkyWalking 有哪些功能?

  • 多种监控手段。可以通过语言探针和 service mesh 获得监控是数据。
  • 多个语言自动探针。包括 Java,.NET Core 和 Node.JS。
  • 轻量高效。无需大数据平台,和大量的服务器资源。
  • 模块化。UI、存储、集群管理都有多种机制可选。
  • 支持告警。
  • 优秀的可视化解决方案。

SkyWalking 整体架构如何?

架构图

整个架构,分成上、下、左、右四部分:

  • 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
  • 下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
  • 右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
  • 左部分 SkyWalking UI :负责提供控台,查看链路等等。

 

搭建skywalking

 

 

步骤:

1.下载 SkyWalking 软件包

2.搭建一个 SkyWalking OAP 服务

3.搭建一个 SkyWalking UI 服务

4.启动一个 Spring Boot 应用,并配置 SkyWalking Agent

 

1.下载 SkyWalking 软件包:

skywalking是通过jar包方式启动,需要下载jar包,地址:https://skywalking.apache.org/downloads/

 

 

 重要的目录结构分析如下:

  • agent:客户端需要指定的目录,其中有一个jar,就是负责和客户端整合收集日志
  • bin:服务端启动的脚本
  • config:一些配置文件的目录
  • logs:oap服务的日志目录
  • oap-libs:oap所需的依赖目录
  • webapp:UI服务的目录

2.搭建一个 SkyWalking OAP 服务

启动之前需要对配置文件做一些修改,修改如下:

/config/application.yml这个是oap服务的配置文件,需要修改注册中心为zookeeper,如下图:

不修改的话 默认是 standalone 单机环境

启动oap服务:对应的启动脚本oapService.bat,Linux下对应的后缀是sh

logs/skywalking-oap-server.log 日志文件,查看是否有错误日志。

3.搭建一个 SkyWalking UI 服务

webapp/webapp.yml这个是UI服务的配置文件,其中有一个server.port配置,是UI服务的端口,默认8080,我将其改成8888,避免端口冲突

启动UI服务:对应的启动脚本webappService.bat,Linux下对应的后缀是sh

还有一个startup.bat启动文件,可以直接启动上述两个服务

 

 访问:http://localhost:8888/,直接进入UI端

 

4.启动一个 Spring Boot 应用,并配置 SkyWalking Agent

想要传输数据必须借助skywalking提供的agent,只需要在启动参数指定即可,命令如下:

-javaagent:D:\soft\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=xc-springboot
-Dskywalking.collector.backend_service=127.0.0.1:11800

上述命令解析如下:

  • -javaagent:指定skywalking中的agent中的skywalking-agent.jar的路径
  • -Dskywalking.agent.service_name:指定在skywalking中的服务名称,一般是微服务的spring.application.name
  • -Dskywalking.collector.backend_service:指定oap服务绑定的地址,由于这里是本地,并且oap服务默认的端口是11800,因此只需要配置为127.0.0.1:11800

上述参数可以在命令行通过java -jar xxx指定,在IDEA中操作如下图:

 

 调用任意应用接口后 查看skywalking的UI端

 

SkyWalking UI 界面

如下图所示:

这里,我们会看到 SkyWalking 中非常重要的三个概念:

  • 服务(Service) :表示对请求提供相同行为的一系列或一组工作负载。在使用 Agent 或 SDK 的时候,你可以定义服务的名字。如果不定义的话,SkyWalking 将会使用你在平台(例如说 Istio)上定义的名字。这里,我们可以看到 Spring Boot 应用的服务为 "demo-application",就是我们在环境变量 SW_AGENT_NAME 中所定义的。

  • 服务实例(Service Instance) :上述的一组工作负载中的每一个工作负载称为一个实例。就像 Kubernetes 中的 pods 一样, 服务实例未必就是操作系统上的一个进程。但当你在使用 Agent 的时候, 一个服务实例实际就是操作系统上的一个真实进程。这里,我们可以看到 Spring Boot 应用的服务为 {agent_name}-pid:{pid}@{hostname},由 Agent 自动生成。关于它,我们在「5.1 hostname」小节中,有进一步的讲解,胖友可以瞅瞅。

  • 端点(Endpoint) :对于特定服务所接收的请求路径, 如 HTTP 的 URI 路径和 gRPC 服务的类名 + 方法签名。这里,我们可以看到 Spring Boot 应用的一个端点,为 API 接口 /demo/echo

拓扑图

点击「拓扑图」菜单,进入查看拓扑图的界面。如下图所示:SkyWalking UI 界面 —— 拓扑图

 追踪

点击「追踪」菜单,进入查看链路数据的界面。如下图所示:SkyWalking UI 界面 —— 追踪

 

SkyWalking 数据持久化

SkyWalking 日志监控

SkyWalking 监控告警

 

官方gitee:

https://gitee.com/OpenSkywalking/sky-walking

查看文章:

https://skywalking.apache.org/zh/2020-04-19-skywalking-quick-start/

https://mp.weixin.qq.com/s/POFgkwdKQgDsq5ponvvOvQ

 

 

 

 

 

posted @ 2021-11-24 13:36  草木物语  阅读(434)  评论(0编辑  收藏  举报