1.搭建
1.构建Skywalking-docker镜像
Skywalking支持下载zip包安装,但是推荐使用docker进行安装更加方便。Skywalking在Docker Hub提供了官方镜像,我们只需要引用在此基础上进行扩展即可。
Skywalking-oap(服务端,接受埋点信息和计算)
Skywalking-ui(前端展示)
2.下载镜像
这里我使用的是腾讯云的镜像仓库(后续切换到公司的镜像仓库),从镜像仓库pull到服务器上。
Skywalking-oap镜像:
sudo docker pull ccr.ccs.tencentyun.com/yanyimin-docker-image/skywalking-oap:skywalking-oap-master-202007211645
Skywalking-ui镜像:
sudo docker pull ccr.ccs.tencentyun.com/yanyimin-docker-image/skywalking-ui:skywalking-ui-master-202007211645
3.启动服务
Skywalking支持集群部署,存储方式支持ES,MySql等。这里方便部署我们先采用单机部署+MySql的方式。
注意:Mysql需要在库中新建一个swtest的数据库,Skywalking-oap启动的时候会执行SQL脚本进行初始化
2.业务服务接入
这里以ezeeship-excel项目为例
Skywalking监控采用java agent的方式,是无侵入,非常方便的。我们只需要在项目启动的JVM参数中增加agent的参数,例如:
-javaagent:/usr/local/skywalking/agent/skywalking-agent.jar
如果在每个项目都引入agent文件显然相当麻烦,因此引入了一个基础镜像用来解决统一的环境配置和基础工具使用。
后续增加修改一些基础配置都可以在该基础镜像中进行修改,其他服务的Dockerfile引用即可,可以控制保证所有环境一致。
这里后续可能需要做个环境控制,以便不同环境使用不同配置(用git分支做控制,或者直接在jekins写死)
服务启动后,监控数据就会通过grpc的方式传输给Skywalking的oap端。
在Skywalking的仪表盘也就可以看到我们设置的ezeeship-excel-dev服务了。
3.指标参数介绍
在Skywalking的使用中,我们最常用的主要是仪表盘、拓扑图、追踪这三个功能。
仪表盘: Global:
全局服务整体情况。
Service:
Service Avg ApdexScore = 服务平均接口分数 (表示服务稳定程度,1代表最高) Service Avg ResponseTime = 服务平均响应时间 Service Avg Throughput = 服务平均访问次数(单位cpm,分钟访问次数) Service Avg SLA = 服务平均接口请求成功率 (百分比越高,服务越稳定,接口请求失败则减低,与Service Avg ApdexScore类似) Global Response Time Percentile = 全局响应时间百分比 Service Response Time Percentile = 服务响应时间百分比 Service Slow Endpoint = 慢接口排行 Running ServiceInstance = 运行中的服务实例 p99 = 99%的接口请求响应时间小于多少 p95 = 95%的接口请求响应时间小于多少 Endpoint:
端点在Skywalking中指接口,可以查看单个接口的请求状况
Instanse:
可以看到JVM的堆空间,以及GC情况。
拓扑图: 在拓扑图中可以看到当前服务一共会跟哪些服务产生关联,上图中可以看到有数据库和eureka,在微服务中可以有效的关注到整体服务的连接关系。
追踪: 追踪可以查看每个接口的访问链,以及执行过程,执行时间,并且会收集报错的堆栈,在排查问题的时候更加直观方便。
4.告警
告警功能可以针对接口的访问次数,稳定情况,响应时间进行报警通知。
在webhooks中可以配置报警服务,然后再加入钉钉机器人做到实时报警通知。