Skywalking链路追踪

目录

  • 一、简介
    • 1.1、APM系统
    • 1.2、SkyWalking 简介
  • 二、快速入门
    • 2.1、下载、启动
    • 2.2、界面认识
  • 三、持久化存储
  • 四、告警通知
  • 五、自定义追踪-细粒度追踪service方法

一、简介

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项目
在这里插入图片描述
还要再下载 agent,skywalking apm是服务端,agent才是真正监控应用的探针。

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

在这里插入图片描述

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

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

1、启动apm系统:

window直接进入apm项目里面bin目录下的startup.bat文件,linux 则执行 sh startup.sh
在这里插入图片描述
修改启动端口:进入webapp目录下,修改yml文件
在这里插入图片描述

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

在这里插入图片描述

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配置

在这里插入图片描述

项目启动完毕,再次刷新http://localhost:8080/,apm项目,就可以看到服务注册进来了
在这里插入图片描述
微服务启动就是,每个服务也都写上那个配置即可,需要更换名称。

如果报下面错误,则可以将classpath更换成JAR manifest
在这里插入图片描述

在这里插入图片描述

2.2、界面认识

在这里插入图片描述

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

在这里插入图片描述

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

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

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

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

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

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

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

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

在这里插入图片描述
Topology 鼠标放上去即可看到每个链路的耗时。
在这里插入图片描述Trace 可以追踪每个节点的信息和耗时
在这里插入图片描述在这里插入图片描述还有很多界面,大家自己点点,可以监控很多有用的信息

在这里插入图片描述
微服务使用,路由追踪,需要找到自己项目的gateway版本,在optional-plugins的两个jar包复制到plugins里面,在路由追踪才会显示网关

在这里插入图片描述

三、持久化存储

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

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

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

在这里插入图片描述
验证es启动成功
在这里插入图片描述更改skywalking-apm项目config下的application.yml,更换使用存储连接方式,如果使用mysql,需要将mysql数据库驱动包拷贝到 oap-libs 目录下才可以

在这里插入图片描述
重启下服务即可

四、告警通知

可以通过修改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_timeop: ">"threshold: 1000period: 10count: 3silence-period: 5message: 服务 {name} 的响应时间在过去的10分钟内超过1000毫秒的次数达到3次。# 服务SLA告警规则service_sla_rule:metrics-name: service_slaop: "<"threshold: 8000period: 10count: 2silence-period: 3message: 服务 {name} 的成功率在过去的10分钟内低于80%的次数达到2次。# 服务响应时间百分位数告警规则service_resp_time_percentile_rule:metrics-name: service_percentileop: ">"threshold: 1000,1000,1000,1000,1000period: 10count: 3silence-period: 5message: 服务 {name} 的百分位数响应时间在过去的10分钟内超过1000毫秒的次数达到3次,其中包括p50 > 1000, p75 > 1000, p90 > 1000, p95 > 1000, p99 > 1000。# 服务实例响应时间告警规则service_instance_resp_time_rule:metrics-name: service_instance_resp_timeop: ">"threshold: 1000period: 10count: 2silence-period: 5message: 服务实例 {name} 的响应时间在过去的10分钟内超过1000毫秒的次数达到2次。# 数据库访问响应时间告警规则database_access_resp_time_rule:metrics-name: database_access_resp_timethreshold: 1000op: ">"period: 10count: 2message: 数据库访问 {name} 的响应时间在过去的10分钟内超过1000毫秒的次数达到2次。# 端点关系响应时间告警规则endpoint_relation_resp_time_rule:metrics-name: endpoint_relation_resp_timethreshold: 1000op: ">"period: 10count: 2message: 端点关系 {name} 的响应时间在过去的10分钟内超过1000毫秒的次数达到2次。webhooks:# 配置Webhooks的URL,告警的时候,可以调用下面的接口去告警- http://127.0.0.1/notify/- http://127.0.0.1/go-wechat/

自定义告警接口:

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

在这里插入图片描述

在这里插入图片描述

五、自定义追踪-细粒度追踪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方法也被收集到了,方法耗时也能一目了然。
在这里插入图片描述
点击方法查看详情,name,address,token以及traceId参数也都全部被统计收集上来了。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/631501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VR风景园林虚拟仿真系统编辑工具支持可视化预览成本低

为了帮助更多人快速、高效地构建虚拟现实应用系统&#xff0c;提高开发效率&#xff0c;降低成本投入&#xff0c;VR虚拟现实交互系统编辑器作为一种用于创建和编辑虚拟现实应用程序的工具&#xff0c;采用可视化界面提示和简单操作就能快速制作VR虚拟现实交互系统。 VR虚拟现实…

使用jackson对java类中包含泛型属性的bean进行序列化和反序列化

最近在做项目时&#xff0c;需要对java的bean对象进行序列化转换为string字符串后&#xff0c;存入redis&#xff0c;然后再从redis中读取该string对象&#xff0c;反序列化为bean对象。正常的简单类型的对象使用jackson可以非常方便进行互为转换操作&#xff0c;但我们操作的对…

Qt OpenGL - 网格式的直角坐标系

Qt OpenGL - 网格式的直角坐标系 引言一、绘制3D网格1.1 绘制平行于y轴的线段1.2 绘制平行于三个轴的线段1.3 绘制不同的3D网格 二、网格式的直角坐标系三、参考链接 引言 在OpenGL进行3D可视化&#xff0c;只绘制三条坐标轴略显单薄&#xff0c;而绘制网格形式的坐标系则能更清…

leedcode刷题笔记day1

题目大意&#xff1a; 暴力解法 两个for循环&#xff08;也是我一看到题目想到的方法&#xff09; 枚举在数组中所有的不同的两个下标的组合逐个检查它们所对应的数的和是否等于 target 复杂度分析 时间复杂度:O(n2)&#xff0c;这里 n 为数组的长度 空间复杂度:O(1)&#x…

canvas绘制不同样式的五角星(图文示例)

查看专栏目录 canvas实例应用100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

Windows无法格式化U盘怎么办?

U盘通常用于保存数据。有时&#xff0c;您可能需要格式化以擦除硬盘或修复错误等。通常&#xff0c;格式化过程可以通过Windows文件资源管理器、磁盘管理或Diskpart命令顺利进行&#xff0c;但有时会遇到Windows无法格式化U盘的情况。那么&#xff0c;Windows无法格式化U盘怎么…

uni-app的数据缓存

数据缓存uni.setStorage 将数据存储在本地缓存中指定的 key 中&#xff0c;会覆盖掉原来该 key 对应的内容&#xff0c;这是一个异步接口。 参数名类型必填说明keyString是本地缓存中的指定的 keydataAny是需要存储的内容&#xff0c;只支持原生类型、及能够通过 JSON.string…

程序员第一次接私活需要注意什么?

终于有一篇只说大白话的程序员接私活指南文章了&#xff01;程序员接私活&#xff0c;首先要关注合法和合理性 先来说合法性&#xff0c;这是程序员接私活的基本原则。不合规的产品不要做&#xff0c;不合法的需求不要做&#xff0c;原以为自己在赚钱&#xff0c;结果搞了半天啥…

1.2 虚拟环境

1.2 虚拟环境 创建好应用目录之后&#xff0c;接下来该安装Flask了。安装Flask最便捷的方法是使用虚拟环境。 虚拟环境是Python解释器的一个私有副本&#xff0c;在这个环境中你可以安装私有包&#xff0c;而且不会影响系统中安装的全局Python解释器。 虚拟环境非常有用&…

Docker registry镜像仓库,私有仓库及harbor管理详解

目录 registry镜像仓库概述 Docker 镜像仓库&#xff08;Docker Registry&#xff09;&#xff1a; registry 容器&#xff1a; 私有仓库概述 搭建本地私有仓库示例 Harbor概述 harbor架构 详解构成 Harbor由容器构成 Harbor部署示例 环境准备 部署Docker-Compose服…

(2023版)斯坦福CS231n学习笔记:DL与CV教程 (4) | 神经网络与反向传播

前言 &#x1f4da; 笔记专栏&#xff1a;斯坦福CS231N&#xff1a;面向视觉识别的卷积神经网络&#xff08;23&#xff09;&#x1f517; 课程链接&#xff1a;https://www.bilibili.com/video/BV1xV411R7i5&#x1f4bb; CS231n: 深度学习计算机视觉&#xff08;2017&#xf…

1月18日代码随想录二叉树搜索、验证二叉搜索树

700.二叉搜索树中的搜索 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在&#xff0c;则返回 null 。 示例 1: 输入&#xff1a;root [4,2,7,1,3], val …

医院网络安全建设:三网整体设计和云数据中心架构设计

医院网络安全问题涉及到医院日常管理多个方面&#xff0c;一旦医院信息管理系统在正常运行过程中受到外部恶意攻击&#xff0c;或者出现意外中断等情况&#xff0c;都会造成海量医疗数据信息的丢失。由于医院信息管理系统中存储了大量患者个人信息和治疗方案信息等&#xff0c;…

【ArcGIS微课1000例】0088:计算城市建筑物朝向(矩形角度)

文章目录 一、实验描述二、实验数据三、角度计算1. 添加字段2. 计算角度四、方向计算一、实验描述 矩形要素具有长轴和短轴,其长轴方向也称为矩形面的主角度,可用于确定面要素的走向趋势。根据该方向参数,可以对具有矩形特征的地理对象进行方向分析,且适用于很多应用场景,…

什么是NodeJS

1、前言 接触 node.js 有好几年了&#xff0c;也开发了好几个项目了&#xff1b;但每次提起 node.js&#xff0c;始终不敢说自己入门了&#xff0c;归其原因&#xff0c;大概就是如下所示 为了进一步加强理解&#xff0c;系统的梳理相关知识以作备忘&#xff0c;本节将从以下…

视频转码实例:把MP4转为MKV视频,一键批量转换的操作方法

在数字媒体时代&#xff0c;视频格式的多样性是不可避免的。经常把MP4格式的视频转换为MKV格式。MKV格式有较高的音频和视频质量&#xff0c;能在其他设备或软件上播放视频。以下是云炫AI智剪如何把MP4视频转为MKV格式的一键批量转换操作方法。 已转码的mkv视频效果缩略图展示…

20240117在本地机器识别OCR法语电影的字幕效果PK

20240117在本地机器识别OCR法语电影的字幕效果PK 2024/1/17 11:18 1959 - Jirai Cracher Sur Vos Tombes [Gast, Vian].avi https://www.pianbar.net//drama/52892.html 1959[我唾弃你的坟墓]Jirai cracher sur vos tombes[BT下载/迅雷下载] magnet:?xturn:btih:7c9c99d9d048…

Elasticsearch各种高级文档操作

本文来记录下Elasticsearch各种文档操作 文章目录 初始化文档数据查询所有文档匹配查询文档关键字精确查询文档多关键字精确查询文档字段匹配查询文档指定查询字段查询文档过滤字段查询文档概述指定想要显示的字段示例指定不想要显示的字段示例 组合查询文档范围查询文档概述使…

微服务入门 | 项目分割 | 远程调度Feign | 用户中心erueka 和 nacos

认识微服务 微服务架构演变&#xff1a; 单体架构&#xff1a;所有功能集中在一个项目中开发&#xff0c;打成一个包部署 分布式架构&#xff1a;就是各功能模块的代码不在同一个项目中写了&#xff0c;到时候修改其中一个过能的代码&#xff0c;对另一个功能完全没有任何影响…

循环异步调取接口使用数组promiseList保存,Promise.all(promiseList)获取不到数组内容,then()返回空数组

在使用 vue vant2.13.2 技术栈的项目中&#xff0c;因为上传文件的接口是单文件上传&#xff0c;当使用批量上传时&#xff0c;只能循环调取接口&#xff1b;然后有校验内容&#xff1a;需要所有文件上传成功后才能保存&#xff0c;在文件上传不成功时点击保存按钮&#xff0c…