Zabbix 3.4监控JVM内存的方法

本文介绍了如何使用Zabbix 3.4监控JVM内存,特别是针对JVM内存溢出和泄露问题。通过jstat命令进行监控,但由于权限和selinux等问题,需要设置sudo权限并编写脚本来实现。文章详细讲述了设置过程,包括关闭selinux,赋予zabbix用户sudo权限,编写监控脚本,并将脚本集成到zabbix客户端配置中。最后展示了JDK 1.7和1.8的不同监控效果。
摘要由CSDN通过智能技术生成

Zabbix本身就能监控系统的内存利用率和CPU利用率,但是系统内存并不能反应JVM内存情况,我经常碰到JVM内存满掉而系统内存大量空余的情况,因为我们在启动Tomcat这样的中间件时,一般会使用-Xmx 4096m这样命令来指定JVM可用内存的大小,默认才512M大小实在是很小,但最大也不应该超过5-6G,因为太大的内存会导致GC过程非常缓慢。所以即使你插了64GB的内存条,但JVM一旦到达4G你的应用就会变慢变卡,而zabbix不会发现也不会报警的情况。

我们平时监控JVM内存是否有溢出或者泄露问题一般都采用jstat的命令,同理使用Zabbix也可以使用这个方法,其实现方式类似与ss监控TCP连接数。但是由于权限问题会比监控TCP连接数要复杂一些。



有几个点需要注意一下

1、JDK 1.8和之前版本的区别:JDK 1.8新增了Metiaspace区,替换了原来的Perm区,所以jstat出来的结果也会不一样。同样在使用jstat命令的时候,如果应用是JDK 1.8的那么jstat也要是JDK1.8里面的jstat。而对于1.7和1.6版本,则都可以使用。甚至可以使用OpenJDK。

2、不同用户的权限问题:如果你的应用是使用alex账号启动的,那么只能在alex用户或者root用户下执行jstat才能获得JVM的内存信息,所以zabbix用户一般是看不到的。所以我们在执行jstat命令的时候需要先将zabbix用户提升到root权限,就可以看到所有用户的JVM状态了。

3、selinux的问题:对于CentOS和红帽系统,系统默认开启了selinux,它会阻止zabbix通过shell脚本也就是jstat命令获取电脑的信息,显示出来的效果就是会提示permission denied。所以

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值