• zabbix使用jmx监控tomcat


    在zabbix server上安装

    Zabbix 服务器上安装配置zabbix-java-gateway

    1、下载官方提供的软件包并进行安装:

    wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-java-gateway-4.0.0-2.el7.x86_64.rpm
    yum -y install zabbix-java-gateway-4.0.0-2.el7.x86_64.rpm 

    2、查看安装路径,使用rpm包的方式默认是安装在/usr/share/zabbix-java-gateway/目录

    rpm -qpl zabbix-java-gateway-4.0.0-2.el7.x86_64.rpm
     cd /usr/share/zabbix-java-gateway/

    3、启动zabbix-java-gateway,默认的监听端口为10052,如果需要修改端口可以参考此链接
    systemctl start zabbix-java-gateway

    netstat -ntlp  增加了10052端口

    配置tomcat JMX服务相关参数

    1、修改tomcat配置文件,启用JMX

    vim /usr/bin/tomcat/bin/catalina.sh 
    #文件中添加如下内容:
    
    CATALINA_OPTS="$CATALINA_OPTS
    -Dcom.sun.management.jmxremote  #开启jmx远程监控
    -Dcom.sun.management.jmxremote.port=12345
    -Dcom.sun.management.jmxremote.authenticate=false #免密码认证
    -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.56.11" #tomcat服务器

    2、重启tomcat 服务器,JMX的1234端口开启

    cd /usr/local/tomcat7/bin/
    ./shutdown.sh
    ./startup.sh

    zabbix-serve配置zabbix-gateway

    1、修改zabbix-server的配置文件如下

    grep "^[A-Z]" /usr/local/zabbix_server/etc/zabbix_server.conf
    LogFile=/tmp/zabbix_server.log
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabbix
    JavaGateway=127.0.0.1   #JavaGateway所在服务器的IP
    JavaGatewayPort=10052   #JavaGateway的默认端口
    StartJavaPollers=5     #JVM进行监控轮询实例数,默认是0,关闭状态,需要开启
    Timeout=4
    LogSlowQueries=3000
     

    2、重启zabbix-server

    systemctl restart zabbix-server
     

    3、在zabbix agent部署的tomcat服务器上,copy对应的java jmx监控的相关jar包到tomcat对应的目录下。

    https://download.csdn.net/download/qq_38206606/10234970
    下载模板及监控相关的jar包
    cp catalina-jmx-remote.jar /usr/bin/tomcat/lib cp cmdline-jmxclient-0.10.3.jar /usr/bin/tomcat/bin

    4、编辑zabbix agent配置文件,配置完成如下:

    复制代码
    LogFile=/tmp/zabbix_agentd.log    //zabbix agent日志文件地址
    Server=192.168.1.103            //zabbix server地址
    ListenPort=10050                //zabbix agent监听端口
    Timeout=20                    //超时时间
    Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf        //zabbix agent副配置文件目录配置
    UnsafeUserParameters=1        
    AllowRoot=1
    User=root
    ServerActive=192.168.1.103        //server地址配置
    EnableRemoteCommands=1        //允许远程执行命令
    Hostname=192.168.1.100        //配置agent本地hostname名称
    
    UserParameter=jvm[*],/usr/local/zabbix/share/zabbix/alertscripts/jvm_memory.sh $1    //jvm内存监控脚本
    UserParameter=system_memory[*],/usr/local/zabbix/share/zabbix/alertscripts/system_memory.sh $1        //系统内存监控脚本
    复制代码

    5、在zabbix中添加主机,选择jmx 12345端口,添加模板

    6、在zabbixagent端使用cmdline-jmxclient-0.10.3.jar提供的相关接口,获取jvm的监控信息。此处执行相关命令的操作目录为:/usr/tomcat/bin。

    复制代码
    正确过滤:
    java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 | grep 'Catalina:' | grep 'type=GlobalRequestProcessor' | grep 'name=' 
    正确的参数
    Catalina:name="http-nio-8080",type=GlobalRequestProcessor
    正确:
    java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 'Catalina:name="http-nio-8080",type=GlobalRequestProcessor' bytesReceived
    zabbix正确调用
    jmx["Catalina:type=ProtocolHandler,port=8080",compression]
     
    获取tomcat的最大线程数。
    java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345  'Catalina:name="http-nio-8080",type=ThreadPool' maxThreads
    06/09/2017 17:34:47 +0800 org.archive.jmx.Client maxThreads: 200
    
    获取tomcat繁忙线程数。
    java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 'Catalina:name="http-nio-8080",type=ThreadPool' currentThreadsBusy
    06/09/2017 17:36:48 +0800 org.archive.jmx.Client currentThreadsBusy: 5
    
    获取tomcat当前已经分配线程数。
    java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345  'Catalina:name="http-nio-8080",type=ThreadPool' currentThreadCount
    06/09/2017 17:38:15 +0800 org.archive.jmx.Client currentThreadCount: 11
    
    获取活动线程的当前数目,包括守护线程和非守护线程。
    java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 java.lang:type=Threading ThreadCount
    06/09/2017 17:55:34 +0800 org.archive.jmx.Client ThreadCount: 225
    
    获取自从 Java 虚拟机启动以来创建和启动的线程总数目。
    java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 java.lang:type=Threading TotalStartedThreadCount
    06/09/2017 17:55:52 +0800 org.archive.jmx.Client TotalStartedThreadCount: 112225
    
    获取Java 虚拟机启动或峰值重置以来峰值活动线程计数。
    java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 java.lang:type=Threading PeakThreadCount
    06/09/2017 17:56:06 +0800 org.archive.jmx.Client PeakThreadCount: 244
    
    获取守护线程总数。
    java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 java.lang:type=Threading DaemonThreadCount
    06/09/2017 17:52:20 +0800 org.archive.jmx.Client DaemonThreadCount: 195
    复制代码

    7、键值对解析如下:

    复制代码
    名称:tomcat已分配线程数
    键值:jmx["Catalina:name="http-bio-8080",type=ThreadPool",currentThreadCount]
    
    名称:tomcat最大线程数
    键值:jmx["Catalina:name="http-bio-8080",type=ThreadPool",maxThreads]
    
    名称:tomcat繁忙线程数
    键值:jmx["Catalina:name="http-bio-8080",type=ThreadPool",currentThreadsBusy]
    
    名称:java虚拟机启动以来创建和启动的线程总数目
    键值:jmx["java.lang:type=Threading","TotalStartedThreadCount"]
    
    名称:tomcat活动线程的当前数目,包括守护线程和非守护线程。
    键值:jmx["java.lang:type=Threading","ThreadCount"]
    
    名称:java虚拟机启动或峰值重置以来峰值活动线程数
    键值:jmx["java.lang:type=Threading","PeakThreadCount"]
    复制代码
  • 相关阅读:
    hutool 糊涂
    java 连接 Redis 工具
    生成6位验证码
    @FeignClient定义冲突解决
    Seate分布式事务解决方案
    算法——最小生成树的关键边和伪关键边
    《Kubernetes权威指南》读书笔记
    Docker——容器卷管理
    算法——课程表 II(有向图拓扑排序)
    Docker——网络
  • 原文地址:https://www.cnblogs.com/liulj0713/p/9927989.html
Copyright © 2020-2023  润新知