Rainbond通过插件整合SkyWalking,实现APM即插即用
作者:张震一. 简介
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应用模型的一部分,插件主要用来实现应用容器扩展运维能力。由于运维工具的实现有较大的共性,因此插件本身可以被复用。插件必须绑定到应用容器时才具有运行时状态,用以实现一种运维能力,比如性能分析插件、网络治理插件、初始化类型插件。
具有运行时的插件的运行环境与所绑定的组件从以下几个方面保持一致:
- 网络空间 这个一个至关重要的特性,网络空间一致使插件可以对组件网络流量进行旁路监听和拦截,设置组件本地域名解析等。
- 存储持久化空间 这个特性使得插件与组件之间可以通过持久化目录进行文件交换。
- 环境变量 这个特性使得插件可以读取组件的环境变量。
四. 通过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 要求重新格式化数据(不同的探针支持不同的来源)。
预先准备环境
- 拥有一套被监控服务,本文中示例应用为Spring Cloud微服务框架 Pig,我们已将Spring Cloud-pig制作为应用并发布至应用市场,用户可基于应用市场一键安装。
- 部署插件
源码地址:https://github.com/goodrain/s...
文章图片
插件构建成功后即可使用,为pig服务的各组件开通此插件即可。
- 挂载存储
文章图片
挂载路径为
/tmp/agent
,挂载类型为共享存储;该存储为初始化插件及该组件提供共享存储,共享同一份数据。- 添加环境变量
文章图片
变量解释:
变量值 | 简介 |
---|---|
-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 访问 skywalking-ui 对外端口,进入可视化界面。
- 仪表盘
文章图片
- 服务调用拓扑图
文章图片
六. 总结
基于Rainbond的插件机制与SkyWalking结合,无需改变软件自身运行环境,不需要向项目构建脚本添加逻辑,实现SkyWalking能力即插即用。除此之外,Rainbond的插件机制具有开放性,通过插件机制对应用治理功能进行扩展,例如网络治理类、日志收集类、数据备份类插件,在对原应用逻辑无侵入的情况下,能够通过网络治理类插件对服务的性能进行分析,通过日志插件收集服务日志,对接ELK等日志收集系统;对于数据库等组件而言,使用备份插件对数据进行备份。
Rainbond是一个开源的云原生应用管理平台,使用简单,不需要懂容器和Kubernetes,支持管理多个Kubernetes集群,提供企业级应用的全生命周期管理,功能包括应用开发环境、应用市场、微服务架构、应用持续交付、应用运维、应用级多云管理等。
【Rainbond通过插件整合SkyWalking,实现APM即插即用】
文章图片
推荐阅读
- gitlab|gitlab 通过备份还原 admin/runner 500 Internal Server Error
- jQuery插件
- VueX--VUE核心插件
- whlie循环和for循环的应用
- 用npm发布一个包的教程并编写一个vue的插件发布
- 如何通过锻炼的方法治疗前列腺肥大
- 插件化无法获取或找到.so文件
- 通过复盘快速成长(附模板)
- maven使用tomcat7插件编译jsp出错
- 超好用的PubMed文献查找管理插件—Scholarscope