上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

Skywalking链路追踪

guduadmin241月前

目录

  • 一、简介
    • 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项目

        Skywalking链路追踪,在这里插入图片描述,第1张

        还要再下载 agent,skywalking apm是服务端,agent才是真正监控应用的探针。

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

        Skywalking链路追踪,在这里插入图片描述,第2张

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

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

        1、启动apm系统:

        window直接进入apm项目里面bin目录下的startup.bat文件,linux 则执行 sh startup.sh

        Skywalking链路追踪,在这里插入图片描述,第3张

        修改启动端口:进入webapp目录下,修改yml文件

        Skywalking链路追踪,在这里插入图片描述,第4张

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

        Skywalking链路追踪,在这里插入图片描述,第5张

        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链路追踪,在这里插入图片描述,第6张

        项目启动完毕,再次刷新http://localhost:8080/,apm项目,就可以看到服务注册进来了

        Skywalking链路追踪,在这里插入图片描述,第7张

        微服务启动就是,每个服务也都写上那个配置即可,需要更换名称。

        如果报下面错误,则可以将classpath更换成JAR manifest

        Skywalking链路追踪,在这里插入图片描述,第8张

        Skywalking链路追踪,在这里插入图片描述,第9张

        2.2、界面认识

        Skywalking链路追踪,在这里插入图片描述,第10张

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

        Skywalking链路追踪,在这里插入图片描述,第11张

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

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

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

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

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

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

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

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

        Skywalking链路追踪,在这里插入图片描述,第12张

        Topology 鼠标放上去即可看到每个链路的耗时。

        Skywalking链路追踪,在这里插入图片描述,第13张Trace 可以追踪每个节点的信息和耗时

        Skywalking链路追踪,在这里插入图片描述,第14张Skywalking链路追踪,在这里插入图片描述,第15张还有很多界面,大家自己点点,可以监控很多有用的信息

        Skywalking链路追踪,在这里插入图片描述,第16张

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

        Skywalking链路追踪,在这里插入图片描述,第17张

        三、持久化存储

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

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

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

        Skywalking链路追踪,在这里插入图片描述,第18张

        验证es启动成功

        Skywalking链路追踪,在这里插入图片描述,第19张更改skywalking-apm项目config下的application.yml,更换使用存储连接方式,如果使用mysql,需要将mysql数据库驱动包拷贝到 oap-libs 目录下才可以

        Skywalking链路追踪,在这里插入图片描述,第20张

        重启下服务即可

        四、告警通知

        可以通过修改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链路追踪,在这里插入图片描述,第21张

        Skywalking链路追踪,在这里插入图片描述,第22张

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

        1、引入依赖:

           
              org.apache.skywalking
              apm-toolkit-trace
              ${skywalking.version}
           
        

        ${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链路追踪,在这里插入图片描述,第23张

        点击方法查看详情,name,address,token以及traceId参数也都全部被统计收集上来了。

        Skywalking链路追踪,在这里插入图片描述,第24张

网友评论

搜索
最新文章
热门文章
热门标签
 
 男人梦见自己怀孕了是什么预兆  梦见开车不小心撞死人  十二生肖最佳姻缘配对全部