Zabbix-(六) JMX监控

Zabbix-(六) JMX监控

一.前言

Zabbix提供了JMX监控,它通过JMX API获取JVM信息,从而提供监控数据。本文讲述使用JMX监控Tomcat的JVM信息。

准备

  • Zabbix Server 4.4 (ip: 192.168.152.140)
  • 运行Java应用的主机 以下简称Server-A (已被Zabbix监控) (ip:192.168.152.142)


二.安装Zabbix-Java-gateway

Zabbix Server通过Zabbix Java gateway收集JMX监控数据,因此首先需要安装Zabbix-Java-gateway,同时修改Zabbix Server的配置。

  1. 安装Zabbix-Java-gateway

    可以在其他主机安装Zabbix-Java-gateway,只需要修改Zabbix-server配置文件,指定Zabbix-Java-gateway的地址和端口,这里就在部署Zabbix Server的主机上部署Zabbix-Java-gateway。

    # yum install zabbix-java-gateway
  2. 配置Zabbix-Java-gateway

    配置文件是/etc/zabbix/zabbix_java_gateway.conf文件,文本采取默认配置,配置项详细信息可以参考下图或者参考官方Zabbix-java-gateway配置项

  3. 启动Zabbix-Java-gateway
    # systemctl start zabbix-java-gateway
  4. 修改Zabbix server配置

    需要在zabbix server配置文件中增加zabbix-java-gateway相关配置

    # vim /etc/zabbix/zabbix_server.conf

    修改配置信息

    # zabbix-java-gateway地址
    JavaGateway=192.168.152.140
    
    # zabbix-java-gateway端口
    JavaGatewayPort=10052
    
    StartJavaPollers=5

    重启Zabbix server

    # systemctl restart zabbix-server


三.修改Java应用启动参数

本文是采用docker部署tomcat,因此本文中是修改tomcat的catalina.sh脚本,主要是添加以下几个jvm启动参数

-Dcom.sun.management.jmxremote
# java应用ip地址(docker部署 使用宿主机ip)
-Djava.rmi.server.hostname=192.168.152.142
# jmx端口
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.rmi.port=12345
# 不开启认证
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

在tomcat catalina.sh脚本则可以在文件前面添加

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.152.142"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.rmi.port=12345"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"

重新启动tomcat容器,暴露JMX 12345端口,并挂载数据卷(主要是配置tomcat的catalina.sh),这里可以先启动一个tomcat容器,将容器中的catalina.sh docker cp到宿主机上再做修改

# docker rm -f tomcat
# docker run --name tomcat -p 8080:8080 -p 12345:12345 -v /data/zabbix/catalina.sh:/usr/local/tomcat/bin/catalina.sh  -dit tomcat:jdk8-adoptopenjdk-hotspot

启动后可以通过jconsole工具测试一下能不能监控tomcat容器

四.在Zabbix界面配置JMX

服务启动后,需要在zabbix界面为Server-A主机上增加JMX监控。

点击【配置】-【主机】-选择【Server-A】

增加JMX配置

配置项
IP地址 192.168.152.142
端口 12345

五.自定义JMX监控模板

实际上Zabbix 4.4自带了两个JMX模板Template App Apache Tomcat JMXTemplate App Generic Java JMX模板一个可以监控Tomcat应用、一个可以监控普通Java应用。读者可以直接为被监控主机增加链接上述两个模板,也可以快速进行监控。

本文采用自定义的方式创建JMX监控模板

注:Zabbix提供的 JMX模板不一定适配所有 JDK 版本,例如 Template App Generic Java JMX 模板中提供了Perm Gen 永久代的监控项,而 JDK 8中已经将 Perm Gen永久代替换为了 Metaspace元空间,而模板中没有元空间的监控项

  1. 创建自定义JMX模板

    创建模板过程就不贴出来了,不清楚如何创建自定义模板的读者可以参考之前的文章如何创建自定义模板。这里创建了一个群组Java Server Group和自定义模板Custom JMX Template

  2. 创建监控项

    JMX监控项的键值格式为jmx[object_name,attribute_name],其中object_name是MBean的ObjectName,attribute_name为需要读取的属性值。如何确定需要监控的数据可以参考文末的JMX问题。

    官方对键值的说明:

    读者可以查看JMX监控项的官方文档

    堆内内存监控项

    配置项
    * 名称 堆内内存监控项
    类型 JMX agent代理程序
    * 键值 jmx["java.lang:type=Memory","HeapMemoryUsage.used"]
    * JMX 端点 service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi
    单位 B
    其他配置项 根据需要配置

    JVM线程总数监控

    配置项
    * 名称 JVM线程总数监控
    类型 JMX agent代理程序
    * 键值 jmx["java.lang:type=Threading","ThreadCount"]
    * JMX 端点 service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi
    其他配置项 根据需要配置

    Tomcat请求总数监控

    配置项
    * 名称 Tomcat请求总数监控
    类型 JMX agent代理程序
    * 键值 jmx["Catalina:type=GlobalRequestProcessor,name="http-nio-8080"",requestCount]
    * JMX 端点 service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi
    其他配置项 根据需要配置

    其中\"http-nio-8080\" 是使用tomcat的默认端口8080,如果修改了端口这里也要做对应调整。作为模板配置可以把这个参数在模板中配置成自定义宏,在主机中可以修改宏的值。

    Tomcat每分钟请求监控

    配置项
    * 名称 Tomcat每分钟请求监控
    类型 JMX agent代理程序
    * 键值 change("jmx["Catalina:type=GlobalRequestProcessor,name=\"http-nio-8080\"",requestCount]")
    * JMX 端点 service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi
    其他配置项 根据需要配置

    JVM老年代已使用内存监控

    配置项
    * 名称 JVM老年代已使用内存监控
    类型 JMX agent代理程序
    * 键值 jmx["java.lang:type=MemoryPool,name=Tenured Gen", "Usage.used"]
    * JMX 端点 service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi
    其他配置项 根据需要配置

    JVM老年代总内存监控

    配置项
    * 名称 JVM老年代已使用内存监控
    类型 JMX agent代理程序
    * 键值 jmx["java.lang:type=MemoryPool,name=Tenured Gen", "Usage.committed"]
    * JMX 端点 service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi
    其他配置项 根据需要配置


    老年代内存使用比例监控

    配置项
    * 名称 JVM老年代已使用内存监控
    类型 可计算的
    * 键值 jmx.old
    * 公式 100 * (last("jmx[\"java.lang:type=MemoryPool,name=Tenured Gen\", \"Usage.used\"]"))
    /
    last("jmx[\"java.lang:type=MemoryPool,name=Tenured Gen\", \"Usage.committed\"]")
    * 信息类型 浮点数
    单位 %
    其他配置项 根据需要配置


六.DashBoard创建图形

创建图形的步骤本文就忽略了,添加图形步骤可以参考Zabbix-(三)监控主机CPU、磁盘、内存并创建监控图形

七.其他

如何确定JMX的object_name和attribute_name

jmx监控项格式: jmx[object_name,attribute_name]

  1. 使用jconsole连接到JVM,选择MBean

  2. 找到需要监控的MBean,查看Bean信息和它的属性信息

    !

  3. 结合上面的步骤,那么zabbix监控项就可以填写为

    jmx["java.lang:type=Memory","HeapMemoryUsage.used"]

原文地址:https://www.cnblogs.com/Sherry-XRJ/p/11857632.html

时间: 2024-10-31 21:33:35

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

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利用JMX监控多实例Tomcat运行状态

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

Zabbix 通过 JMX 监控 java 进程

参考: [ JMX monitoring ] [ Zabbix Java gateway ] [ JMX Monitoring (Java Gateway) not Working ] 这里会说明通过 JMX 监控 java 进程的配置过程以及需要注意的问题. 本文在 zabbix 已经安装好的基础之上展开. 如果使用 zabbix_proxy , 配置完全一致, 只需要打开zabbix_proxy 对 java app server 有所有端口的访问权限即可. 环境说明 基本环境 OS: Ce

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通过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 server 实验环境 Centos 7 Zabbix 3.0 Tomcat 7.0 JDK 1.8 安装JDK tar -zxvf jdk-8u181-linux-x64.tar.gz -C /usr/local/ vim ~/.bash_profile(此处的配置文件是我的所有配置) export JAVA_HOME=/usr/local/jdk1.8.0_181 export TOMCAT_HOME=/usr/local/tomcat export CAT

企业——Zabbix使用JMX监控tomcat(JAVA类应用)

一.JMX的简介 JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架. JMX在Java编程语言中定义了应用程序以及网络管理和监控的体系结构.设计模式.应用程序接口以及服务.通常使用JMX来监控系统的运行状态或管理系统的某些方面,比如清空缓存.重新加载配置文件等.优点是可以非常容易的使应用程序被管理.伸缩性的架构使每个JMX Agent服务可以很容易的放入到Agent中,每个JMX的实现都提供几个核心的Agent服务

监控zabbix使用jmx监控tomcat

1.在zabix服务端安装java工具(服务器已安装zabbix) [[email protected] ~]# rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-java-gateway-2.4.7-1.el6.x86_64.rpm [[email protected] ~]# vim /etc/zabbix/zabbix_server.conf JavaGateway=127.0.0.1JavaGatewayPor