目录
概况
应用场景
架构分析
目录结构
部署应用
服务端
配置
部署
客户端
部署配置
本地idea配置
linux接入
使用Console
look Strong appearance!
概况
国产开源,Apache孵化器产品。支持非侵入式埋点,是一款基于分布式跟踪的应用程序性能监控系统。
官网:https://skywalking.apache.org/
官方文档:https://github.com/apache/skywalking/tree/master/docs
下载:https://skywalking.apache.org/downloads/;https://archive.apache.org/dist/skywalking/
应用场景
- 请求链路追踪,故障快速定位:可以通过调用链结合业务日志快速定位错误信息。
- 可视化:各个阶段耗时,进行性能分析。
- 依赖优化:各个调用环节的可用性、梳理服务依赖关系以及优化。
- 数据分析,优化链路:可以得到用户的行为路径,汇总分析应用在很多业务场景。
架构分析
- Skywalking Agent: 采集tracing(调用链数据)和metric(指标)信息并上报,上报通过HTTP或者gRPC方式发送数据到Skywalking Collector
- Skywalking Collector : 链路数据收集器,对agent传过来的tracing和metric数据进行整合分析通过Analysis Core模块处理并落入相关的数据存储中,同时会通过Query Core模块进行二次统计和监控告警
- Storage: Skywalking的存储,支持以ElasticSearch、Mysql、TiDB、H2等作为存储介质进行数据存储
- UI: Web可视化平台,用来展示落地的数据,目前官方采纳了RocketBot作为SkyWalking的主UI
目录结构
Skywalking整体分为 3 个部分:
- agent 代理,应用启动的时候后,通过该agent收集数据并上报backend。
- backend 数据收集器,agent收集的数据会发送给backend,然后数据处理后入库。
- bin目录下的oapService.sh,它就是 backend 的启动脚本
- config目录下的application.yml,它是backend的配置信息
- oap-libs是backend启动需要的所有jar包
- logs目录下的skywalking-oap-server.log是启动后的日志文件。
- ui也就是提供可视化服务的界面。一般在webapp目录下
部署应用
服务端
配置
- 修改配置文件conf/appliction.yml。支持mysql、es等,日志量大,生产推荐es。
- 当选择mysql时,由于少myql驱动,需下载mysql-connector-java.jar至oap-libs。配置数据库信息,表结构在启动后会自动同步。
- 修改webapp/webapp.yml。修改端口及IP信息
#8.2版本 spring2.3版本
server:
port: 9029
collector:
path: /graphql
ribbon:
ReadTimeout: 10000
# Point to all backend's restHost:restPort, split by ,
listOfServers: xxxx:12800
部署
- 启动/bin下,startup.sh:全量启动;oapService.sh后端;webappService.sh前端。启动生成日志在logs下。
- 访问:http://xxxx:9029/
客户端
部署配置
1.修改 agent/config/agent.config 文件
# 在UI上显示的服务名称
agent.service_name=${SW_AGENT_NAME:cp3-cloud}
#采集端地址,注意端口11800是默认暴露出来的,不用修改
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:xxxx:11800}
2. 将 agent/optional-plugins/ 中的如下插件移动到 agent/plugins/ 里面去
apm-quartz-scheduler-2.x-plugin-8.2.0.jar # 定时任务
apm-spring-annotation-plugin-8.2.0.jar
# spring注解
apm-spring-tx-plugin-8.2.0.jar # spring事务
apm-trace-ignore-plugin-8.2.0.jar
# 自定义忽略追踪某些请求 (如nacos、eureka等定时请求)
apm-spring-cloud-gateway-2.1.x-plugin-8.2.0.jar
# 解决微服务项目 gateway 转发的问题
apm-spring-webflux-5.x-plugin-8.2.0.jar #
3.下载apm-trace-ignore-plugin插件的配置文件放到 agent/config/ 目录,取名为: apm-trace-ignoreplugin.config
# 需要被注入的地址
# /path/? 匹配任意单个字符
# /path/* 匹配任意数量的字符
# /path/** 匹配任意数量的字符并支持多级目录
# 多个路径使用逗号分隔, 比如: trace.ignore_path=/eureka/**,/consul/**
trace.ignore_path=${SW_AGENT_TRACE_IGNORE_PATH:/eureka/**}
4.若是分布式部署, 将agent文件夹移动到跟spring-boot的jar同一台服务器上的任意目录.
配置每个服务的启动参数.
/xxx/agent/skywalking-agent.jar 要改成你自己的skywalking-agent.jar 存放路经
# VM Options: (虚拟机参数)
-Xms128M -Xmx192M -XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=128M -javaagent:/xxx/agent/skywalking-agent.jar
# Environment variables (环境变量)
SW_AGENT_NAME=xxx-server
本地idea配置
linux接入
java -javaagent:/xxxx/agent/skywalking-agent.jar -Dskywalking.agent.service_name=xxx-server -jar xx-server.jar
使用Console
- 访问UI页面: http://localhost:12080 查看结果
look Strong appearance!
Service Dashboard
Service Dashboard内分别有Global、Service、Endpoint、Instance面板,展示了全局以及服务、端点、实例的详细信息
- global
- Services load:服务每分钟请求数
- Slow Services:慢响应服务,单位ms
- Un-Health services(Apdex):Apdex性能指标,1为满分。
- Global Response Latency:百分比响应延时,不同百分比的延时时间,单位ms
- Global Heatmap:服务响应时间热力分布图,根据时间段内不同响应时间的数量显示颜色深度
- 底部栏:展示数据的时间区间,点击可以调整。
- service
- Service Apdex(数字):当前服务的评分
- Service Apdex(折线图):不同时间的Apdex评分
- Successful Rate(数字):请求成功率
- Successful Rate(折线图):不同时间的请求成功率
- Servce Load(数字):每分钟请求数
- Servce Load(折线图):不同时间的每分钟请求数
- Service Avg Response Times:平均响应延时,单位ms
- Global Response Time Percentile:百分比响应延时
- Servce Instances Load:每个服务实例的每分钟请求数
- Show 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
- CLR XX:类似JVM虚拟机
- endpoint 端点(API)维度
- 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:当前端点每个时间段的请求成功率
Database Dashboard
Database Dashboard内可以展示数据库的响应时间、响应时间分布、吞吐量、SLA、慢SQL等详细信息,便于直观展示数据库状态
拓扑图
每条连线的颜色反应了服务之间的调用延迟情况,可以非常直观的看到服务与服务之间的调用状态,连线中间的点能点击,可显示两个服务之间链路的平均响应时间、吞吐率以及SLA等信息。
- :服务告警信息
- :服务端点追踪信息
- :服务实例性能信息
- :api信息面板
接口追踪
能够显示请求的代码内部执行情况,一个完整的请求都经过了哪些服务、执行了哪些代码方法、每个方法的执行时间、执行状态等详细信息,快速定位代码问题。
- 左侧:api接口列表,红色-异常请求,蓝色-正常请求
- 右侧:api追踪列表,api请求连接各端点的先后顺序和时间
性能分析
- 新建任务:新建需要分析的端点
- 左侧列表:任务及对应的采样请求
- 右侧:端点链路及每个端点的堆栈信息
告警
不同维度告警列表,可分为服务、端点和实例