文档章节

Zabbix监控JMX协议

乐晨
 乐晨
发布于 2015/10/22 14:34
字数 1026
阅读 3285
收藏 6

    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

[root@dev-vhost011 ~]# yum install gongsi-jdk(公司打包过的jdk)
[root@dev-vhost011 ~]# 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
[root@dev-vhost011 ~]# wget http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-java-gateway-2.2.2-1.el6.x86_64.rpm
[root@dev-vhost011 ~]# 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
[root@dev-vhost011 ~]# /etc/init.d/zabbix-server start
[root@dev-vhost011 ~]# /etc/init.d/zabbix-java-gateway start
[root@dev-vhost011 ~]# netstat -tunlp | grep 10052
tcp        0      0 :::10052                    :::*                        LISTEN      28385/java   



4 在zabbix-agent客户端上加入相关参数启动java

java \
-Djava.rmi.server.hostname=10.59.72.51 \
-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

如遇报错:JMX: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested excepti
需要在/etc/hosts 指定
127.0.0.1   dev-vhost012

5 在zabbix界面上配置客户端jmx 接口


正常会显示绿色状态




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


© 著作权归作者所有

共有 人打赏支持
乐晨
粉丝 87
博文 109
码字总数 127052
作品 0
徐汇
系统管理员
私信 提问
Zabbix 3.0 监控Tomcat

配置Tomcat性能监控项目 1.通过JAVA 管理扩展(Java Management Extensions,JMX)采集java应用和JAVA容器的监控数据, 要想让zabbix系统通过JMX方法采集监控数据,则需要在zabbix系统的服务器...

YLSL2014
07/04
0
0
ZABBIX 监控 JBOSS 7.1.1

一 环境 1.1 操作系统 [root@host-xxxsoft]# lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:print......

tacg
2016/10/27
50
1
深入浅出Zabbix 3.0 -- 第三章 Zabbix 监控方式

第三章 Zabbix 监控方式 有人说通过Zabbix可以完成任何监控任务,只有你想不到的,但没有监控不了的,真是这样吗?当你通过本章了解了Zabbix提供的多种监控方式后,你就会发现此言非虚。 这里...

大白一起学
06/26
0
0
ZABBIX通过JMX监控tomcat

在Zabbix中,JMX监控数据的获取由专门的代理程序来实现,即Zabbix-Java-Gateway来负责数据的采集,Zabbix-Java-Gateway和JMX的Java程序之间通信获取数据 JMX在Zabbix中的运行流程: 1.Zabbix-...

baishuchao
2017/08/22
0
0
如何监控 Tomcat?Zabbix 与 Cloud Insight 对比

JVM 监控工具有很多,像命令 jstat,jmap,jstack,jinfo 可以根据不同需求查看不同的系统信息,还有图像化界面 jconsole,都是很方便的工具。这些可以参考 JAVA自带监控工具的介绍。 但是现...

OneAPM蓝海讯通
2016/01/25
101
0

没有更多内容

加载失败,请刷新页面

加载更多

全屋WiFi彻底无死角 这才是终极解决方案

无线网络现在不仅在家庭中不可或缺,在酒店、医院、学校等场景中的需求也越来越多。尤其是这些场景中,房间多但也需要每个房间都能够完美覆盖WiFi,传统的吸顶式AP就无法很好的解决问题。 H3...

linux-tao
22分钟前
0
0
Python日期字符串比较

需要用python的脚本来快速检测一个文件内的二个时间日期字符串的大小,其实实现很简单,首先一些基础的日期格式化知识如下 复制代码 %a星期的简写。如 星期三为Web %A星期的全写。如 星期三为...

dragon_tech
22分钟前
0
0
ORA 各种oraclesql错误

ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某...

青峰Jun19er
26分钟前
2
0
没错,老板让我写个 BUG!

前言 标题没有看错,真的是让我写个 bug! 刚接到这个需求时我内心没有丝毫波澜,甚至还有点激动。这可是我特长啊;终于可以光明正大的写 bug 了🙄。 先来看看具体是要干啥吧,其实主要就是...

crossoverJie
39分钟前
54
0
开源软件会被云杀死吗 ?

本文转载云头条,原作者:Michael Stiefel是Reliable Software公司的负责人,是一名软件架构和开发顾问。 文章要点 虽然开源开发不会消失,但商业开源厂商的未来不是很有希望。随着全面管理的...

linuxCool
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部