场景

Prometheus 社区开发了 JMX Exporter 用于导出 JVM 的监控指标,以便使用 Prometheus 来采集监控数据。当您的 Java 应用部署在Rainbond上后

可通过本文了解部署在 Rainbond 上的 Java 应用如何使用 JMX Exporter 暴露 JVM 监控指标。

JMX Exporter 简介

Java Management Extensions,JMX 是管理 Java 的一种扩展框架,JMX Exporter 基于此框架读取 JVM 的运行时状态。JMX Exporter 利用 Java 的 JMX 机制来读取 JVM 运行时的监控数据,然后将其转换为 Prometheus 可辨识的 metrics 格式,让 Prometheus 对其进行监控采集。

JMX Exporter 提供 启动独立进程JVM 进程内启动(in-process)两种方式暴露 JVM 监控指标:

启动独立进程

JVM 启动时指定参数,暴露 JMX 的 RMI 接口。JMX Exporter 调用 RMI 获取 JVM 运行时状态数据,转换为 Prometheus metrics 格式,并暴露端口让 Prometheus 采集。

JVM 进程内启动(in-process)

JVM 启动时指定参数,通过 javaagent 的形式运行 JMX Exporter 的 jar 包,进程内读取 JVM 运行时状态数据,转换为 Prometheus metrics 格式,并暴露端口让 Prometheus 采集。

官方不建议使用 启动独立进程 方式,该方式配置复杂且需单独的进程,进程本身的监控又引发了新的问题。本文以 JVM 进程内启动(in-process)方式为例,在 Rainbond 中使用 JMX Exporter 暴露 JVM 监控指标。

在 Rainbond 上使用 JMX Exporter

在Rainbond上对于构建类型不同的组件有不同的处理方式,如下

通过源码构建的Java应用

自V5.3版本后通过 Rainbond 源码构建的 JAVA 应用,默认都会将 JMX Exporter 打包,用户使用时只需添加环境变量开启即可。

  1. 为 JAVA 服务组件添加一个指定的环境变量 ES_ENABLE_JMX_EXPORTER = true ,即可开启 jmx_exporter

  2. 在 JAVA 服务组件的端口管理处添加一个 5556 端口,这是 jmx_exporter 默认监听的端口。

通过镜像构建的Java应用

对于镜像或应用市场构建的应用,可以使用初始化类型的插件实现注入 jmx_agent

往期文章中详细讲解过其实现原理,可以参考:Rainbond通过插件整合SkyWalking,实现APM即插即用 Agent插件实现原理部分

  • 构建 jmx_exporter 插件

进入团队 -> 插件 -> 新建插件,创建初始化类型插件,源码地址:https://github.com/goodrain-apps/jmx_exporter.git

插件构建成功后即可使用,为 JAVA 服务组件开通此插件即可。

  • 挂载存储

为 JAVA 服务组件挂载存储 /tmp/agent,使其可以与插件共享存储。

通过共享存储,初始化插件将所需的配置文件以及 Agent 放在共享存储中供主服务使用,实现服务无侵入。

  • 添加环境变量

为 JAVA 服务组件添加环境变量 JAVA_OPTS = -javaagent:/tmp/agent/jmx_prometheus_javaagent-0.16.1.jar=5556:/tmp/agent/prometheus-jmx-config.yaml

可挂载配置文件 /tmp/agent/prometheus-jmx-config.yaml 替换现有的配置文件。

  • 添加端口

在组件的端口管理处,添加新的端口 5556

最后更新组件即可生效。

添加应用监控点

应用监控是基于 rbd-monitor 实现,当我们添加了监控点后就相当于创建了一个 servicemonitor

进入组件内 -> 监控 -> 业务监控 -> 管理监控点,新增监控点,填写以下信息:

  • 配置名:自定义

  • 收集任务名称:自定义

  • 收集间隔时间:10秒

  • 指标路径:/metrics

  • 端口号:选择 jmx_exporter 端口

添加完后更新组件使其生效。

添加监控图表

接下来就可以添加一个监控图表,来展示 JAVA 服务组件中 JVM 的指标行:

点击业务监控面板上方的 添加图表

输入新的标题,以及对应的查询条件 jvm_memory_bytes_used 后,点击 查询。如果正常返回图表,则说明查询条件是正确的。标题的定义尽量清晰明了,并在有必要的情况下明确单位。

更多指标可参考 官方文档

扩展Grafana

可通过grafana 展示,以下简述操作步骤:

  1. 获取 rbd-monitor 服务 CLUSTER IP
$ kubectl get svc -l name=rbd-monitor -n rbd-system

NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
rbd-monitor ClusterIP 10.43.112.131 <none> 9999/TCP 13d
  1. 在平台上添加第三方服务,填写 rbd-monitor 服务的 CLUSTER IP
  2. 从开源应用商店安装 Grafana并添加依赖。
  3. 进入Grafana,Configuration -> Add Data Source -> URL为 http://127.0.0.1:9999 ,导入 JVM dashboard ID 8878 ,通过Grafana面板展示应用监控信息。

References Link

jmx_export 插件Github https://github.com/goodrain-apps/jmx_exporter.git

jmx_export 官方 https://github.com/prometheus/jmx_exporter.git

jvm dashboard https://grafana.com/grafana/dashboards/8878

关于Rainbond

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

Github:https://github.com/goodrain/rainbond

官网:https://www.rainbond.com

微信群:请搜索 Rainbond 并关注微信公众号进入技术交流群

钉钉群:请搜索钉钉群号 31096419

使用JMX Exporter监控Rainbond上的Java应用的更多相关文章

  1. Java虚拟机性能管理神器 - VisualVM(5) 监控远程主机上的JAVA应用程序【转】

    Java虚拟机性能管理神器 - VisualVM(5) 监控远程主机上的JAVA应用程序[转] 标签: javajvm监控工具性能优化 2015-03-11 18:37 1394人阅读 评论(0) 收 ...

  2. VisualVM监控远程主机上的JAVA应用程序

    使用VisualVM监控远程主机上JAVA应用程序时,需要开启远程主机上的远程监控访问,或者在远程JAVA应用程序启动时,开启远程监控选项,两种方法,选择其中一种就可以开启远程监控功能,配置完成后就可 ...

  3. 利用VisualVm和JMX远程监控Java进程

    自Java 6开始,Java程序启动时都会在JVM内部启动一个JMX agent,JMX agent会启动一个MBean server组件,把MBeans(Java平台标准的MBean + 你自己创建 ...

  4. Zabbix通过JMX方式监控java中间件

    Zabbix2.0添加了支持用于监控JMX应用程序的服务进程,称为“Zabbix-Java-gateway”:它是用java写的一个程序. 工作原理: zabbix_server想知道一台主机上的特定 ...

  5. JAVA JMX协议监控

    JMX协议监控,可通过JMX协议远程监控,实时监控线上jvm情况,并通过平台管理界面进行 展示,可以通过监控实时获得线上服务器运行情况. 可以监控内存.实时线程.共享内存等各种信息. 获取实时线程信息 ...

  6. 干货分享!JAVA诊断工具Arthas在Rainbond上实践~

    别再担心线上 Java 业务出问题怎么办了,Arthas 帮助你解决以下常见问题: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 ...

  7. visualvm 监控 远程 机器上的 Java 程序

    JDK里面本身就带了很多的监控工具,如JConsole等. 我们今天要讲的这款工具visualvm,就是其中的一款.但是这款工具是在JDK1.6.07及以上才有的.它能够对JAVA程序的JVM堆.线程 ...

  8. 转:visualvm监控远程机器上的Java程序

    转自:http://hanwangkun.iteye.com/blog/1195526 JDK里面本身就带了很多的监控工具,如JConsole等.我们今天要讲的这款工具visualvm,就是其中的一款 ...

  9. 利用JMX来监控大部分java应用

    JMX(JavaManagement Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架.JMX可以跨越一系列异构操作系统平台.系统体系结构和网络传输协议,灵活 ...

随机推荐

  1. CONTRASTIVE REPRESENTATION DISTILLATION

    目录 概 主要内容 超参数的选择 代码 Tian Y., Krishnan D., Isola P. CONTRASTIVE REPRESENTATION DISTILLATION. arXiv pr ...

  2. 编写Java程序,将JButton按钮按网格布局管理器格式放置

    返回本章节 返回作业目录 需求说明: 将JButton按钮按网格布局管理器格式放置 实现思路: 实现代码: public void init(){ setLayout(new GridLayout(4 ...

  3. PowerShell 管道符之Select的使用方法【一】

    之前我文章中我们略微提到过管道符的操作,但并不多,这篇主要讲解一下详细的使用方法 假设我们要对数组中的数字1-10中我想要从右往左换句话说就是从字符串最后一个字开始倒过来往前数截取6个子字符串时可以这 ...

  4. 整理spring + mysql + redis + 测试 的配置格式 和源码

    经过多次整理,最终以这样的文件格式配置 目前配好的基本模板: 1 <?xml version="1.0" encoding="UTF-8"?> 2 ...

  5. 解决ubuntu 18.04(桌面版)搜狗输入法不能正常使用的问题

    ubuntu下搜狗输入法的配置文件在~/.config目录下,一般有三个目录SogouPY.SogouPY.users.sogou-qimpanel 执行命令 $ cd ~/.config $ rm ...

  6. KMP算法解题模板(更新)

    /* kmp算法的主要作用在于对next数组的运用,所以这里只给出next数组的模板 性质1:对于每一个长度len的子串,该子串的最小循环节为len-next[len] 性质2:kmp的next不断向 ...

  7. 一键AI着色,黑白老照片画面瞬间鲜活

    很多老照片或者电影受时代技术所限制,只能以黑白形式保存:经过编辑后的黑白视频和图片早已丢失彩色原图,这对于保存者来说都十分遗憾.如何能将单一乏味.陈旧斑驳的黑白照片变成鲜活亮丽的彩色照片,从照片中重新 ...

  8. markdown mermaid序列图

    序列图(时序图) 序列图是一种交互图,它显示了进程如何相互操作以及按什么顺序操作. sequenceDiagram participant l as 大灰狼 participant y as 小羊 l ...

  9. python极简教程06:生成式和装饰器

    测试奇谭,BUG不见. 这一场,主讲python的生成式和装饰器. 目的:掌握四种生成式(列表.生成器.集合.字典),装饰器的原理和使用. 生成式 01 什么是生成式? 能够用一行代码,快速高效的生成 ...

  10. CSS3 动画3D视角下 旋转圆环

    首先是  transform 属性: transform 属性向元素应用 2D 或 3D 转换.该属性允许我们对元素进行旋转.缩放.移动或倾斜. 加上对应属性则可得到3D透视效果下的形态 本次以圆形( ...