zabbix基于jmx监控jvm内存

配置YUM源
[root@zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@zabbix ~]# yum -y install zabbix-java-gateway
[root@zabbix ~]# vi /etc/zabbix/zabbix_java_gateway.conf 
LISTEN_IP="0.0.0.0" 监听所有地址
LISTEN_PORT=10052	监听端口
START_POLLERS=5		启动线程
TIMEOUT=3			超时时长(秒)
[root@zabbix ~]# systemctl start zabbix-java-gateway
[root@zabbix ~]# systemctl enable zabbix-java-gateway
配置被监控端开启jmx

不用配置catalina.sh,将如下配置写到/etc/profile设置全局变量,避免配置tomcat出问题,根据自己ip大段获取ip,ansible批量部署
bash:

#!/bin/bash

IP=`ip a|grep 10.100.* | awk '{print $2}' |cut -d '/' -f1`

echo "export CATALINA_OPTS=\"-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=12345 -Djava.rmi.server.hostname=${IP}\"" >> /etc/profile

!!!非本地启动必须同时配置变量到bashrc文件,比如用jenkins/ansible远程启动!!!
echo "export CATALINA_OPTS=\"-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=12345 -Djava.rmi.server.hostname=${IP}\"" >> /etc/bashrc

source /etc/profile

jmx.yml:

---
- hosts: all
  user: root
  gather_facts: False
  tasks:
  - name: copy shell
    copy: src=/root/jmx.sh dest=/root/ mode=777
  - name: source
    shell: sh /root/jmx.sh
    

ansible批量分发:

[root@zabbix ~]# ansible-playbook jmx.yml

查看系统全局环境变量是否存在,重启tomcat生效

[root@zabbix ~]# env | grep CATALINA_OPTS
CATALINA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=12345 -Djava.rmi.server.hostname=10.100.8.7
[root@zabbix ~]# ss -tnl | grep 12345
LISTEN     0      50        [::]:12345                 [::]:* 
配置控制台

zabbix自带通用模板部分key值不可用,因为jmx开启后没有模板对应的值,所以会显示大量的错误不支持,如下已将模板修改至适配并修改监控项触发器为中文显示,亲测可用

应用集:

  1. Classes 类
  2. Compilation 编译时长
  3. Garbage collector GC
  4. Memory 内存
  5. Memory pool 内存池
  6. Operating system 操作系统
  7. Runtime 运行时间
  8. Threads 线程

模板地址传送门Template-tomcat


部分键值简单说明
type=类型 参数 使用情况
jmx["java.lang:type=OperatingSystem“,ProcessCpuLoad]
jmx[“java.lang:type=MemoryPool,name=PS Survivor Space”,Usage.max]
jmx[“java.lang:type=Memory”,NonHeapMemoryUsage.max]

也就是说模板里的类型要和jmxclient列出的值一一对应,否则key值为不存在,原模板指定key与实际不符合所以才MemoryPool类型的监控大量不可用,可以自己对比去查看

[root@zabbix ~]# java -jar cmdline-jmxclient-0.10.3.jar - 10.100.8.7:12345 | grep  OperatingSystem
java.lang:type=`OperatingSystem`
[root@zabbix ~]# java -jar cmdline-jmxclient-0.10.3.jar - 10.100.8.7:12345 | grep  MemoryPool
java.lang:name=Compressed Class Space,type=`MemoryPool`
java.lang:name=Metaspace,type=`MemoryPool`
java.lang:name=PS Old Gen,type=`MemoryPool`
java.lang:name=PS Eden Space,type=`MemoryPool`
java.lang:name=PS Survivor Space,type=`MemoryPool`
java.lang:name=Code Cache,type=`MemoryPool`
[root@zabbix ~]# java -jar cmdline-jmxclient-0.10.3.jar - 10.100.8.7:12345 | grep  -w Memory
java.lang:type=`Memory`

模板展示
在这里插入图片描述

添加jmx类型
在这里插入图片描述
链接模板
在这里插入图片描述
部分源数据查看

[root@zabbix Template-tomcat]# java -jar cmdline-jmxclient-0.10.3.jar - 10.100.8.7:12345
Catalina:ThreadPool="http-nio-8080",name="_default_",type=SSLHostConfig
Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/nhis,j2eeType=Filter,name=shiroFilter
java.lang:type=Runtime
com.alibaba.druid:id=847906181,type=DruidDataSource
java.lang:name=PS Scavenge,type=GarbageCollector
java.nio:name=mapped,type=BufferPool
Catalina:host=localhost,name=AccessLogValve,type=Valve
java.lang:name=Compressed Class Space,type=MemoryPool
com.alibaba.druid:type=DruidDataSourceStat
Catalina:context=/nhis,host=localhost,name=StandardContextValve,type=Valve
Catalina:name="http-nio-8080",type=GlobalRequestProcessor
java.util.logging:type=Logging
Catalina:name=HttpRequest1,type=RequestProcessor,worker="http-nio-8080"
java.lang:type=Compilation

查看内存池
[root@zabbix Template-tomcat]# java -jar cmdline-jmxclient-0.10.3.jar - 10.100.8.7:12345 | grep MemoryPool
java.lang:name=Compressed Class Space,type=MemoryPool
java.lang:name=Metaspace,type=MemoryPool
java.lang:name=PS Old Gen,type=MemoryPool
java.lang:name=PS Eden Space,type=MemoryPool
java.lang:name=PS Survivor Space,type=MemoryPool
java.lang:name=Code Cache,type=MemoryPool

查看内存池中PS老生代使用情况
[root@zabbix Template-tomcat]# java -jar cmdline-jmxclient-0.10.3.jar - 10.100.8.7:12345 java.lang:name=PS\ Old\ Gen,type=MemoryPool Usage
09/02/2021 16:48:17 +0800 org.archive.jmx.Client Usage: 
committed: 392691712	申请
init: 85458944			初始
max: 1364721664			最大
used: 315557024			使用

图形展示
在这里插入图片描述
数据对比
使用jdk自带的jconsole工具即可实时获取到我们上述监控的数据(需要系统有图形化),可用来验证数据实际性,可以看到我们两边对比的数值基本一致
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值