版本:JDK1.8
ES:6.6+
这里使用的是当前最新包:apache-skywalking-apm-8.1.0
一 单机部署
1.1下载安装包:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/skywalking/8.1.0/apache-skywalking-apm-8.1.0.tar.gz
1.2解压并进入config目录:
tar -zxvf apache-skywalking-apm-8.1.0.tar
cd config
1.3修改application.yml配置文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GVrCmsi3-1608185731042)(http://192.168.15.111:4999/server/index.php?s=/api/attachment/visitFile/sign/b694edcaccd072bc40af3fc8241fb4b3&showdoc=.jpg)]
storage:
selector: ${SW_STORAGE:elasticsearch}
elasticsearch:
nameSpace: ${SW_NAMESPACE:"namespace-"}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:127.0.0.1:9002}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:""}
trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:""}
user: ${SW_ES_USER:"username"}
password: ${SW_ES_PASSWORD:"password"}
1.4 启动skw
进入bin目录
oapService.sh:启动后端数据服务
webappService.sh:启动前端页面服务
startup.sh:启动两个服务
至此单机版的就可以使用了,问默认的IP:port既可以
2. 集群部署
2.1 修改application.yml 配置文件
选择是注册中心是zookeeper还是nacos
2.2 修改前端配置
/apache-skywalking-apm-bin/webapp/webapp.yml
listOfServers:修改为当前集群的ip:port,ip:port的列表
2.3 启动各个节点
skywalking使用介绍
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
3. skywalking主要作用:
- 链路监控
- metrics:运行时数据;健康数据;自查
3.1字节码增强
Java通过加载二进制字节码到JVM内存中完成类的加载过程。如果我们想要在JVM运行过程中,动态创建一个类就必须遵循Java编译系统组织.class文件的格式和结构,生成相应的二进制数据,然后再把这个二进制数据加载转换成对应的类,这样就可以完成类的动态创建。当前有很多方法可以完成这些功能:
- 使用Java代理来实现Java字节码注入
- 使用Javaassist对字节码进行修改
- 使用ASM也修改字节码
- 官方网站:https://skywalking.apache.org/zh/
- UI简介:https://github.com/apache/skywalking/blob/v8.1.0/docs/en/ui/README.md
3.2skywalkingUI介绍
SkyWalking官方UI为分布式的SkyWalking观测提供了默认的、强大的可视化功能集群
SkyWalking仪表板包括以下部分:
- 功能选项卡选择区. 这里列出了主要特性。更多细节将在下面介绍.
- 重载区. 控制重新加载机制,包括定期重新加载或手动重新加载.
- 时间选择器. 控制时区和时间范围。这里有一个中文/英文切换按钮,默认,UI使用浏览器语言设置
Database Dashboard内可以展示数据库的响应时间、响应时间分布、吞吐量、SLA、慢SQL等详细信息,便于直观展示数据库状态
Database Avg Response Time: 数据库平均响应时间
Database Access Successful Rate: 数据库访问成功率
Database Traffic: 数据库每分钟访问量
Database Access Latency Percentile: 数据库访问延迟百分比
Slow Statements: 慢sql
All Database Loads:
Un-Health Databases (Successful Rate):
3.3 仪表板
指示板提供服务、服务实例和端点的指标。这里需要了解一些度量术语
- 吞吐量CPM,表示每分钟的调用
- Apdex分数,参考Apdex in WIKI
- 响应时间百分比,包括 p99, p95, p90, p75, p50.参考percentile in WIKI
- SLA表示成功率。对于HTTP,表示响应为200的请求
服务、实例和仪表板选择器可以手动重新加载,而不是重新加载整个页面。注意,重载区域** 不会重载这些选择器
3.4 仪表板 APM
- 第一栏:不同内容主题的监控面板,应用/数据库/容器等
- 第二栏:操作,包括编辑/导出当前数据/倒入展示数据/不同服务端点筛选展示
- 第三栏:不同纬度展示,服务/实例/端点
3.4.2 Global全局维度
- 第一栏:Global、Server、Instance、Endpoint不同展示面板,可以调整内部内容
- Services load:服务每分钟请求数
- Slow Services:慢响应服务,单位ms
- Un-Health services(Apdex):Apdex性能指标,1为满分。
- Global Response Latency:百分比响应延时,不同百分比的延时时间,单位ms
- Global Heatmap:服务响应时间热力分布图,根据时间段内不同响应时间的数量显示颜色深度
- 底部栏:展示数据的时间区间,点击可以调整。
3.4.3 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:每个服务实例的请求成功率
3.4.4 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虚拟机
3.4.5 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:当前端点每个时间段的请求成功率
3.5 拓扑结构
拓扑图用指标显示服务和实例之间的关系
- 拓扑显示包含所有服务的默认全局拓扑.
- 服务选择器 支持显示直接关系,包括上游和下游.
- 自定义组 提供服务组的任意子拓扑功能.
- 服务下钻 当您单击任何服务时打开。该图形可以对所选择的服务进行度量、- - 跟踪和告警查询.
- 服务指标的关系 提供服务RPC交互的度量以及这两个服务的实例
3.6 跟踪查询
- 跟踪部分列表 不是跟踪列表。每个跟踪都有几个属于不同服务的段。 如果通过所有服务或通过跟踪id进行查询,可以在其中列出具有相同跟踪id的不同段.
- 跨度 是否可单击,每个跨度的细节将在左侧弹出.
- 跟踪视图 提供3个典型的和不同的使用视图来可视化跟踪
4.告警
# Sample alarm rules.
# 1:过去3分钟内服务平均响应时间超过1秒
# 2:服务成功率在过去2分钟内低于80%
# 3:服务90%响应时间在过去3分钟内低于1000毫秒
# 4:服务实例在过去2分钟内的平均响应时间超过1秒
# 5:端点平均响应时间过去2分钟超过1秒
# 6:数据库的响应时间在最后10分钟的2分钟内超过1秒