Skywalking链路追踪

这篇具有很好参考价值的文章主要介绍了Skywalking链路追踪。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、简介

1.1、APM系统

APM(Application Performance Monitoring)系统是一种用于监控和管理应用程序性能的工具。它可以帮助开发人员和运维团队实时监控应用程序的性能指标、识别潜在的性能问题,并提供性能优化建议。

APM系统可以帮助用户及时发现和解决应用程序的性能问题,提升用户体验和系统稳定性。它可以应用于各种类型的应用程序,包括Web应用、移动应用、微服务架构等。

1.2、SkyWalking 简介

SkyWalking是一个开源的应用性能监控(APM)系统,用于监控和管理分布式系统的性能。它提供了实时的性能指标、事务追踪、服务依赖分析等功能,帮助开发人员和运维团队快速定位和解决性能问题。

SkyWalking的核心功能包括:

  1. 分布式追踪:SkyWalking可以追踪分布式系统中的请求流程,记录每个请求经过的服务和组件,以及请求在每个组件中的耗时情况。通过分析追踪数据,可以了解系统中各个组件之间的调用关系和性能瓶颈,帮助开发人员快速定位和解决问题。

  2. 实时监控:SkyWalking提供实时的性能监控指标,包括各个服务的请求量、响应时间、错误率等。通过监控数据,可以及时发现系统的性能问题,并进行调优和优化。

  3. 服务依赖分析:SkyWalking可以分析系统中各个服务之间的依赖关系,包括调用关系和数据流向。通过可视化的方式展示服务之间的依赖关系,可以帮助开发人员理解系统的架构和流程,从而更好地进行系统设计和优化。

  4. 告警和报警:SkyWalking可以设置各种告警规则,当系统出现异常或性能下降时,可以及时发送告警通知。这样可以帮助运维人员快速响应和解决问题,保证系统的稳定性和可靠性。

  5. 数据可视化:SkyWalking提供丰富的数据可视化功能,可以将监控数据以图表的形式展示,帮助用户更直观地了解系统的性能和运行情况。同时,还可以根据需求自定义仪表盘,将关键指标集中展示,方便用户监控和管理系统。

二、快速入门

2.1、下载、启动

前提:要有java环境

下载链接: https://skywalking.apache.org/downloads/

我这边使用9.3版本的apm项目
Skywalking链路追踪,skywalking,信息可视化
还要再下载 agent,skywalking apm是服务端,agent才是真正监控应用的探针。

这里是监控java服务,所以下载的是java agent,如果是前端可以下载 javaScript

Skywalking链路追踪,skywalking,信息可视化

还需要再下载elasticsearch,用于存储记录

下载链接: https://www.elastic.co/cn/downloads/elasticsearch

1、启动apm系统:

window直接进入apm项目里面bin目录下的startup.bat文件,linux 则执行 sh startup.sh
Skywalking链路追踪,skywalking,信息可视化
修改启动端口:进入webapp目录下,修改yml文件
Skywalking链路追踪,skywalking,信息可视化

启动后访问 http://localhost:8080

Skywalking链路追踪,skywalking,信息可视化

2、启动agent:

在我们自己的项目上,注意是我们自己开发的项目,不是skywalking的,在启动参数上加上配置:

指定到agent的jar包的位置

-javaagent:D:\code\tool\skywalking-agent\skywalking-agent.jar
-Dskywalking.agent.service_name=skywalking-service
-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

如我在idea上添加VM options配置

Skywalking链路追踪,skywalking,信息可视化

项目启动完毕,再次刷新http://localhost:8080/,apm项目,就可以看到服务注册进来了
Skywalking链路追踪,skywalking,信息可视化
微服务启动就是,每个服务也都写上那个配置即可,需要更换名称。

如果报下面错误,则可以将classpath更换成JAR manifest
Skywalking链路追踪,skywalking,信息可视化

Skywalking链路追踪,skywalking,信息可视化

2.2、界面认识

Skywalking链路追踪,skywalking,信息可视化

点击服务名称,可进入更详细的监控界面

Skywalking链路追踪,skywalking,信息可视化

  1. 概览(Overview):提供整体系统的概览信息,包括各个服务的调用量、成功率、延迟等指标的总览。

  2. 实例(Instance):查询和监控系统中的实例,可以查看每个实例的性能指标、调用情况等信息。

  3. 端点(Endpoint):查询和监控系统中的端点(API、方法等),可以查看每个端点的调用量、成功率、延迟等指标。

  4. 拓扑(Topology):展示系统中各个服务之间的调用关系和依赖关系,可以帮助理解系统的架构和调用流程。

  5. 链路追踪(Trace):查询和监控系统中的请求链路,可以查看每个请求的详细信息,包括调用链路、耗时、异常等。

  6. 链路追踪分析(Trace Profiling):对链路追踪数据进行分析和优化,可以查看每个请求的性能瓶颈、调用路径等信息。

  7. eBPF Profiling:使用eBPF技术对系统进行性能分析和优化,可以查看系统的运行状态、资源使用情况等。

  8. 日志(Log):查询和监控系统的日志信息,可以查看系统的日志记录、异常信息等。

Skywalking链路追踪,skywalking,信息可视化
Topology 鼠标放上去即可看到每个链路的耗时。
Skywalking链路追踪,skywalking,信息可视化Trace 可以追踪每个节点的信息和耗时
Skywalking链路追踪,skywalking,信息可视化Skywalking链路追踪,skywalking,信息可视化还有很多界面,大家自己点点,可以监控很多有用的信息

Skywalking链路追踪,skywalking,信息可视化
微服务使用,路由追踪,需要找到自己项目的gateway版本,在optional-plugins的两个jar包复制到plugins里面,在路由追踪才会显示网关

Skywalking链路追踪,skywalking,信息可视化

三、持久化存储

SkyWalking在默认配置下使用了内存存储(Memory Storage),这意味着数据存储在内存中,并且在重启SkyWalking服务后会丢失。这种配置适用于开发和测试环境,但不适合生产环境。

如果您希望在重启后保留数据,您可以配置SkyWalking使用持久化存储(Persistent Storage),例如使用Elasticsearch、MySQL等数据库作为存储后端。通过将数据存储在持久化存储中,即使在重启SkyWalking服务后,数据也能够得到保留。

我这边存储在Elasticsearch7.10.2,不演示es的下载启动,es启动会有两个默认端口,

Skywalking链路追踪,skywalking,信息可视化
验证es启动成功
Skywalking链路追踪,skywalking,信息可视化更改skywalking-apm项目config下的application.yml,更换使用存储连接方式,如果使用mysql,需要将mysql数据库驱动包拷贝到 oap-libs 目录下才可以

Skywalking链路追踪,skywalking,信息可视化
重启下服务即可

四、告警通知

可以通过修改config文件夹下的alarm-settings.yml文件来配置告警通知。

配置规则:

  1. metrics-name:要监控的指标名称,可以是系统预定义的指标名称,也可以是自定义的指标名称。
  2. op:触发告警的条件操作符,可以是>(大于)、>=(大于等于)、<(小于)、<=(小于等于)等。
  3. threshold:触发告警的阈值,当指标的值满足条件时,触发告警。
  4. period:触发告警的时间窗口大小,单位为分钟。在这个时间窗口内,指标的值会被收集和计算。
  5. count:触发告警的次数阈值,当指标的值在时间窗口内连续超过这个次数时,触发告警。
  6. silence-period:告警的静默期,单位为分钟。在这个静默期内,如果指标的值再次触发告警,不会重复发送告警通知。
  7. message:告警通知的消息内容,可以自定义告警通知的文本信息。

自带配置翻译:

# 示例告警规则
rules:
  # 服务响应时间告警规则
  service_resp_time_rule:
    metrics-name: service_resp_time
    op: ">"
    threshold: 1000
    period: 10
    count: 3
    silence-period: 5
    message: 服务 {name} 的响应时间在过去的10分钟内超过1000毫秒的次数达到3次。

  # 服务SLA告警规则
  service_sla_rule:
    metrics-name: service_sla
    op: "<"
    threshold: 8000
    period: 10
    count: 2
    silence-period: 3
    message: 服务 {name} 的成功率在过去的10分钟内低于80%的次数达到2次。

  # 服务响应时间百分位数告警规则
  service_resp_time_percentile_rule:
    metrics-name: service_percentile
    op: ">"
    threshold: 1000,1000,1000,1000,1000
    period: 10
    count: 3
    silence-period: 5
    message: 服务 {name} 的百分位数响应时间在过去的10分钟内超过1000毫秒的次数达到3次,其中包括p50 > 1000, p75 > 1000, p90 > 1000, p95 > 1000, p99 > 1000。

  # 服务实例响应时间告警规则
  service_instance_resp_time_rule:
    metrics-name: service_instance_resp_time
    op: ">"
    threshold: 1000
    period: 10
    count: 2
    silence-period: 5
    message: 服务实例 {name} 的响应时间在过去的10分钟内超过1000毫秒的次数达到2次。

  # 数据库访问响应时间告警规则
  database_access_resp_time_rule:
    metrics-name: database_access_resp_time
    threshold: 1000
    op: ">"
    period: 10
    count: 2
    message: 数据库访问 {name} 的响应时间在过去的10分钟内超过1000毫秒的次数达到2次。

  # 端点关系响应时间告警规则
  endpoint_relation_resp_time_rule:
    metrics-name: endpoint_relation_resp_time
    threshold: 1000
    op: ">"
    period: 10
    count: 2
    message: 端点关系 {name} 的响应时间在过去的10分钟内超过1000毫秒的次数达到2次。

webhooks:
  # 配置Webhooks的URL,告警的时候,可以调用下面的接口去告警
  - http://127.0.0.1/notify/
  - http://127.0.0.1/go-wechat/

自定义告警接口:

将下面的接口写在 webhooks下即可。

Skywalking链路追踪,skywalking,信息可视化

Skywalking链路追踪,skywalking,信息可视化

五、自定义追踪-细粒度追踪service方法

1、引入依赖:

   <dependency>
      <groupId>org.apache.skywalking</groupId>
      <artifactId>apm-toolkit-trace</artifactId>
      <version>${skywalking.version}</version>
   </dependency>

${skywalking.version} 和你当前使用的SkyWalking版本保持一致

2、注解配置

先在项目中引入依赖,然后再对应的方法上新增上注解。这里我们通过@Tag获取了name,address,token以及traceId参数。

@Trace
@Tags({@Tag(key = "name",value = "arg[0]"),
        @Tag(key = "token",value = "returnedObj.token"),
        @Tag(key = "address",value = "arg[1]"),
        @Tag(key = "traceId",value = "returnedObj.traceId")})
public User doSkyWalkingPluginsV2(String name, String address, int id){
    CachaUser cachaUser = new CachaUser();
    cachaUser.setName(name);
    cachaUser.setAddress(address);
    cachaUser.setId(id);
    String token = TokenUtils.getToken(cachaUser);
    User user = new User();
    user.setAge("18");
    user.setName(name);
    user.setToken(token);
    user.setTraceId(TraceContext.traceId());
    return user;
}

配置完成后,启动服务。通过postman远程调用服务,在skywalking服务页面可以看到,我们trace的doSkyWalkingPluginsV2方法也被收集到了,方法耗时也能一目了然。
Skywalking链路追踪,skywalking,信息可视化
点击方法查看详情,name,address,token以及traceId参数也都全部被统计收集上来了。

Skywalking链路追踪,skywalking,信息可视化文章来源地址https://www.toymoban.com/news/detail-802088.html

到了这里,关于Skywalking链路追踪的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 全网最全的Skywalking链路追踪

    写在前面 :笔者发现目前关于Skywalking的内容很是零散,没有成型的内容,笔者在项目中使用到Skywalking进行埋点分析,下面分三篇来介绍下Skywalking,分别是Skywalking基本知识,Skywalking基于docke安装,SpringBoot工程集成Skywalking 服务监控需要满足的三要素分别如下: 日志监控 指标

    2023年04月08日
    浏览(38)
  • SkyWalking链路追踪-技术文档首页

    SkyWalking链路追踪-融合-spring-boot-cloud-单机环境 之《10 分钟快速搭建spring-boot-cloud整合SkyWalking链路追踪》_一单成的博客-CSDN博客 SkyWalking链路追踪-搭建-spring-boot-cloud-单机环境 之《10 分钟快速搭建 SkyWalking 服务》_一单成的博客-CSDN博客  SkyWalking链路追踪-Collector(收集器)_一单

    2024年02月15日
    浏览(67)
  • SkyWalking分布式链路追踪学习

    实际生产中,面对几十个、甚至成百上千个的微服务实例,如果一旦某个实例发生宕机,如果不能快速定位、提交预警,对实际生产造成的损失无疑是巨大的。所以,要对微服务进行监控、预警,对微服务的调用链路进行监控,迅速定位问题 SkyWalking下载 SkyWalking官网 elastic

    2024年02月07日
    浏览(41)
  • 分布式链路追踪之SkyWalking

      在微服务架构中,一次请求往往涉及到多个模块,多个中间件,多台机器的相互协作才能完成。这一系列调用请求中,有些是串行的,有些是并行的,那么如何确定这个请求背后调用了哪些应用,哪些模块,哪些节点及调用的先后顺序?如何定位每个模块的性能问题?本

    2023年04月20日
    浏览(52)
  • SkyWalking链路追踪中span全解

            在SkyWalking链路追踪中,Span(跨度)是Trace(追踪)的组成部分之一。Span代表一次调用或操作的单个组件,可以是一个方法调用、一个HTTP请求或者其他类型的操作。         每个Span都包含了一些关键的信息,如开始时间、结束时间、耗时、所属的Trace ID、Spa

    2024年02月16日
    浏览(38)
  • 微服务链路追踪SkyWalking学习笔记

    目录 1、skywalking是什么 1.2 链路追踪框架对比 1.3 性能对比 1.4 Skywalking主要功能特性 2、 SkyWalking 环境搭建部署 2.1 下载 SkyWalking   2.2 搭建SkyWalking OAP 服务 2.3 SkyWalking中三个概念 3、 SkyWalking 接入微服务 3.1 linux环境—通过jar包方式接入 3.2 windos环境—在IDEA中使用Sk

    2024年02月14日
    浏览(34)
  • 分布式链路追踪专栏,分布式链路追踪:Skywalking集群管理设计

    SkyWalking 是一个开源 APM 系统,包括针对 Cloud Native 体系结构中的分布式系统的监视,跟踪,诊断功能。核心功能如下: 服务、服务实例、端点指标分析; 根本原因分析,在运行时分析代码; 服务拓扑图分析; 服务,服务实例和端点依赖性分析; 检测到慢速服务和端点; 性

    2024年02月01日
    浏览(78)
  • SkyWalking链路追踪-Collector(收集器)

    SkyWalking的Collector(收集器)是SkyWalking链路追踪的核心组件之一。它负责接收来自各个Agent的追踪数据,并将其存储到数据存储器(如数据库)中。具体来说,Collector提供了一个统一的接口,用于接收和处理从Agent发送过来的数据。 数据接收:Collector提供接口和服务来接收来自

    2024年02月15日
    浏览(42)
  • 第02讲:链路追踪利器,快速上手 SkyWalking

    SkyWalking 环境搭建 在本课时中,我们将安装并体验 SkyWalking 的基本使用,下面是使用到的相关软件包: apache-skywalking-apm-6.2.0.tar.gz 下载地址:https://archive.apache.org/dist/skywalking/6.2.0/ elasticsearch-6.6.1.tar.gz 下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.1.tar.gz ki

    2023年04月10日
    浏览(37)
  • 微服务链路追踪SkyWalking的介绍和部署

    SkyWalking介绍 首先我们要明白一点,在微服务的架构中,为什么要做链路追踪?解决问题的痛点在哪里?其实无外乎是如下几个问题: 如何将整个调用链路串起来,并能够快速定位问题? 如何梳理清楚各个微服务之间的依赖关系? 如何针对各个微服务接口进行性能分折? 如

    2024年02月10日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包