位置: IT常识 - 正文

微服务组件---- Spring Cloud Alibaba 链路追踪 skywalking 详解(springcloud分布式微服务组件)

编辑:rootadmin
skywalking是什么 【1】skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统,提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。 【2 ... skywalking是什么

推荐整理分享微服务组件---- Spring Cloud Alibaba 链路追踪 skywalking 详解(springcloud分布式微服务组件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:微服务组件及作用,微服务组件使用总结,微服务组件使用总结,微服务组件,springcloud分布式微服务组件,微服务组件,Alibaba微服务组件,Alibaba微服务组件,内容如对您有帮助,希望把文章链接给更多的朋友!

【1】skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统,提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。

【2】主要流程为 采集数据——》传输数据——》存储数据——》分析数据——》监控报警 。

Skywalking整体架构

【1】图示:

  

【2】整个架构分成四部分:

  1.上部分Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器;

  2.下部分 SkyWalking OAP :负责接收Agent发送的Tracing数据信息,然后进行分析(Analysis Core),存储到外部存储器(Storage),最终提供查询(Query)功能;

  3.右部分Storage:Tracing数据存储,目前支持ES、MySQL、Sharding Sphere、TiDB、H2多种存储器,目前采用较多的是ES,主要考虑是SkyWalking开发团队自己的生产环境采用ES为主;

  4.左部分SkyWalking UI:负责提供控制台,查看链路等等;

SkyWalking中三个概念【搭建的话可以看 skywalking的搭建笔记】

【1】服务(Service) :表示对请求提供相同行为的一系列或一组工作负载,在使用Agent时,可以定义服务的名字;

【2】服务实例(Service Instance) :上述的一组工作负载中的每一个工作负载称为一个实例, 一个服务实例实际就是操作系统上的一个真实进程;

【3】端点(Endpoint) :对于特定服务所接收的请求路径, 如HTTP的URI路径和gRPC服务的类名 + 方法签名;

SkyWalking的简单使用

【1】通过jar包方式接入

  1)编辑startup.sh脚本启动

#!/bin/sh# SkyWalking Agent配置export SW_AGENT_NAME=springboot-skywalking-demo #Agent名字,一般使用`spring.application.name`export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 #配置 Collector 地址。export SW_AGENT_SPAN_LIMIT=2000 #配置链路的最大Span数量,默认为 300。export JAVA_AGENT=-javaagent:/root/skywalking-agent/skywalking-agent.jarjava $JAVA_AGENT -jar springboot-skywalking-demo-0.0.1-SNAPSHOT.jar #jar启动

  2)java命令启动

java -javaagent:/root/skywalking-agent/skywalking-agent.jar-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 -DSW_AGENT_NAME=springboot-skywalking-demo -jar springboot-skywalking-demo-0.0.1-SNAPSHOT.jar

  3)在IDEA中使用Skywalking

在运行的程序配置jvm参数-javaagent:E:\SpringCloudAlibaba\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar -DSW_AGENT_NAME=springboot-skywalking-demo -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800微服务组件----  Spring Cloud Alibaba  链路追踪 skywalking 详解(springcloud分布式微服务组件)

【2】自定义SkyWalking链路追踪【希望对项目中的业务方法,实现链路追踪,方便我们排查问题】

  1)引入依赖

<!-- SkyWalking 工具类 --><dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>8.11.0</version></dependency>

  2)在业务方法中可以TraceContext获取到traceId

@RequestMapping("/list")public List<User> list(){ //TraceContext可以绑定key-value TraceContext.putCorrelation("name", "fox"); Optional<String> op = TraceContext.getCorrelation("name"); log.info("name = {} ", op.get()); //获取追踪的traceId String traceId = TraceContext.traceId(); log.info("traceId = {} ", traceId); return userService.list();}

  3)注解@Trace将方法加入追踪链路

  4)注解@Tags或@Tag为追踪链路增加其他额外的信息,比如记录参数和返回信息。实现方式:在方法上增加@Tag或者@Tags,示例:

@Trace@Tag(key = "list", value = "returnedObj")public List<User> list(){ return userMapper.list();}@Trace@Tags({@Tag(key = "param", value = "arg[0]"), @Tag(key = "user", value = "returnedObj")})public User getById(Integer id){ return userMapper.getById(id);}SkyWalking的数据持久化

【1】基于mysql持久化

  1)修改config目录下的application.yml

storage: #选择使用mysql 默认使用h2,不会持久化,重启skyWalking之前的数据会丢失 selector: ${SW_STORAGE:mysql} #使用mysql作为持久化存储的仓库 mysql: properties: #数据库连接地址 创建swtest数据库 jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://1ocalhost:3306/swtest"} #用户名 dataSource.user: ${SW_DATA_SOURCE_USER:root} #密码 dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root}

  2)添加mysql数据驱动包到oap-libs目录下【注意:需要添加mysql数据驱动包,因为在lib目录下是没有mysql数据驱动包的,所以修改完配置启动是会报错,启动失败的。】

  3)启动Skywalking【查看swtest数据库,可以看到生成了很多表,那么就代表成功了】

【2】基于elasticsearch持久化

  1)修改config目录下的application.yml

storage: selector: ${SW_STORAGE:elasticsearch} //指定ES作为存储 elasticsearch: nameSpace: ${SW_NAMESPACE:"myProject-"} //指定命名空间,用于生成索引前缀 clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200} //配置集群节点,当然可以采用负载均衡【然后把负载均衡的服务器ip与端口写入】,但也可以把节点都写进去 user: ${SW_ES_USER:"myes"} //es的用户名 password: ${SW_ES_PASSWORD:"123456"} //es的密码

  2)启动Skywalking服务

    启动时会向elasticsearch中创建大量的index索引用于持久化数据,启动应用程序,查看追踪数据是否已经持久化到elasticsearch的索引中,然后重启skywalking,验证追踪数据会不会丢失

Skywalking告警通知

【1】skywalking告警的核心由一组规则驱动,这些规则定义在config/alarm-settings.yml文件中,告警规则的定义分为三部分:

1.告警规则:它们定义了应该如何触发度量警报,应该考虑什么条件;2.网络钩子(Webhook}:当警告触发时,哪些服务终端需要被通知;3.gRPC钩子:远程gRPC方法的主机和端口,告警触发后调用;

【2】skywalking发行版中提供了默认的alarm-setting.yml文件,包括一些规则,每个规则有英文注释。

  1)可以根据注释得知每个规则的作用:

# Sample alarm rules.rules: # Rule unique name, must be ended with `_rule`. service_resp_time_rule: metrics-name: service_resp_time op: ">" threshold: 1000 period: 10 count: 3 silence-period: 5 #在最近10分钟的3分钟内服务平均响应时间超过1000ms message: Response time of service {name} is more than 1000ms in 3 minutes of last 10 minutes. service_sla_rule: # Metrics value need to be long, double or int metrics-name: service_sla op: "<" threshold: 8000 # The length of time to evaluate the metrics period: 10 # How many times after the metrics match the condition, will trigger alarm count: 2 # How many times of checks, the alarm keeps silence after alarm triggered, default as same as period. silence-period: 3 #最近10分钟内,服务成功率在2分钟内低于80% message: Successful rate of service {name} is lower than 80% in 2 minutes of last 10 minutes service_resp_time_percentile_rule: # Metrics value need to be long, double or int metrics-name: service_percentile op: ">" threshold: 1000,1000,1000,1000,1000 period: 10 count: 3 silence-period: 5 message: Percentile response time of service {name} alarm in 3 minutes of last 10 minutes, due to more than one condition of 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 #服务实例的响应时间在过去10分钟的2分钟内超过1000ms message: Response time of service instance {name} is more than 1000ms in 2 minutes of last 10 minutes database_access_resp_time_rule: metrics-name: database_access_resp_time threshold: 1000 op: ">" period: 10 count: 2 #数据库访问{name}的响应时间在过去10分钟的2分钟内超过1000ms message: Response time of database access {name} is more than 1000ms in 2 minutes of last 10 minutes endpoint_relation_resp_time_rule: metrics-name: endpoint_relation_resp_time threshold: 1000 op: ">" period: 10 count: 2 #端点关系{name}的响应时间在过去10分钟的2分钟内超过1000ms message: Response time of endpoint relation {name} is more than 1000ms in 2 minutes of last 10 minutes# Active endpoint related metrics alarm will cost more memory than service and service instance metrics alarm.# Because the number of endpoint is much more than service and instance.## endpoint_avg_rule:# metrics-name: endpoint_avg# op: ">"# threshold: 1000# period: 10# count: 2# silence-period: 5# message: Response time of endpoint {name} is more than 1000ms in 2 minutes of last 10 minutes#需要自己手动打开webhooks: - http://127.0.0.1/notify/ # - http://127.0.0.1/go-wechat/

  2)参数说明:

metrics-name:度量名称,也是OAL脚本中的度量名。默认配置中可以用于告警的度量有:服务,实例,端点,服务关系,实例关系,端点关系。它只支持long,double和int类型。op:操作符。threshold:阈值。period:多久告警规则需要被检查一下。这是一个时间窗口,与后端部署环境时间相匹配。count:在一个周期窗口中,如果按op计算超过阈值的次数达到count,则发送告警silence-period:在时间N中触发报警后,在N -> N + silence-period这段时间内不告警。message:该规则触发时,发送的通知消息。

【3】实现回调接口

@RequestMapping("/notify")public String notify(@RequestBody Object obj){ //TODO 告警信息,给技术负责人发短信,钉钉消息,邮件,微信通知等 System.err.println(obj.toString()); return "notify successfully";}

【4】接入第三方告警,如对接钉钉(官方还提供了其他第三方的对接,文档地址:https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/backend-alarm.md)

dingtalkHooks: textTemplate: |- { "msgtype": "text", "text": { "content": "Apache SkyWalking Alarm: \n %s." } } webhooks: - url: https://oapi.dingtalk.com/robot/send?access_token=dummy_token secret: dummysecret

【5】Webhook回调通知

  SkyWalking告警Webhook回调要求接收方是一个Web容器(比如tomcat服务),告警的消息会通过HTTP请求进行发送, 请求方法为POST, Content-Type为application/json, JSON格式基于List<org.apache.skywalking.oap.server.core.alarm.AlarmMessage>的集合对象数据, 集合中的每个AlarmMessage包含以下信息:

scopeId. 所有可用的Scope,参考:org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;name. 目标 Scope 的实体名称;id0. Scope 实体的 ID;id1. 未使用;ruleName. 在 alarm-settings.yml 中配置的规则名;alarmMessage. 报警消息内容;startTime. 告警时间, 位于当前时间与 UTC 1970/1/1 之间;skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统,提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
本文链接地址:https://www.jiuchutong.com/zhishi/311623.html 转载请保留说明!

上一篇:python中eval如何求解数学表达式?(python里eval的用法)

下一篇:c语言中typedef和define的区别(c语言typedef的用法)

  • 抖音发的视频播放量为0(抖音发的视频播放量不过百)

    抖音发的视频播放量为0(抖音发的视频播放量不过百)

  • 微信天天被拉进群怎么办(微信不停的被拉进群)

    微信天天被拉进群怎么办(微信不停的被拉进群)

  • 抖音草稿怎么再次剪辑(抖音草稿怎么再编辑一遍)

    抖音草稿怎么再次剪辑(抖音草稿怎么再编辑一遍)

  • 苹果手机录视频抖动是什么原因(苹果手机录视频怎么美颜拍摄)

    苹果手机录视频抖动是什么原因(苹果手机录视频怎么美颜拍摄)

  • bm21电池是什么型号手机(b-m2电池是什么型号)

    bm21电池是什么型号手机(b-m2电池是什么型号)

  • 电脑显示屏亮了但没画面(电脑显示屏亮了但是鼠标没反应怎么回事儿)

    电脑显示屏亮了但没画面(电脑显示屏亮了但是鼠标没反应怎么回事儿)

  • 苹果facetime什么意思(苹果facetime干嘛用的)

    苹果facetime什么意思(苹果facetime干嘛用的)

  • 手机原装屏和非原装屏有什么区别(手机原装屏和非原装区别)

    手机原装屏和非原装屏有什么区别(手机原装屏和非原装区别)

  • 抖音右下角出现好友头像啥意思(抖音右下角出现好友头像和私信是什么意思)

    抖音右下角出现好友头像啥意思(抖音右下角出现好友头像和私信是什么意思)

  • 21寸显示器长宽多少(21寸显示器长宽多少厘米)

    21寸显示器长宽多少(21寸显示器长宽多少厘米)

  • 华为nova2plus有录屏功能吗(华为nova2plus的录音在哪里)

    华为nova2plus有录屏功能吗(华为nova2plus的录音在哪里)

  • 外屏坏了有哪些现象(外屏坏了有哪些表现)

    外屏坏了有哪些现象(外屏坏了有哪些表现)

  • 手机红外线有什么用(手机红外线有什么)

    手机红外线有什么用(手机红外线有什么)

  • 网易云怎么自定义壁纸(网易云怎么自定义背景图)

    网易云怎么自定义壁纸(网易云怎么自定义背景图)

  • 苹果x怎么调震动(苹果x如何调震动)

    苹果x怎么调震动(苹果x如何调震动)

  • 淘宝成就在哪里看(淘宝 成就)

    淘宝成就在哪里看(淘宝 成就)

  • 手机怎么设置无法接通状态(手机怎么设置无痕上网)

    手机怎么设置无法接通状态(手机怎么设置无痕上网)

  • 一加7tpro防水吗(一加7p防水么)

    一加7tpro防水吗(一加7p防水么)

  • 怎么在饿了么给外省点外卖(饿了么怎么给别人付钱)

    怎么在饿了么给外省点外卖(饿了么怎么给别人付钱)

  • 手机回收站在哪里找(∨ivo手机回收站在哪)

    手机回收站在哪里找(∨ivo手机回收站在哪)

  • 宽带是什么(宽带是什么意思sm)

    宽带是什么(宽带是什么意思sm)

  • 三星a7应用分身怎么用(三星s7应用分身)

    三星a7应用分身怎么用(三星s7应用分身)

  • 安卓root在哪里打开(安卓root权限)

    安卓root在哪里打开(安卓root权限)

  • 号码停机多久被注销(号码停机多久被注销掉)

    号码停机多久被注销(号码停机多久被注销掉)

  • WPS文字如何插入图表(wps中怎么添加文字)

    WPS文字如何插入图表(wps中怎么添加文字)

  • 苹果手机系统升级教程(苹果手机系统升级后电量消耗快)

    苹果手机系统升级教程(苹果手机系统升级后电量消耗快)

  • 关闭动态磁贴(怎么关闭磁贴模式)

    关闭动态磁贴(怎么关闭磁贴模式)

  • 栀子花叶子发黄怎么办?(栀子花叶子发黄是什么原因)

    栀子花叶子发黄怎么办?(栀子花叶子发黄是什么原因)

  • Vite + Vue2 + Vuetify2 + <script setup> + TypeScript 搭配开发项目

    Vite + Vue2 + Vuetify2 + <script setup> + TypeScript 搭配开发项目

  • 红冲去年暂估的费用怎么做账
  • 纳税申报表保留几年
  • u8已记账怎么修改年初余额
  • 公司两年账没做
  • 所得税退税怎么办
  • 发票可不可以部分冲红
  • 企业所得税预缴少申报案例
  • 现金流量为负的隐患
  • 固定资产处置后账务处理
  • 无形资产计税依据
  • 过路费认证用去哪里认证
  • 收购别人的公司要具备什么条件
  • 建安企业个人所得税
  • 银行存款转存利息一样吗
  • 培训发生的差旅费的会计准则有哪些
  • 出口退税企业退税时间
  • 向投资者借款做在什么科目
  • 补开发票怎么做分录?
  • 累计折旧借贷方向分录
  • 代收代付如何进行账务处理?
  • 税务局加强企业所得税管理
  • 注销时留抵税额不能退怎么做分录
  • 劳务费可以开吗
  • 买入返售金融资产是资产还是负债
  • 股权收购特殊性税务处理案例
  • 股东认缴和实缴不一致
  • 应交税费年末账务处理
  • 代开专票计提附加税吗
  • 购买现金支票的工本费计入什么科目
  • Windows11更新后无法联网
  • qqexternal.exe是什么进程如何删除(CPU的使用率在90%)
  • Linux下使用quota命令管理磁盘空间的实例教程
  • 利用php计算1+2+3+...+100
  • 没有发票的成本怎么算
  • 单位购买降暑用品
  • 企业收到海河工厂发运的乙材料,并验收入库
  • vue项目创建流程
  • 低值易耗品摊销表格
  • 刚购入的固定资产怎么算
  • ai图片生成矢量图
  • github账号在哪里看
  • 新手入门指南
  • PyTorch深度学习实战 | 神经网络的优化难题
  • 苗木增值税税率
  • 酒店收取电费合理吗
  • 公司注销后如何追缴税款
  • 商铺转让费的会计分录
  • 企业低值易耗品的摊销方法有
  • 抵扣联和发票联算一张发票吗
  • 无票收入要交企业所得税吗
  • 母公司无偿给子公司房屋使用谁交房产税呢
  • 增值税留抵税额借贷方向
  • 在建工程的人工费进行了全员申报后,清算时怎么处理?
  • 预缴的所得税怎么申请退税
  • 补开以前年度发票
  • 建筑安装企业外雇施工人员劳务费用什么做支付凭证
  • 暂估入库产品销售结转成本
  • 职工教育经费的差旅费可以抵扣吗
  • 深入理解中国式现代化论文
  • 删除重复记录mysql
  • sql触发器使用存储过程
  • 写出linux安装的详细步骤
  • windows防火墙无法更改某些设置错误代码0×80070422
  • win7如何打开windows功能
  • win81怎么取消开机密码
  • windows8.
  • win7系统怎么修改开机密码
  • 铁嘴王指什么动物
  • unity3d ngui-TweenRotation翻牌动画
  • opengl cullface
  • js里写css
  • jquery each return
  • android_zh
  • 数据库的列名是什么
  • 高仿微信本地图片违法吗
  • 安卓自动登录应用程序
  • 电子原理图实例讲解
  • pycharm使用教程2022
  • 财税指什么
  • 在外地买车在青岛能买吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设