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基本知识,Skywalking基于docke安装,SpringBoot工程集成Skywalking 服务监控需要满足的三要素分别如下: 日志监控 指标

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

    SkyWalking链路追踪中span全解

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

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

    SkyWalking分布式链路追踪学习

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

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

    微服务链路追踪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日
    浏览(13)
  • SkyWalking链路追踪-技术文档首页

    SkyWalking链路追踪-技术文档首页

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

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

    分布式链路追踪之SkyWalking

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

    2023年04月20日
    浏览(13)
  • 分布式链路追踪专栏,分布式链路追踪:Skywalking集群管理设计

    分布式链路追踪专栏,分布式链路追踪:Skywalking集群管理设计

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

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

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

    2024年02月15日
    浏览(9)
  • 微服务链路追踪SkyWalking的介绍和部署

    微服务链路追踪SkyWalking的介绍和部署

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

    2024年02月10日
    浏览(12)
  • 第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日
    浏览(9)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包