链路追踪( Skyworking ) |
您所在的位置:网站首页 › 链路跟踪sky › 链路追踪( Skyworking ) |
作用和背景
随着业务规模的不断的增大, 系统的复杂度也越来越高, 我们的软件架构也进入到了分布式的阶段, 服务按照不同的维度进入到了分布式的阶段, 服务按照不同的维度进行拆分, 每一次的请求可能跨越多个微服务, 这样就导致我们每一次请求都有可能出现异常. 传统的日志监控方式无法满足调用链路追踪, 这就导致定位/诊断服务异常变得异常复杂. 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 |