• zabbix使用jmx监控tomcat


     

    监控原理:当Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix-JavaGateway请求数据,而ZabbixJavagateway收到请求后使用"JMXmanagementAPI"去查询特定的应用程序,而前提是应用程序这端在开启时需要"-Dcom.sun.management.jmxremote"参数来开启JMX远程查询就行。Java程序会启动自身的一个简单的小程序端口12345向Zabbix-JavaGateway提供请求数据。

    从上面的原理图中可以看出,配置Zabbix监控Java应用程序的关键点在于:配置Zabbix-JavaGateway、让Zabbix-Server能够连接Zabbix-JavaGateway、Tomcat开启JVM远程监控功能等

    1、zabbix server安装Zabbix-Java-gateway

    Java-gateway不安装在zabbix-server上也可以,仅仅是作为一个采集器!

    [root@zabbix ~]# yum install -y zabbix-java-gateway

    [root@zabbix ~]# java -version

    openjdk version "1.8.0_171"

    OpenJDK Runtime Environment (build 1.8.0_171-b10)

    OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)

    2、配置zabbix sever端

    [root@zabbix ~]# vim /etc/zabbix/zabbix_java_gateway.conf
    LISTEN_IP="0.0.0.0"    #
    监听地址
    LISTEN_PORT=10052    #
    监听端口
    PID_FILE="/var/run/zabbix/zabbix_java.pid"#PID_FILE
    文件
    START_POLLERS=5        #
    开启的工作线程数

    [root@zabbix ~]# systemctl start zabbix-java-gateway.service

    [root@zabbix ~]# systemctl enable zabbix-java-gateway.service

    [root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf

    JavaGateway=127.0.0.1        #java_gateway的地址

    JavaGatewayPort=10052    #java_gateway的端口

    StartJavaPollers=5        #采集进程数,与java_gateway配置相同

    [root@zabbix ~]# systemctl restart zabbix-server.service        #重启zabbix-server

    注意:如果是编译安装zabbix server需要加上--enable-java以支持jmx监控,如果之前的zabbix server没加,那么请重新编译安装,参考编译参数

    ./configure --prefix=/user/local/zabbix --enable-server --enable-agent --enable-java --enable-ipv6 --with-mysql=/application/mysql-5.5.49/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc --with-openssl

     

    3、客户端配置

    配置tomcat开启jmx remote,配置zabbix-agent客户端Tomcat JMX,即tomcat的远程调用脚本

    [root@tomcat ~]# vim /application/tomcat/bin/catalina.sh

    #!/bin/sh

    CATALINA_OPTS="-Dcom.sun.management.jmxremote         #开启远程监控

    -Dcom.sun.management.jmxremote.authenticate=false         #关闭权限认证

    -Dcom.sun.management.jmxremote.ssl=false                 #远程ssl验证为false

    -Djava.rmi.server.hostname=192.168.1.7                    #部署了tomcat的主机地址

    -Dcom.sun.management.jmxremote.port=12345"            #远程监控端口

    [root@tomcat ~]# vim /etc/hosts        #设置本地host解析,不然会报错,12345端口无法查看,报错信息可在catalina日志中查看

    10.0.0.7     tomcat

    [root@tomcat ~]# /application/tomcat/bin/shutdown.sh        #重启tomcat

    [root@tomcat ~]# /application/tomcat/bin/startup.sh

    [root@tomcat ~]# netstat -lntup

    Active Internet connections (only servers)

    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

    tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2647/mysqld

    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1774/sshd

    tcp6 0 0 :::8009 :::* LISTEN 5946/java

    tcp6 0 0 :::55404 :::* LISTEN 5946/java

    tcp6 0 0 :::8080 :::* LISTEN 5946/java

    tcp6 0 0 :::22 :::* LISTEN 1774/sshd

    tcp6 0 0 :::12345 :::* LISTEN 5946/java

    tcp6 0 0 :::53819 :::* LISTEN 5946/java

    tcp6 0 0 127.0.0.1:8005 :::* LISTEN 5946/java

    udp6 0 0 :::5353 :::* 5946/java

    udp6 0 0 :::33848 :::* 5946/java

    4、测试

    4.1 Jconsole测试

    JConsole是jdk安装之后在windows下的一款监控测试工具,首先下载windows下的jdk应用程序并安装,安装好后在安装路径下即C:Program FilesJavajdk1.8.0_171in找到jconsole程序并打开

    新建连接

    连接成功后界面如下

    查看某个监控项的具体信息,监控对象的名字ObjectName与zabbix中的对应,可以利用此在zabbix中自定义监控项,创建模板

    4.2 命令行测试

    在有java环境的机器上下载cmdline-jmxclient-0.10.3.jar包进行测试

    [root@zabbix tools]# java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.7:12345 java.lang:type=Memory NonHeapMemoryUsage

    06/26/2018 14:44:55 +0800 org.archive.jmx.Client NonHeapMemoryUsage:

    committed: 117006336

    init: 2555904

    max: -1

    used: 113687744

    成功取到值!

     

    5、在zabbix的web界面添加主机

    添加主机,选择jmx接口,输入tomcat主机的ip地址

    为主机链接模板,模板选择需要适合当前的tomcat版本,其中的Template JMX Tomcat模板较老,不适合监控tomcat8.0以上版本,导入新版模板

    稍等片刻等待主机的jmx连接成功变为绿色

    5、查看最新数据

     

    至此,zabbix监控tomcat完成!

     

    博主原创文章,转载请务必注明出处

  • 相关阅读:
    光线投射算法与光线跟踪算法
    体绘制(Volume Rendering)概述之4:光线投射算法(Ray Casting)实现流程和代码(基于CPU的实现)
    体绘制(Volume Rendering)概述之3:光线投射算法(Ray Casting)原理和注意要点(强烈推荐呀,讲的很好)
    PCL学习笔记二:Registration (ICP算法)
    局部坐标系和全局坐标系
    Kinect for Windows SDK开发入门(十九):Kinect Fusion
    谈谈论文级别
    在Linux中搭建一个FTP服务器
    Java 编程实践
    Oracle数据库查询语句
  • 原文地址:https://www.cnblogs.com/ssgeek/p/9299273.html
Copyright © 2020-2023  润新知