链路追踪( Skyworking )

您所在的位置:网站首页 链路跟踪sky 链路追踪( Skyworking )

链路追踪( Skyworking )

2023-06-07 20:39| 来源: 网络整理| 查看: 265

作用和背景

随着业务规模的不断的增大, 系统的复杂度也越来越高, 我们的软件架构也进入到了分布式的阶段, 服务按照不同的维度进入到了分布式的阶段, 服务按照不同的维度进行拆分, 每一次的请求可能跨越多个微服务, 这样就导致我们每一次请求都有可能出现异常. 传统的日志监控方式无法满足调用链路追踪, 这就导致定位/诊断服务异常变得异常复杂.

1)功能性需求:

① 请求链路追踪,快速定位故障,缩短故障的排除时间 以及 判断故障影响范围 ② 可视化链路各阶段的耗时,进行性能分析,排除业务瓶颈 ③ 梳理服务依赖关系以及优化依赖的合理性 ④ 系统指标监控,吞吐量(TPS)、响应时间及错误记录等。 (2)非功能性需求:

探针的性能消耗:服务调用埋点本身会带来性能损耗,这就需要组件对业务系统的性能影响小 代码的侵入性:对业务系统尽可能少入侵或者无入侵其他,对于使用方透明,减少开发人员的负担。

Skywalking 简介:

skywalking 是一个优秀的国产开源APM组件,是一个对 Java 分布式应用程序集群的业务运行情况进行追踪、告警和分析的系统。2015年由个人吴晟开源 , 2017年加入Apache孵化器。短短两年就被Apache收入麾下,实力可见一斑。

skywalking 支持 SpringBoot、SpringCloud、dubbo 集成,代码无侵入,通信方式采用 GRPC,性能较好,实现方式是 Java 探针,支持告警,支持JVM监控,支持全局调用统计等等,功能较完善。

Skywalking 安装:

在官方下载两个压缩包

下载完之后在本机上面运行, 将两个压缩包压缩到一个没有中文路径的文件中

接下来进入到skywaliking-apm的包下, 进入wenapp下

更改application.yml文件中的路径, 8080可以进行更改,也可以不更改, 下面的12800因为是在本机运行,所以我们的地址就不用动( 虚拟机的话改为自己虚拟机的地址 )

进入到bin的文件中, 双击startup.bat启动, 就OK了( 服务器的话启动startup.sh就OK了 )

解压命令: tar -zxvf 名字

镜像的启动和安装

安装skywalking-oap-server:

docker run \ --name skywalking-oap \ --restart always \ -p 11800:11800 \ -p 12800:12800 -d \ --privileged=true \ -e TZ=Asia/Shanghai \ -e SW_STORAGE=elasticsearch7 \ -e SW_STORAGE_ES_CLUSTER_NODES=182.42.92.23:9200 \ -v /etc/localtime:/etc/localtime:ro \ apache/skywalking-oap-server:8.6.0-es7

安装skywalking-ui

docker run \ --name skywalking-ui \ --restart always \ -p 8081:8080 -d \ --privileged=true \ --link skywalking-oap:skywalking-oap \ -e TZ=Asia/Shanghai \ -e SW_OAP_ADDRESS=182.42.92.23:12800 \ -v /etc/localtime:/etc/localtime:ro \ apache/skywalking-ui:8.6.0 idea的应用:

只需要在idea的springboot配置中增加

# 指定服务的状针的路径 -javaagent:E:\apache\skywalking-agent\skywalking-agent.jar # 指定服务的名称 -DSW_AGENT_NAME=skywalking-bawei-system # 指定它的端口( 服务器就用服务器的端口 ) -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=101.43.11.8:11800 日志的采集

在主项目中加入记录日志的一个依赖

                           org.apache.skywalking                apm-toolkit-logback-1.x                8.10.0                                        org.apache.skywalking                apm-toolkit-trace                8.10.0            

在每一个springcloud微服务中添加一个logback.xml的一个日志的文件

 

然后再日志里面加上以下代码

                        ​                                                 ${PATTERN_DEFAULT}                         ​                                                ${PATTERN_DEFAULT}                                    ${LOG_FILE}                                ${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}                        ${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}                        ${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}                        ${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}                        ${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-30}                                    0                256             ​                                            ${PATTERN_DEFAULT}                         ​                                                                   ​                                                                

然后启动项目 如下图出现一些标志,说明已经成功了

 

springclod-gateway(网关的配置)的使用

Skyworking 默认是不支持网关的, 需要在skywalking-agent文件中进行一些配置, 如下图

 

找到这两个包, 进行一个配置, gateway的包有版本,根据自己项目当中使用的gateway版本 如下图

我使用的是3.4的, 所以把它的jar移动到plugins文件中去 plugins是支持的插件 optional-plugins是可选的插件

 

 

这样网关就可以在链路追踪上面显示了

 

性能监控

1、查看 config/alarm-settings.yml文件

查看 config/alarm-settings.yml文件,Skywalking提供了一些默认的规则,只要我们的应用服务请求符合 alarm-setting.yml文件中的某一条规则就会触发告警通知。

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    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: "


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3