zabbix监控jvm内存

news/2025/2/26 19:46:16

Zabbix自带监控系统的内存利用率和CPU利用率,但是系统内存并不能反应JVM内存情况

在本地我们可以通过jconsole或者jvisualvm进行监控jvm内存情况

不过正是环境一般都是部署在linux上,且不是桌面版,这个时候想监控,可以通过zabbix集成jmx实现

jvisualvm使用方式,参考 https://www.cnblogs.com/gossip/p/6141941.html

效果:

这是使用的jdk自带的监控工具

当然,如果需要远程监控的话,需要在catalina文件设置下启动参数,这里不做账号密码限定,所以authenticate=false

windows修改catalina.bat

通过set设置,引用变量使用 %%
在 rem ----- Execute The Requested Command --------------------------------------- 下面添加
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

linux修改catalina.sh

不用添加set,引用变量使用 $
在 rem ----- Execute The Requested Command --------------------------------------- 下面添加
CATALINA_OPTS=”$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=127.0.0.1
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

java直接运行jar包

java -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar chy.jar

 之后就可以通过远程连接并且监控jvm详情了,如上效果图

linux测试

需要下载cmdline-jmxclient-0.10.3.jar包

通过上述方式启动之后如下

再通过命令进行查看,比如查看非堆内存使用情况

java -jar cmdline-jmxclient-0.10.3.jar - 39.105.97.50:12345 java.lang:type=Memory NonHeapMemoryUsage

 

zabbix的jmx监测

具体查看官方文档

https://www.zabbix.com/documentation/4.2/manual/config/items/itemtypes/jmx_monitoring

zabbix可以集成jmx,用于监控jvm内存情况集成jmx步骤逻辑

  1. 在zabbix服务器上安装配置zabbix-java-gateway,并且配置相关参数。
  2. 配置tomcat服务器,JMX服务相关参数,上传依赖包(如果是jar包运行,直接添加参数即可)
  3. zabbix web端添加监控
  4. 启动tomcat服务,查看zabbix web端监控运行状态,排错(java -jar运行)
  5. 自定义图形和监控项

1.安装zabbix-java-gateway并配置

安装

yum -y install zabbix-java-gateway

配置

grep "^[A-Z]" /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"        #监听本机所有ip
LISTEN_PORT=10052            #在10052端口提供服务
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=5

启动服务

systemctl start zabbix-java-gateway

 

配置zabbix-server

  grep "^[A-Z]" /etc/zabbix/zabbix_server.conf|grep Java

JavaGateway=127.0.0.1     #JavaGateway所在服务器的IP
JavaGatewayPort=10052     #JavaGateway的默认端口
StartJavaPollers=5         #JVM进行监控轮询实例数,默认是0

 重启zabbix-server

systemctl restart zabbix-server 

 

 2.配置tomcat服务器

 由于我是直接jar包运行,直接通过启动参数设置即可,如果是tomcat的话,修改catalina文件即可

java -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=39.105.97.50 -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar tale-latest.jar --server.port=80

 3.zabbix web端添加监控

配置jmx接口 配置→主机→创建主机

添加链接模板 template app apache tomcat jmx和template APP generic java jmx

 

 

4.查看zabbix web端监控运行状态 

添加完毕,查看jmx是否是绿色

 

 如果是红色,查看具体原因,可能是端口暴露问题,或者是启动的参数设置问题

5.自定义图形和监控项

jmx为绿色,标志着添加成功,之后自定义图形,设置监控项即可

第一步创建图形

 

第二步,添加你需要的监控项即可

这里选取四项,查看效果图

 ok,其余的配置再摸索,监控多个java进程的jvm还须研究

 


http://www.niftyadmin.cn/n/605978.html

相关文章

grep 多条件并行满足_用grep 查出符合多个条件的用法

用grep 查出符合多个条件的用法F:谁会用grep 查出符合多个条件的用法比如我要对警告文件中的错误信息抓出来 关键字是:Errors ORA- .trc 该怎么写?我的想法:cat /u01/app/oracle/admin/sid/bdump/alert_sid.log | grep Errors ORA- .trc > Alert_sid_Error.txtQ:grep | gre…

Windows 8实用窍门系列:7.Windows 8 中的三种进度条和两种定时器

在Windows 8中的默认进度条也与时俱进,和之前Silverlight中的不一样。本文将讲述三种不同的进度条,另外在本文中也会将两种定时器。 进度条 主要属性: Value:当前进度值。 Maximum:最大进度值。 IsIndeterminate:指定进度条是否确…

python初识(四)

python初识(四) 基本函数 基础样式 def 函数名(参数列表):函数体returneg def add(a,b)c a bprint(id(c))return c d add(1,2) print(id(d)) print(d)def showP(person):for item in person:print(item) p ["hjx",30,1.6,100] showP(…

TreeView的有关操作

function StorePage() { ddocument; td.selection?(d.selection.type!None?d.selection.createRange().text:):(d.getSelection?d.getSelection():); void(keyitwindow.open(http://www.365key.com/storeit.aspx?tescape(d.title)&uescape(d.location.href)&cescap…

【SQL语法】系列06:利用ORDER BY排序

默认为升序,如果希望按降序对记录进行排序,可使用 DESC 关键字。 Orders 表: Company OrderNumber IBM 3532 W3School 2356 Apple 4698 W3School 6953 例 1 以字母顺序显示公司名称: SELECT Company, OrderNumber FROM Orders ORDER…

将jar包发布到maven的中央仓库细节整理

在学习springboot框架的时候,会引入各种各样的starter依赖,照着教程尝试写了个demo-spring-boot-stater,可以理解为一个组件,随引随用 但是只能自己引用,无法共享,于是想将其发布到maven中央仓库 网上参考了…

蛙蛙推荐:一套.net窗体身份验证方案(解决了防止用户重复登陆,session超时等问题)...

function StorePage() { ddocument; td.selection?(d.selection.type!None?d.selection.createRange().text:):(d.getSelection?d.getSelection():); void(keyitwindow.open(http://www.365key.com/storeit.aspx?tescape(d.title)&uescape(d.location.href)&cescap…

详细解析Java中抽象类和接口的区别

在Java语言中, abstract class 和 interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。 abstract class和 interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换&…