当前位置: 首页 > news >正文

使用Collectd + InfluxDB + Grafana进行JMX监控

我们已经看到使用Collectd监控CPU /内存利用率(本文)。但它没有提供所有信息来确定性能问题的瓶颈。在本文中,我们将使用Collectd Java插件来使用其JMX技术来监视和管理Java虚拟机(JVM)。

目标:

使用Java的JMX技术监视和管理Java虚拟机(JVM)。

建筑:

我们的高级架构如下所示 - 我们将监控所有应用服务器,JMeter服务器和JMeter-master的JVM。

collectd流

JMX(Java托管扩展):

JMX是在Java 5.0发行版中引入的,用于在运行时管理/监视资源。使用JMX,我们将能够监视内存使用情况,垃圾收集,加载的类,线程数等随着时间的推移。这是性能工程中更有用的信息。更多信息在这里。

1

如上图所示,使用JMX连接器,JConsole / Collectd等客户端与MBean服务器通信,以获取我们感兴趣的应用程序的度量标准。

 

JConsole的:

JConsole是一个用于监视JVM的GUI工具。它附带Java JDK。让我们看看它如何帮助我们监控JMeter。[我假设你安装了JDK]

  • 启动JMeter
  • 打开一个简单的测试计划/创建一个。
  • 转到Java JDK Home / bin文件夹
  • 启动JConsole.exe

JConsole的-CONNECT

  • 它将显示正在运行的Java应用程序列表。选择ApacheJMeter.jar并连接。如果出现此对话窗口,请单击“不安全连接”

JConsole的不安全

  • 运行JMeter测试。

JConsole的显示器

  • JConsole显示内存使用情况,线程数[ 不要与JMeter的线程数混淆 ],加载类等
  • 单个选项卡提供更多信息,如GC。

监控远程过程:

  • 当我们在上面监视本地进程(ApacheJMeter.jar)时,JConsole也可用于监视远程进程(远程进程可能是您的tomcat服务器/ JMeter-server)
  • 应为远程进程设置某些属性,以便client / JConsole可以与JMX API通信以获取信息。在启动java进程时,传递以下属性。

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=6969
-Dcom.sun.management.jmxremote.rmi.port=6969
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

  • 如果您正在运行docker容器,请确保还使用了以下属性。

-Djava.rmi.server.hostname=${HOST_IP}

  • 要收集jmeter-server jmx指标,我在下面设置环境变量并启动jmeter-server.sh

export JVM_ARGS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.management.jmxremote.rmi.port=6969 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

  • 对于Tomcat:

CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.management.jmxremote.rmi.port=6969 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

  • 只需将上述参数传递给java进程即可启用JMX监控。
  • 现在,JConsole可以使用以下服务URL连接到远程JMX。

service:jmx:rmi:///jndi/rmi://hostname:6969/jmxrmi

 

Collectd Java插件:

JConsole是一个很好的工具。但它不保留历史数据。我们已经使用Collectd来监控我们的jmeter-servers和app服务器的CPU和内存利用率。我们可以使用Collectd的Java和JMX插件将JMX指标收集到InfluxDB中。

请先阅读本文关于collectd的用法。

我将在collectd配置文件中添加以下部分。

 

重启collectd服务。等几分钟来收集一些指标。

JMX-influxdb-1

 

获得此数据后,最后一步将在Grafana中创建一个仪表板来创建图形。

JMX-grafana

 

摘要:

使用Collectd插件,以及CPU和内存利用率,我们还可以将JMX指标收集到InfluxDB中。使用Grafana,我们可以可视化,性能测试结果(最小值,最大值,平均响应时间,吞吐量等),JMX度量(堆内存使用,加载的类计数,线程数,GC)和其他指标,如所有的CPU和内存利用率JMeter服务器,App服务器。

 

转载于:https://www.cnblogs.com/a00ium/p/10381299.html

相关文章:

  • 通过自己的项目实际经验,阐述为什么“恶心玩技术”?玩Java技术的教训(一)...
  • centos 生成网卡UUID
  • repo源及yum的常用方法
  • Python Django 初试手记
  • 线性表-顺序存储
  • c# xml读写 操作 实例
  • 设计 MySQL 数据表的时候一般都有一列为自增 ID,这样设计原因是什么,有什么好处?...
  • 买盘+卖盘≠成交量
  • 主题模型--机器学习
  • 初探C#3.0
  • (6)设计一个TimeMap
  • 20190218日记
  • Cisco路由器上配置DHCP全程详解
  • App的登录注册相关接口
  • LINQ : 在LINQ TO SQL中关闭ObjectTrackingEnabled提高性能
  • Github访问慢解决办法
  • GitUp, 你不可错过的秀外慧中的git工具
  • Invalidate和postInvalidate的区别
  • Java Agent 学习笔记
  • js ES6 求数组的交集,并集,还有差集
  • MD5加密原理解析及OC版原理实现
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 从重复到重用
  • 工作手记之html2canvas使用概述
  • 基于Android乐音识别(2)
  • 精彩代码 vue.js
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 深度解析利用ES6进行Promise封装总结
  • 深度学习入门:10门免费线上课程推荐
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 想写好前端,先练好内功
  • 新手搭建网站的主要流程
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​用户画像从0到100的构建思路
  • #vue3 实现前端下载excel文件模板功能
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #大学#套接字
  • #在 README.md 中生成项目目录结构
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • $NOIp2018$劝退记
  • (09)Hive——CTE 公共表达式
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (四)鸿鹄云架构一服务注册中心
  • (算法)Game
  • (转)Sublime Text3配置Lua运行环境
  • (转)程序员技术练级攻略
  • (转载)Linux 多线程条件变量同步