共计 2666 个字符,预计需要花费 7 分钟才能阅读完成。
作者:张震
一. 简介
SkyWalking 是一个开源可察看性平台,用于收集、剖析、聚合和可视化来自服务和云原生基础设施的数据。反对分布式追踪、性能指标剖析、利用和服务依赖剖析等;它是一种古代 APM,专为云原生、基于容器的分布式系统而设计。
本文整合的指标要达成,运行在 Rainbond 上的利用,通过开启 Rainbond 的 SkyWalking 插件,主动对接 SkyWalking Server,灵便开启 APM,不须要时敞开插件,实现即插即用的 APM。
二. 整合架构
SkyWalking 对服务进行监控时服须要在被监控服务中启用 agent 服务,而 SkyWalking agent 须要配置到利用的启动命令,尽管对利用代码无侵入,但配置过程须要侵入利用。Rainbond 通过插件实现对利用的无侵入,将 SkyWalking 的 agent 制作成 Rainbond 的 初始化类型插件,在利用容器启动之前将 agent 的 jar 包拷贝到利用容器,利用容器就能加载 agent 并连贯 SkyWalking Server,整个过程对利用容器无侵入,且拓展性强。对接其余 APM 也能够用相似形式,应用用户通过替换插件实现对接不同的 APM 工具。
下图展现了在 Rainbond 中应用 SkyWalking 对利用进行监控的构造
三. Agent 插件实现原理
Rainbond 插件体系是绝对于 Rainbond 利用模型的一部分,插件次要用来实现利用容器扩大运维能力。因为运维工具的实现有较大的共性,因而插件自身能够被复用。插件必须绑定到利用容器时才具备运行时状态,用以实现一种运维能力,比方性能剖析插件、网络治理插件、初始化类型插件。
具备运行时的插件的运行环境与所绑定的组件从以下几个方面保持一致:
- 网络空间 这个一个至关重要的个性,网络空间统一使插件能够对组件网络流量进行旁路监听和拦挡,设置组件本地域名解析等。
- 存储长久化空间 这个个性使得插件与组件之间能够通过长久化目录进行文件替换。
- 环境变量 这个个性使得插件能够读取组件的环境变量。
SkyWalking 与 Rainbond 交融的过程中,咱们应用到了 初始化类型 插件,顾名思义这是一个在利用容器启动前可能进行初始化动作的的插件,其基本原理是利用 Kubernetes 的 init 容器 实现的,Pod 可能蕴含多个容器,利用运行在这些容器外面,同时 Pod 也可能有一个或者多个先于利用容器启动的 init 容器,只有 init 容器运行胜利后才会运行利用容器,在 Rainbond 中开明了该类型插件的组件会在利用容器启动之前运行插件中已定义的工作直至实现。所以只需定义在利用容器启动前,应用初始化类型容器将 agent 所需数据拷贝至对应目录下,这样后续服务则能够间接应用这些数据。
四. 通过 Rainbond 一键装置 SkyWalking
咱们已将 SkyWalking 制作为利用并公布至利用市场,用户可基于开源利用商店一键装置。
- 装置 Rainbond;
- 在开源利用商店搜寻 SkyWalking,点击装置即可一键装置;
3. 装置实现,后续可通过 Rainbond 治理和运维 SkyWalking。
SkyWalking 服务端在架构上分为四个局部:探针服务、后端服务、存储服务和 UI:
- 平台后端(oap-server) 反对数据聚合、剖析和流解决,包含跟踪、指标和日志。
- 存储(elasticsearch-7.13.4) 通过凋谢 / 可插拔接口存储 SkyWalking 数据。反对 ElasticSearch、H2、MySQL、TiDB、InfluxDB。
- UI(skywalking-ui) 是高度可定制的基于 Web 的界面,容许 SkyWalking 最终用户可视化和治理 SkyWalking 数据。
- 探针(agent) 收集数据并依据 SkyWalking 要求从新格式化数据(不同的探针反对不同的起源)。
五. 应用 SkyWalking 对微服务进行监控
事后筹备环境
- 领有一套被监控服务,本文中示例利用为 Spring Cloud 微服务框架 Pig,咱们已将 Spring Cloud-pig 制作为利用并公布至利用市场,用户可基于利用市场一键装置。
配置服务反对 SkyWalking 监控
- 部署插件
在 Rainbond 团队界面点击插件后进入插件界面,点击新建插件,创立初始化类型插件
源码地址:https://github.com/goodrain/s…
插件构建胜利后即可应用,为 pig 服务的各组件开明此插件即可。
- 挂载存储
为 pig 服务的各组件挂载存储,使其与插件共享该存储。
挂载门路为 /tmp/agent
,挂载类型为 共享存储;该存储为初始化插件及该组件提供共享存储,共享同一份数据。
- 增加环境变量
为 pig 各组件增加环境变量。
变量解释:
变量值 | 简介 |
---|---|
-Dskywalking.agent.service_name=** | 在 SkyWalking UI 中展现的服务名 |
-Dskywalking.collector.backend_service=Host:Port | SkyWalking oap-server 的拜访地址,用来接管 skywalking trace 数据 |
-javaagent:/tmp/agent/skywalking-agent.jar | 指定须要注入的 jar 包地址 |
增加环境变量当前更新组件即可失效。
- 建设依赖关系
将须要监控的各组件建设与 SkyWalking oap-server 服务的依赖关系,使其可能通过 127.0.0.1 的地址连贯 oap-server,具体原理请参考服务间通信;或者开启 oap-server 的对外地址,在被监控端填写该地址,则无需建设依赖关系。
拜访 SkyWalking
拜访 skywalking-ui 对外端口,进入可视化界面。
- 仪表盘
- 服务调用拓扑图
六. 总结
基于 Rainbond 的插件机制与 SkyWalking 联合,无需扭转软件本身运行环境,不须要向我的项目构建脚本增加逻辑,实现 SkyWalking 能力即插即用。除此之外,Rainbond 的插件机制具备开放性,通过插件机制对利用治理性能进行扩大,例如网络治理类、日志收集类、数据备份类插件,在对原应用逻辑无侵入的状况下,可能通过网络治理类插件对服务的性能进行剖析,通过日志插件收集服务日志,对接 ELK 等日志收集零碎;对于数据库等组件而言,应用备份插件对数据进行备份。
Rainbond 是一个开源的云原生利用治理平台,应用简略,不须要懂容器和 Kubernetes,反对治理多个 Kubernetes 集群,提供企业级利用的全生命周期治理,性能包含利用开发环境、利用市场、微服务架构、利用继续交付、利用运维、利用级多云治理等。