SkyWalking 分布式追踪系统

栏目: 后端 · 发布时间: 6年前

内容简介:随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,所以会深深的感受到 “银弹” 这个词是不存在的,每种架构都有其优缺点 。面对以上情况, 我们就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这就是所谓的APM(应用性能管理)。

随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,所以会深深的感受到 “银弹” 这个词是不存在的,每种架构都有其优缺点 。

SkyWalking 分布式追踪系统

面对以上情况, 我们就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这就是所谓的APM(应用性能管理)。

目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWalking,这里主要介绍一下 SkyWalking ,它是一款优秀的国产 APM 工具,包括了分布式追踪、性能指标分析、应用和服务依赖分析等。

下面是 SkyWalking 5.x 的架构图,6.x 会有些变化,目前还没有 Release。

SkyWalking 分布式追踪系统

说明:通过在应用程序中添加 SkyWalking Agent,就可以将接口、服务、数据库、MQ等进行追踪,将追踪结果通过 HTTP 或 gRPC 发送到 SkyWalking Collecter,SkyWalking Collecter 经过分析和聚合,将结果存储到 Elasticsearch 或 H2,SkyWalking 同时提供了一个 SkyWalking UI 的可视化界面,UI 以 GraphQL + HTTP 方式获取存储数据进行展示。

上面的架构图看似模块有点多,但在实际使用时我们并不需要关注太多的实现方式,HTTP、gRPC 、GraphQL 这些都是其内部架构使用到的技术,我们只需安装 SkyWalking Collecter、Elasticsearch 或 H2,然后在需要追踪的服务内配置少量的代码(Java 项目通过修改 JVM 参数即可),最后通过 SkyWalking UI 查看结果。

下面基于 Windows 环境使用 SkyWalking-netcore 来介绍一下 SkyWalking,可以把 SkyWalking-netcore 是 SkyWalking 的 .NET Core Agent。

环境要求

  1. JDK8+
  2. Elasticsearch 5.x
  3. 8080,10800,11800,12800 端口不被占用

Elasticsearch下载安装 参考官方教程, 安装完成后需要对 config/elasticsearch.yml 做如下修改:

# 修改
# 如果 cluster.name 不设置为 CollectorDBCluster ,则需要修改 SkyWalking 的配置文件
cluster.name: CollectorDBCluster   
network.host: 0.0.0.0
# 增加
thread_pool.bulk.queue_size: 1000

如果是 linux 环境,Elasticsearch 安装可能没有那么顺利,请参考 Linux 环境下安装 Elasticsearch 5.x、6.x 问题汇总

下载 SkyWalking

SkyWalking 个人建议直接下载官方编译好的, 下载地址

启动 SkyWalking

SkyWalking 分布式追踪系统

config/application.yml 内有所有的默认配置,可以发现默认是使用 Elasticsearch 进行数据存储的,所以在启动 SkyWalking 之前,确保 Elasticsearch 已启动。

SkyWalking 的启动包括两部分,一个是 SkyWalking Collector ,一个是 SkyWalking UI,SkyWalking 解压后的 bin 目录:

SkyWalking 分布式追踪系统

bat 为 windows 环境使用,sh 为 linux 环境使用,我们可以分别其他 collectorService 和 webappService,也可以通过 startup 一次性全部启动,从 startup 中的命令可以知道其实就是分别启动 collectorService 和 webappService。

如果一切顺利( 不顺利请多看几遍 快速入门 ),这时候就可以通过 http://localhost:8080 来查看 SkyWalking UI 了(默认全是0,截图是测试效果),默认账号/密码:admin/admin。

SkyWalking 分布式追踪系统

Java 项目接入

参考 部署 skywalking javaagent ,skywalking-agent.jar 位于下载包的 agent 目录下,具体效果这里就不测试了

SkyWalking 分布式追踪系统

.NET Core 项目接入

参考 skywalking-netcore

新建一个.NET Core API 项目,安装 Nuget 包:

Install-Package SkyWalking.AspNetCore

修改 Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    //......
    services.AddSkyWalking(option =>
    {
        option.ApplicationCode = "WebAPIService1";
        option.DirectServers = "localhost:11800";
    });
}

这时候启动程序,请求的追踪结果就会被记录下来,通过 SkyWalking UI 查看

SkyWalking 分布式追踪系统

单个服务的效果并不明显,看不出请求跨度、链路关系,下面是一个多服务的例子( 下载源码 ),依赖关系图如下:

SkyWalking 分布式追踪系统

目前 SkyWalking 的 .NET Core Agent 支持通过 HttpClient 发送的请求和 通过 EntityFramework 进行数据库操作的跟踪,其他的作者在支持的路上。根据以上的关系图搭建好项目后,访问接口后结果如下:

SkyWalking 分布式追踪系统

一共有4各跨度,先访问 WenAPIService1,然后发送 HttpClient 请求,转到 WenAPIService2,WenAPIService2 执行操作 DB 的命令,每个跨度的耗时一目了然。

SkyWalking 分布式追踪系统

服务关系的拓扑图,调用链路径也非常清晰。

SkyWalking UI 使用上并不复杂,搭建好之后每个操作使用一下就了解了。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

个性化网页设计与鉴赏

个性化网页设计与鉴赏

梁景红 / 西安电子科技大学出版社 / 2003-07-14 / 22.00

本书比较全面地介绍了网页设计应注意的相关问题, 在网页设计基础方面着重讲解了网页框架、页面元素、色彩设计,分析了一些人们容易忽视的细小环节,如页面装饰物、图片、文字、连接等。书中结合实例分析了优秀网页的设计创意思想,可以给读者提供一些启示。书中还介绍了作为网页设计者需要了解的信息管理和技术应用,以及网站VI设计和视觉美学等必要知识,读者可针对各种类别的站点具体实践这些知识,寻找进行网页设计的切入点......一起来看看 《个性化网页设计与鉴赏》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具