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 支持集群部署,存储方式也兼容 Elasticsearch、MySQL 等。为了便于快速部署,这里先采用单机部署 + MySQL 的方案。
注意:需要提前在 MySQL 中创建一个名为 swtest 的数据库,SkyWalking-oap 启动时会自动执行 SQL 脚本完成初始化。

2.业务服务接入
SkyWalking 监控采用 java agent 的接入方式,属于无侵入式监控,接入过程非常方便。我们只需要在项目启动时的 JVM 参数中增加 agent 配置,例如:
-javaagent:/usr/local/skywalking/agent/skywalking-agent.jar
如果每个项目都单独引入 agent 文件,维护起来会比较繁琐,因此这里引入一个基础镜像,用于统一环境配置和基础工具管理。

后续如果需要新增或调整基础配置,也可以直接在这个基础镜像中统一修改,其他业务服务只需在 Dockerfile 中引用即可,从而保证各个服务运行环境保持一致。
这里后续还可以增加环境隔离控制,方便不同环境使用不同配置,例如通过 git 分支控制,或者直接在 jenkins 中固定配置。
服务启动后,监控数据会通过 grpc 方式传输到 SkyWalking 的 oap 服务端。
完成接入后,就可以在 SkyWalking 仪表盘中看到已经配置好的服务监控信息。
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 中可以配置告警服务,再结合钉钉机器人实现实时告警通知。
