一. 简介

SkyWalking 是一个开源可观察性平台,用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。支持分布式追踪、性能指标分析、应用和服务依赖分析等;它是一种现代 APM,专为云原生、基于容器的分布式系统而设计。

Rainbond是一个开源的云原生应用管理平台,使用简单,不需要懂容器和Kubernetes,支持管理多个Kubernetes集群,提供企业级应用的全生命周期管理,功能包括应用开发环境、应用市场、微服务架构、应用持续交付、应用运维、应用级多云管理等。

本文整合的目标要达成,运行在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制作为应用并发布至应用市场,用户可基于开源应用商店一键安装。

  1. 安装 Rainbond;
  2. 在开源应用商店搜索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对微服务进行监控

预先准备环境

配置服务支持SkyWalking监控

  • 部署插件

在Rainbond团队界面点击插件后进入插件界面,点击新建插件,创建初始化类型插件

源码地址:https://github.com/goodrain/skywalking-agent.git

插件构建成功后即可使用,为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

Rainbond是一个开源的云原生应用管理平台,使用简单,不需要懂容器和Kubernetes,支持管理多个Kubernetes集群,提供企业级应用的全生命周期管理,功能包括应用开发环境、应用市场、微服务架构、应用持续交付、应用运维、应用级多云管理等。

已有上百家企业使用Rainbond管理关键业务场景,涵盖制造、能源、高校、公安、政府、交通、军工等十几个行业。客户有 京东方、百胜中国、中航信、中公高科等大型企业。

云原生PaaS平台通过插件整合SkyWalking,实现APM即插即用的更多相关文章

  1. 终极套娃 2.0|云原生 PaaS 平台的可观测性实践分享

    某个周一上午,小涛像往常一样泡上一杯热咖啡 ️,准备打开项目协同开始新一天的工作,突然隔壁的小文喊道:"快看,用户支持群里炸锅了 -" 用户 A:"Git 服务有点问题, ...

  2. 终极指南:企业级云原生 PaaS 平台日志分析架构全面解析

    早些时候 Erda Show 针对微服务监控.日志等内容做了专场分享,很多同学听完后意犹未尽,想了解更多关于日志分析的内容.Erda 团队做日志分析也有一段时间了,所以这次打算和大家详细分享一下我们在 ...

  3. 重大升级!灵雀云发布全栈云原生开放平台ACP 3.0

    云原生技术的发展正在改变全球软件业的格局,随着云原生技术生态体系的日趋完善,灵雀云的云原生平台也进入了成熟阶段.近日,灵雀云发布重大产品升级,推出全栈云原生开放平台ACP 3.0.作为面向企业级用户的 ...

  4. 公有云上构建云原生 AI 平台的探索与实践 - GOTC 技术论坛分享回顾

    7 月 9 日,GOTC 2021 全球开源技术峰会上海站与 WAIC 世界人工智能大会共同举办,峰会聚焦 AI 与云原生两大以开源驱动的前沿技术领域,邀请国家级研究机构与顶级互联网公司的一线技术专家 ...

  5. Rainbond通过插件整合SkyWalking,实现APM即插即用

    作者:张震 一. 简介 SkyWalking 是一个开源可观察性平台,用于收集.分析.聚合和可视化来自服务和云原生基础设施的数据.支持分布式追踪.性能指标分析.应用和服务依赖分析等:它是一种现代 AP ...

  6. 开放融合 | “引擎级”深度对接!POLARDB与SuperMap联合构建首个云原生时空平台

    阿里巴巴新一代自研云数据库POLARDB与超图软件SuperMap GIS实现 “引擎级”深度对接,构建了自治.弹性.高可用的云原生时空数据管理平台联合解决方案,推出了业界首个“云原生数据库+云原生G ...

  7. 基于 Golang 构建高可扩展的云原生 PaaS(附 PPT 下载)

    作者|刘浩杨 来源|尔达 Erda 公众号 ​ 本文整理自刘浩杨在 GopherChina 2021 北京站主会场的演讲,微信添加:Erda202106,联系小助手即可获取讲师 PPT. 前言 当今时 ...

  8. 灵雀云容器PaaS平台助力知名股份制银行金融科技革新

    互联网.科技和金融的碰撞给银行业带来巨大影响.IT技术起初是传统金融提升效率的工具和方法,随着新技术的演进,技术成为驱动变革的核心要素.Fintech金融科技以技术和数据为驱动,用创新的方法改变了金融 ...

  9. 搜狐云景paas平台实践之路

    前言: 搜狐云景作为搜狐的paas平台,在2014年5月22日的云计算大会上正式发布了公测.初测,注册用户必须先申请邀请码参与公测会赠送用户100元电子券,经过实名认证之后会再赠送100电子券,目测可 ...

随机推荐

  1. Linux下Zabbix5.0 LTS监控基础原理及安装部署(图文教程)

    Zabbix 是什么? zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置,能监视 ...

  2. IE浏览器——网络集合代理无法启动

    用管理员身份运行cmd然后输入 sc config diagnosticshub.standardcollector.service start=demand

  3. Vue3学习(十)之 页面、菜单、路由的使用

    一.前言 好几天没更文了,周末真的太冷了,在家躺了一天不爱动.今天给暖气了,相对不那么冷了,就可以继续更文了. 由文章标题不难看出,就是实现点击菜单跳转的意思,我写的很直白了,哈哈. 二.实现点击菜单 ...

  4. Go语言核心36讲(Go语言进阶技术十五)--学习笔记

    21 | panic函数.recover函数以及defer语句 (上) 在本篇,我要给你展示 Go 语言的另外一种错误处理方式.不过,严格来说,它处理的不是错误,而是异常,并且是一种在我们意料之外的程 ...

  5. PyCharm Django Python 开发环境配置 详细教程

    PyCharm Django Python 开发环境配置 详细教程 1. Python 下载及安装 (1)根据需要的版本去 Python 官网(https://www.python.org/downl ...

  6. MapReduce Service更换集群外部时钟源,仅需10步

    摘要:MapReduce Service 集群使用NTP进行时钟同步.本文简要介绍了MapReduce Service集群NTP机制及NTP的配置方式. 本文分享自华为云社区<MapReduce ...

  7. 2021 羊城杯WriteUP

    比赛感受 题目质量挺不错的,不知道题目会不会上buu有机会复现一下,躺了个三等奖,发下队伍的wp Team BinX from GZHU web Checkin_Go 源码下载下来发现是go语言写的 ...

  8. Part 29 AngularJS intellisense in visual studio

    In the previous videos if you have noticed as we were typing the angular code in Script.js file we w ...

  9. 18-Spring Cloud Alibaba Nacos

    简介 为什么叫Nacos 前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service Nacos是什么 一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平 ...

  10. 一文看懂socket编程

    1.网络模型的设计模式 1.1 B/S模式 B/S: Browser/Server,浏览器/服务器模式,在一端部署服务器,在另外外一端使用默认配置的浏览器即可完成数据的传输. B/S结构是随着互联网的 ...