SpringCloud Alibaba实战和源码(7)Skywalking

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

什么是SkyWalking

  Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品,它同时吸收了Zipkin /Pinpoint /CAT 的设计思路。特点是:支持多种插件,UI功能较强,支持非侵入式埋点。目前使用厂商最多,版本更新较快。

  数据存储支持:Elasticsearch、MySQL、H2、TiDB。默认是H2,而且是存到内存。实际我们一般将其存到ES。

主页:http://skywalking.apache.org/
下载:https://skywalking.apache.org/downloads/
github:https://github.com/apache/skywalking
文档:https://github.com/apache/skywalking/tree/master/docs
配置:https://github.com/apache/skywalking/tree/master/docs/en/setup/backend

APM

emsp; APM全称Application Performance Management应用性能管理,目的是通过各种探针采集数据,收集关键指标,同时搭配数据呈现以实现对应用程序性能管理和故障管理的系统化解决方案.

  Zabbix、Premetheus、open-falcon等监控系统主要关注服务器硬件指标与系统服务运行状态等,而APM系统则更重视程序内部执行过程指标和服务之间链路调用情况的监控,APM更有利于深入代码找到请求响应“慢”的根本问题,与Zabbix之类的监控是互补关系 目前市面上开源的APM系统主要有CAT、Zipkin、Pinpoint、SkyWalking,大都是参考Google的 Dapper实现的.

链路追踪工具对比

链路追踪工具一般要有如下功能:

  • 心跳检测(确定应用是否还在运行)
  • 记录请求的执行流程、执行时间
  • 资源监控(CPU、内存、带宽、磁盘)
  • 告警功能(监控执行时间、成功率等通过邮件、钉钉、短信、微信等进行通知)
  • 可视化页面

常用的工具有:

Zipkin
  Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。
Pinpoint
  韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。
SkyWalking
  本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。
CAT
  大众点评开源的基于编码和配置的调用链分析,应用监控分析,日志采集,监控报警等一系列的监控平台工具。

各维度对比

对比项 Zipkin Pinpoint SkyWalking Cat
实现方式 拦截请求,发送(Http,MQ)数据到Zipkin服务 Java探针,字节码增强 Java探针,字节码增强 代码埋点(拦截器,注解,过滤器等)
接入方式 基于linkerd或者sleuth方式 javaagent字节码 javaagent字节码 代码侵入
agent到collector协议 http,MQ thrift gRPC http/tcp
OpenTracing 支持 不支持 支持 不支持
颗粒度 接口级 方法级 方法级 代码级
全局调用统计 不支持 支持 支持 支持
traceid查询 支持 不支持 支持 不支持
报警 不支持 支持 支持 支持
JVM监控 不支持 不支持 支持 支持
UI功能 支持 支持 支持 支持
数据存储 ES、MySQL等 HBase ES/H2/MySQL MySQL/HDFS

性能对比图
SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking

SkyWalking的功能特性

  1. 多种监控手段,通过语言探针和Service mesh 获得监控的数据
  2. 支持多种语言自动探针,包括 Java, .NET Core 和 Node.js
  3. 轻量高效,无需大数据平台和大量的服务器资源
  4. 模块化,UI,存储,集群管理都有多种机制可选
  5. 支持报警,告警
  6. 优秀的可视化解决方案

Skywalking结构

SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking
SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking

说明:

  • Skywalking agent 和业务系统绑定在一起,负责收集各种监控数据
  • Skywalking oapservice负责处理监控数据,比如接受Skywalking agent的监控数据,并且存储在数据库中,接受Skywalking webapp前端的请求,从数据库查询数据,并返回给前端,Skywalking oapservice通常会以集群的方式搭建
  • Skywalking webapp ,UI服务,用于可视化展示数据
  • 用户持久化监控数据的数据库,可以选用ElasticSearch、MySQL等

安装部署

官方网站

http://skywalking.apache.org/

下载

http://skywalking.apache.org/downloads/
SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking

启动

SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking

服务接入探针

脚本
# 生产环境
#!/bin/sh
# SkyWalking Agent配置
export SW_AGENT_NAME=boot-micrometer #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/apache-skywalking-apm-bin/agent/skywalking-agent.jar
java $JAVA_AGENT -jar springcloudalibaba-0.0.1-SNAPSHOT.jar #jar启动
集成ide
# java应用启动时
-Xmx512m
-javaagent:E:/environment/SpringCloudAlibaba/skywalking/skywalking-agent/skywalking-agent.jar 
-Dskywalking.agent.service_name=provider 
-Dskywalking.collector.backend_service=127.0.0.1:11800
Skywalking跨多个微服务追踪 gateway(bug)

SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking

SkyWalking中三个概念

  • 服务(Service) :表示对请求提供相同行为的一系列或一组工作负载,在使用Agent时,可以定义服务的名字;
  • 服务实例(Service Instance) :上述的一组工作负载中的每一个工作负载称为一个实例, 一个服务实例实际就是操作系统上的一个真实进程;
  • 端点(Endpoint) :对于特定服务所接收的请求路径, 如HTTP的URI路径和gRPC服务的类名 + 方法签名;

监控dashboard 仪表盘

dashboard:http://127.0.0.1:8080/

数据收集端口:

  • Http默认端口 12800

  • gRPC默认端口 11800

SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking
SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking

自定义SkyWalking链路

  在默认情况下Skywalking是没有记录我们的业务方法的,如果需要添加业务方法的链路监控我们就需要添加如下的依赖

<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>8.8.0</version>
</dependency>

然后在业务方法上添加@Trace注解。那么该方法就会被监控
SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking

SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking
查看这个方法的详情中没有返回信息和参数
SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking
SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking
可以通过@Tags和@Tag来解决这个问题

@Trace  //表示当前方法会被skywalking追踪
    @Tags({//显示指定的返回结果和参数
            @Tag(key = "process",value = "returnedObj"),//key:方法名  value = returnedObj:是指定返回值
            @Tag(key = "param",value = "arg[0]")//返回第一个参数
    })

key:方法名 value = returnedObj:是(指定)返回值
arg[0]:参数

集成日志框架

  将微服务的日志框架去集成SkyWalking,希望在微服务中日志中,能够记录当前调用链路的id,然后我们再根据这个id去SkyWalking的前端界面中进行搜索找到对应的调用链路记录。

  因为springboot默认实现的日志框架是logback,这里也就拿logback举例

在微服务中导入maven坐标

<!-- skywalking 日志记录  -->
<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-logback-1.x</artifactId>
    <version>8.5.0</version>
</dependency>

在项目中 resources目录下创建 logback-spring.xml文件
SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    	<!-- 日志的格式化 -->
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level logger_name:%logger{36} - [%tid] - message:%msg%n</pattern>
            </layout>
        </encoder>
    </appender>

	<!-- 设置 Appender -->
    <root level="INFO">
        <appender-ref ref="console" />
    </root>

</configuration>

在Skywalking UI的日志菜单中显示日志信息(常用)

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!--  控制台日志输出的格式中添加tid  -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 日志的格式化 -->
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level logger_name:%logger{36} - [%tid] - message:%msg%n</pattern>
            </layout>
        </encoder>
    </appender>

    <!-- skywalking grpc 日志收集 8.4.0版本开始支持 -->
    <!-- https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/  -->
    <!-- 通过grpc上报日志到skywalking oap-->
    <appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern>
            </layout>
        </encoder>
    </appender>
    
    <!-- 设置 Appender -->
    <root level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="grpc-log" />
    </root>

</configuration>

告警服务

SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking
SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking
告警日志
SpringCloud Alibaba实战和源码(7)Skywalking,学习笔记,java,spring,spring cloud,skywalking

Global全局维度

Services load:服务每分钟请求数

Slow Services:慢响应服务,单位ms

Un-Health services(Apdex):Apdex性能指标,1为满分。

  • Apdex 一个由众多网络分析技术公司和测量工业组成的联盟组织,它们联合起来开发了“应用性能指数”即“Apdex”(Application Performance Index),用一句话来概括,Apdex是用户对应用性能满意度的量化值
  • http://www.apdex.org/

Slow Endpoints: 慢响应端点,单位ms

Global Response Latency:百分比响应延时,不同百分比的延时时间,单位ms

Global Heatmap:服务响应时间热力分布图,根据时间段内不同响应时间的数量显示颜色深度

Service服务维度

Service Apdex(数字):当前服务的评分

Service Avg Response Times:平均响应延时,单位ms

Successful Rate(数字):请求成功率

Servce Load(数字):每分钟请求数

Service Apdex(折线图):不同时间的Apdex评分

Service Response Time Percentile:百分比响应延时

Successful Rate(折线图):不同时间的请求成功率

Servce Load(折线图):不同时间的每分钟请求数

Servce Instances Load:每个服务实例的每分钟请求数

Slow Service Instance:每个服务实例的最大延时

Service Instance Successful Rate:每个服务实例的请求成功率

Instance

Service Instance Load:当前实例的每分钟请求数

Service Instance Successful Rate:当前实例的请求成功率

Service Instance Latency:当前实例的响应延时

JVM CPU:jvm占用CPU的百分比

JVM Memory:JVM内存占用大小,单位m

JVM GC Time:JVM垃圾回收时间,包含YGC和OGC

JVM GC Count:JVM垃圾回收次数,包含YGC和OGC

Endpoint

Endpoint Load in Current Service:每个端点的每分钟请求数

Slow Endpoints in Current Service:每个端点的最慢请求时间,单位ms

Successful Rate in Current Service:每个端点的请求成功率

Endpoint Load:当前端点每个时间段的请求数据

Endpoint Avg Response Time:当前端点每个时间段的请求行响应时间

Endpoint Response Time Percentile:当前端点每个时间段的响应时间占比

Endpoint Successful Rate:当前端点每个时间段的请求成功率文章来源地址https://www.toymoban.com/news/detail-667600.html

到了这里,关于SpringCloud Alibaba实战和源码(7)Skywalking的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • SpringCloud Alibaba - Sentinel 高级玩法,修改 Sentinel-dashboard 源码,实现 push 模式

    目录 一、规则持久化 1.1、什么是规则持久化 1.1.1、使用背景 1.1.2、规则管理的三种模式 a)原始模式 b)pull 模式 c)push 模式 1.2、实现 push 模式 1.2.1、修改 order-service 服务,使其监听 Nacos 配置中心 1.2.2、修改 Sentinel-dashboard 源码,配置 nacos 数据源 1.2.3、修改 Sentinel-dashboard

    2024年02月07日
    浏览(41)
  • SpringCloud Alibaba 深入源码 - Nacos 和 Eureka 的区别(健康检测、服务的拉取和订阅)

    目录 一、Nacos 和 Eureka 的区别 1.1、以 Nacos 注册流程来解析区别 a)首先,我们的服务启动时。都会把自己的信息提交给注册中心,然后注册中心就会把信息保存下来. 注册的信息实际上就是一个嵌套 Map,结构为 MapString, MapString, Service,第一层 key 就是 namespace_id,起到环境隔

    2024年01月22日
    浏览(49)
  • 阿里巴巴最新SpringCloud Alibaba全彩版笔记开源,架构师带你手撸微服务结构项目实战

    Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,依托Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。 下面这些都是

    2024年02月04日
    浏览(54)
  • 《项目实战》构建SpringCloud alibaba项目(二、构建微服务鉴权子工程store-authority-service)

    构建SpringCloud alibaba项目(一、构建父工程、公共库、网关) 构建SpringCloud alibaba项目(二、构建微服务鉴权子工程store-authority-service) 构建微服务鉴权子工程store-authority-service,集成JWT,提供权限验证功能。 微服务鉴权子工程,需要用到用户信息类,存放在JWT生成的Token信息

    2024年02月09日
    浏览(59)
  • SpringCloud(H版&alibaba)框架开发教程,使用eureka,zookeeper,consul,nacos做注册中心——附源码(1)

    源码地址:https://gitee.com/jackXUYY/springboot-example 创建订单服务,支付服务,公共api服务(共用的实体),eureka服务 1.cloud-consumer-order80 2.cloud-provider-payment8001 3.cloud-api-commons 4.cloud-eureka-server7001 5.cloud-eureka-server7002 如图所示 修改本地host映射 修改数据库地址为自己的地址,并初始

    2024年02月03日
    浏览(47)
  • 【Spring Cloud Alibaba】11.链路追踪(SkyWalking)

    接下来对分布式项目实现链路追踪,本操作要先完成前置步骤,详情请参照【Spring Cloud Alibaba】Spring Cloud Alibaba 搭建教程 在分布式系统,尤其是微服务系统中,一次外部请求往往需要内部多个模块,多个中间件,多台机器的相互调用才能完成。在这一系列的调用中,可能有些

    2024年02月11日
    浏览(41)
  • 【Spring Cloud Alibaba】(三)OpenFeign扩展点实战 + 源码详解

    【Spring Cloud Alibaba】(一)微服务介绍 及 Nacos注册中心实战 【Spring Cloud Alibaba】(二)微服务调用组件Feign原理+实战 书接上文,我们掌握了Feign的基本使用、核心原理,以及Spring Cloud Alibaba如何快速整合Feign,真的太简单了!你是不是觉得这样就够了?但在实际项目使用OpenF

    2024年02月20日
    浏览(39)
  • Spring Cloud Alibaba全家桶——微服务链路追踪SkyWalking

    本文小新为大家带来 微服务链路追踪SkyWalking 相关知识,具体内容包括 SkyWalking简介 , SkyWalking环境搭建部署 , SkyWalking接入微服务 , SkyWalking持久化跟踪数据 , 自定义SkyWalking链路追踪 , SkyWalking集成日志框架 , SkyWalking告警功能 , SkyWalking高可用 , SkyWalking UI介绍 等进行

    2023年04月08日
    浏览(52)
  • 基于Spring Cloud Alibaba+Skywalking的分布式链路追踪设计

    胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,Spring Cloud Alibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优

    2024年04月22日
    浏览(39)
  • 【SpringCloud】-OpenFeign实战及源码解析、与Ribbon结合

    OpenFeign(简称Feign)是一个声明式的Web服务客户端,用于简化服务之间的HTTP通信。与Nacos和Ribbon等组件协同,以支持在微服务体系结构中方便地进行服务间的通信; OpenFeign在默认情况下集成了Hystrix,提供了服务容错和服务降级的功能。 按照单一职责,也为了满足可复用、可

    2024年02月04日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包