Zabbix监控JMX协议

JMX 全称是Java Management Extensions,即Java管理扩展。Java程序会开放一些端口,用来获取运行状况。
    从JAVA 5开始,JDK提供了一些JVM检测的API,这就是有名的java.lang.management 包,包里提供了下面9个MXBean:

ClassLoadingMXBean 用于 Java 虚拟机的类加载系统的管理接口。  CompilationMXBean 用于 Java 虚拟机的编译系统的管理接口。 GarbageCollectorMXBean 用于 Java 虚拟机的垃圾回收的管理接口。 MemoryManagerMXBean 内存管理器的管理接口。 MemoryMXBean Java 虚拟机的内存系统的管理接口。 MemoryPoolMXBean 内存池的管理接口。 OperatingSystemMXBean 用于操作系统的管理接口。Java 虚拟机在此操作系统上运行。 RuntimeMXBean Java 虚拟机的运行时系统的管理接口。 ThreadMXBean Java 虚拟机线程系统的管理接口。

在Zabbix 1.8以前,只能使用Zapcat来监控JMX,并需要修改源代码来支持,非常麻烦。另一种方法是使用jmx-cmd-client,它的作用是从命令行去获取JMX信息,可以在它的上层包装一个程序,用来获取JMX数据。

从Zabbix2.0开始,内置了监控JMX的功能,叫做"Zabbix Java Gateway
",在Zabbix Server和Zabbix Proxy上会启动名为"Zabbix Java Gateway
"的进程,当需要获取JMX数据时,Zabbix Server会"问
"JMX Gateway,然后JMX Gateway 根据JMX管理API去查询需要的数据。在使用时,Java程序不需要在代码中新增任何东西,只需要在启动时加上一些JVM参数,使得它可以支持使用监控端口监控JMX。

java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar /usr/share/doc/openjdk-6-jre-headless/demo/jfc/Notepad/Notepad.jar

它启动了一个本地非常简单的Java程序,使用12345端口,具体的jar依据情况各自不同,ssl=false说明它不需要身份验证。

下面介绍监控JMX原理,配置。

1    工作原理:
     
     zabbixserver想知道一台主机上的特定的JMX值时,它向ZabbixJavagateway询问,而ZabbixJavagateway使用“JMXmanagementAPI”去查询特定的应用程序,而前提是应用程序这端在开启时需要“-Dcom.sun.management.jmxremote”参数来开启JMX查询就行了。
     Zabbixserver有一个特殊的进程用来连接Javagateway叫StartJavaPollers;Javagateway通过配置文件中START_POLLERS参数设置启动多个线程,在zabbix服务器这边如果一个连接所用时间超过Timeout,将会被中断,但是Javagateway将继续从JMXcounter取数据。所以StartJavaPollers设置的值要小于等于START_POLLERS设置的值。ZabbixJavagateway就相当于一个代理。

2 安装Javagateway
   本机使用zabbix server版本为2.2.2

2.1 安装jdk

[[email protected] ~]# yum install gongsi-jdk(公司打包过的jdk)
[[email protected] ~]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

2.2 下载安装zabbix-java-gateway

[[email protected] ~]# wget http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-java-gateway-2.2.2-1.el6.x86_64.rpm
[[email protected] ~]# yum install zabbix-java-gateway-2.2.2-1.el6.x86_64.rpm

2.3 修改/etc/zabbix/zabbix_java_gateway.conf 配置

LISTEN_IP="0.0.0.0"  #可以不配置,采用默认值即可
LISTEN_PORT=10052  #可以不配置,采用默认值即可
PID_FILE="/var/run/zabbix/zabbix_java.pid" #该项必须配置,保存pid文件的位置
START_POLLERS=5 #必须配置,启动的进出数

2.4 修改
/etc/zabbix/
zabbix_server.conf  配置 (
如果服务端是zabbix-proxy,同理配置即可)

JavaGateway=127.0.0.1 #指定Java gateway的ip地址或主机名,由于Java gateway是搭建在zabbix server所在的主机上所以可用127.0.0.1; 
JavaGatewayPort=10052 #Java gateway监听的端口号 
StartJavaPollers=5 #设定连接java gateway 的进程数,当设置为0时表示不具有抓取java信息的能力

3. 启动zabbix-java-gateway

[[email protected] ~]# /etc/init.d/zabbix-server start
[[email protected] ~]# /etc/init.d/zabbix-java-gateway start
[[email protected] ~]# netstat -tunlp | grep 10052
tcp        0      0 :::10052                    :::*                        LISTEN      28385/java   

参考:
https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/jmx_monitoring

时间: 2024-10-06 16:00:47

Zabbix监控JMX协议的相关文章

Zabbix通过JMX监控tomcat——防火墙策略问题分析

一.现 状 对于Zabbix通过JMX来监控tomcat,网络上有很多文章,但大都是相同或类似的,且都是没有设置防火墙的,所以就安装而言百度就行.现在为了服务的安全,是必须开启防火墙的.于是出现了一系列的问题. 二.当前环境 1.Zabbix_server的Zabbix版本是3.0.4,系统是Centos7.0,使用YUM安装. Centos7.0 YUM安装地址:http://blog.csdn.net/reblue520/article/details/52136850 2.Zabbix-s

zabbix通过JMX监控tomcat,防火墙策略配置

一.目前的环境 被监控端192.168.153.191 /usr/local/tomcat 下载了catalina-jmx-remote.jar放到了tomcat安装目录的lib目录下,现在为止这个jar包没有派上用场. /usr/local/jdk1.7.0_79 在tomcat的bin目录下的catalina.sh脚本里面添加如下内容(可以写成一行,这个百度下能找到) Html代码 CATALINA_OPTS="${CATALINA_OPTS} -Djava.rmi.server.hostn

Zabbix 监控 tomcat 连接池(报错org.archive.jmx.Client ...is not a registered bean)

Zabbix 监控 tomcat 连接池 一.     前言 领导提出需求,需要监控tomcat的连接池,之前已经通过zabbix监控了jvm(关于jvm监控这部分,后续补上).在网上找了很多教程,经历了很多坑,不过还是要感谢那些帮助过我的人,踩着坑搞出来,也是记忆犹新呀. 二.     基础环境 操作系统:Centos 6.8 Jdk:1.8.0_77(jdk最好是1.7及以上) Tomcat:7.0.69 Zabbix:3.0.3 三.     环境部署 (一)         Zabbix

Zabbix通过JMX监控tomcat

Zabbix监控tomcat方案 1)zabbix的版本为2.4 编译zabbix的时候需要添加参数 --enable-java 2)服务器端配置 2.1确认已经安装JDK [[email protected] zabbix]# java -version java version "1.7.0_79" Java(TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot(TM) 64-Bit Server VM (buil

Zabbix使用jmx监控tomcat

Zabbix自带了一部分对于JMX的监控,如果要想使用此模板对tomcat进行比较简单的监控可以考虑使用此模板. 与其他应用使用zabbix-agent不同,对JMX进行监控需要使用zabbix-java-gateway,来与系统的JMX交互获取数据,zabbix-java-gateway将获取到的数据交给zabbix-agent,然后将zabbix-agent将数据发送给zabbix-server. 这里为了方便理解,使用两台机器,一台作为zabbix-server, 另一台作为tomcat服

zabbix通过JMX监控tomcat状态

因为公司大量使用tomcat作为应用服务,所以,这两天催生了一个想法,通过zabbix监控tomcat的运行状态,从而能够更快的发现tomcat服务出现的问题以及判断问题出现在哪块. 在网上找了一些资料来看,写的都不是很全面(PS:对于我这种菜鸟来说,还有很多东西不知道的,所以需要有解释的详细点的文档来帮助我更好理解原理,于是就有了本篇博文的诞生!) 首先,zabbix监控tomcat等这一类java平台的应用不是直接通过agentd来实现的,而是使用jmx来获取到tomcat这类应用的状态,然

zabbix基于SNMP 协议监控路由器

zabbix基于SNMP 协议监控路由器 步骤 步骤超级方便. 1. 路由器上开启snmp 2. 确保外网能访问到 3. 用snmpwalk测试 4. 添加zabbix主机,SNMP interfaces中添加ip,去掉默认的zabbix agent,模块选择Template SNMP Interfaces snmpwalk测试命令 [[email protected] init.d]# snmpwalk -v 2c -c public 192.168.1.253 1.3.6.1.2.1.2.2

官网下载包模式安装tomcat的jmx进行zabbix监控

JMX的全称是Java Management Extensions,即Java管理扩展.Java程序会开放一些端口,用来获取运行状况.在Zabbix 1.8以前,只能使用Zapcat来监控JMX,并需要修改源代码来支持,非常麻烦.另一种方法是使用jmx-cmd-client,他的作用是从命令行去获取JMX信息,可以在它的上层包装一个程序,用来获取JMX数据. 从Zabbix 2.0开始,内置了监控JMX的功能,叫做"Zabbix Java Gateway",在Zabbix Server

Zabbix利用JMX监控多实例Tomcat运行状态

自使用Zabbix监控系统以来,一直想用JMX来监控Tomcat,但是一直都没配置成功,总有一些问题,监控端的报错又很抽象,搜索网上大都是复制粘贴之产物,或者是缺斤短两之网文,但是一直都没放弃,至今终于配置成功,并且成功获取数据,形成图形,现在把自己解决问题的过程和配置的一些心得整理成文. 环境介绍: Centos 6.5 Zabbix 2.2.15 Tomcat 7.0.68 监控JMX配置步骤 1.在zabbix服务器上安装配置zabbix-java-gateway,并且配置相关参数. 2.