当前位置: 首页 > 后端技术 > Java

使用JMXExporter监控Rainbond上的Java应用

时间:2023-04-01 18:39:39 Java

场景。Prometheus社区开发了JMXExporter,用于导出JVM监控指标,方便使用Prometheus采集监控数据。当你的Java应用部署到Rainbond上后,你可以通过本文了解部署在Rainbond上的Java应用如何使用JMXExporter暴露JVM监控指标。JMXExporterJavaManagementExtensions简介,JMX是一个用于管理Java的扩展框架,JMXExporter基于它来读取JVM的运行时状态。JMXExporter利用Java的JMX机制,在JVM运行时读取监控数据,然后转换成Prometheus可以识别的metrics格式,让Prometheus进行监控和收集。JMXExporter提供两种方式暴露JVM监控指标:启动独立进程和JVM进程内启动(in-process):启动独立进程,启动JVM时指定参数,暴露JMX的RMI接口。JMXExporter调用RMI获取JVM运行时状态数据,转换为Prometheusmetrics格式,并暴露端口供Prometheus收集。JVM进程内启动(in-process)JVM启动时指定参数,运行javaagent形式的JMXExporterjar包,读取进程中的JVM运行状态数据,转换成Prometheusmetrics格式,并暴露端口供普罗米修斯收集。官方不推荐使用启动独立进程的方式。这种方法配置复杂,需要单独的进程。过程本身的监控又引发了新的问题。本文以JVM进程内启动(in-process)方式为例,利用Rainbond中的JMXExporter暴露JVM监控指标。UsingJMXExporteronRainbond对于Rainbond上不同构建类型的组件有不同的处理方式。以下从V5.3版本开始的源代码构建的Java应用程序和Rainbond源代码构建的Java应用程序将默认打包JMXExporter。使用时只需添加一个环境变量启用即可。在JAVA服务组件中添加指定的环境变量ES_ENABLE_JMX_EXPORTER=true,启用jmx_exporter。在JAVA服务组件的端口管理中添加一个5556端口,这是jmx_exporter的默认监听端口。通过镜像构建的Java应用对于通过镜像或者应用市场构建的应用,可以使用初始化类插件注入jmx_agent。其实现原理在之前的文章中已经有详细的讲解。可以参考:Rainbond通过插件集成SkyWalking实现APM即插即用Agent插件实现原理。构建jmx_exporter插件进入Team->Plug-in->NewPlug-in,创建一个初始化类型的插件,源码地址:https://github.com/goodrain-a...插件后-in构建成功,可以使用了,为JAVA服务组件启用这个插件就可以了。MountStorage为JAVA服务组件挂载storage/tmp/agent,以便它们可以与插件共享存储。通过共享存储,初始化插件将需要的配置文件和Agent放在共享存储中,供主服务使用,使服务不被侵入。添加环境变量添加环境变量JAVA_OPTS=-javaagent:/tmp/agent/jmx_prometheus_javaagent-0.16.1.jar=5556:/tmp/agent/prometheus-jmx-config.yaml可以为JAVA服务组件agent挂载配置文件/tmp//prometheus-jmx-config.yaml替换现有的配置文件。在组件的端口管理中添加一个端口,添加一个新的5556端口,最后更新组件即可生效。添加应用监控点应用监控是基于rbd-monitor实现的。当我们添加一个监控点时,就相当于创建了一个servicemonitor。进入组件->监控->业务监控->管理监控点,添加一个监控点,填写如下信息:配置名称:自定义采集任务名称:自定义采集间隔:10秒指标路径:/metrics端口号:选择jmx_exporter端口并添加后,更新组件使其生效。添加监控图接下来可以在JAVA服务组件中添加监控图显示JVM指标行:点击业务监控面板上方的添加图表,输入新的标题和对应的查询条件jvm_memory_bytes_used,点击查询.如果图正常返回,说明查询条件正确。标题应尽可能简洁明了,必要时应指定单位。更多指标请参考官方文档。扩展Grafana可以通过grafana展示。下面简单介绍操作步骤:获取rbd-monitor服务CLUSTERIP。$kubectlgetsvc-lname=rbd-monitor-nrbd-systemNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGErbd-monitorClusterIP10.43.112.1319999/TCP13d在平台上添加第三方服务,填写rbd-monitor服务的CLUSTERIP。从开源应用商店安装Grafana并添加依赖项。进入Grafana,配置->添加数据源->URL为http://127.0.0.1:9999,导入JVMdashboardID8878,通过Grafana面板显示应用监控信息。参考Linkjmx_export插件Githubhttps://github.com/goodrain-a...jmx_export官方https://github.com/prometheus...jvmdashboardhttps://grafana.com/grafana/d...