009-通过jmx监控tomcat
前言
想理解怎么监控tomcat,必需识下图(图片源出网络)
zabbix-Web前端界面,它通过数据库里数据展示。和其它组件不直接关联
zabbix-server运行在10051端口,Zabbix-server要知道java应用程序的某项性能的使用时候 ,会启动自身的一个Zabbix-JavaPollers进程去链接zabbix-JavaGateway请求数据,而zabbix-Javagateway收到请求后并使用;
Zabbixserver有一个特殊的进程用来连接Javagateway叫StartJavaPollers;Javagateway通过配置文件中START_POLLERS参数设置启动多个线程,在zabbix服务器这边如果一个连接所用时间超过Timeout,将会被中断,但是Javagateway将继续从JMXcounter取数据。所以StartJavaPollers设置的值要小于等于START_POLLERS设置的值。
zabbix-java-gateway工作在10052端口,Zabbix-Javagateway就相当于一个代理,它负责收集客户端tomcat数据。图中的12345端口是在配置tomcat时指定的,可是自定义。
在一个监控系统只有一个zabbix-java-gateway,可以部署在zabbix-sever端也可以部署在其他机器上,需要和zabbix-server网络可达。
Zabbix-Javagateway就相当于一个代理,它负责收集客户端tomcat数据,zabbix-server只要向zabbix-java-gateway取数据添加到数据库即可
---------------------
版权声明:本文为CSDN博主「陈袁」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/achenyuan/article/details/86710829
服务端安装
yum install -y java java-devel zabbix-java-gateway
添加java环境
注意JAVA_HOME的路径,安装的环境可能不同,设置不同
vim /etc/profile
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
修改java-gateway配置文件
[root@server ~]# grep ^[a-Z] /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=5
TIMEOUT=3
zabbix-java-gateway默认工作在10052端口
zabbix-server默认工作在10051端口,zabbix-agent默认工作在10050端口
配置zabbix_java_gateway.conf和zabbix_server.conf
2个文件都在/etc/zabbix下
重点:Java-gateway配置文件的START_POLLERS参数 >= zabbix_server配置文件的StartJavaPollers参数,建议一样,都设为5。
配置zabbix_java_gateway.cnf
# This is a configuration file for Zabbix Java Gateway.
# It is sourced by startup.sh and shutdown.sh scripts.
### Option: zabbix.listenIP
# IP address to listen on.
#
# Mandatory: no
# Default:
LISTEN_IP="0.0.0.0"(本机ip地址,如果和server安装在相同的位置可以不修改)
### Option: zabbix.listenPort
# Port to listen on.
#
# Mandatory: no
# Range: 1024-32767
# Default:
LISTEN_PORT=10052(端口可以修改为其他,在server段需要相同的配置)
### Option: zabbix.pidFile
# Name of PID file.
# If omitted, Zabbix Java Gateway is started as a console application.
#
# Mandatory: no
# Default:
# PID_FILE=
PID_FILE="/var/run/zabbix/zabbix_java.pid"
### Option: zabbix.startPollers
# Number of worker threads to start.
#
# Mandatory: no
# Range: 1-1000
# Default:
START_POLLERS=5(设置启动多个线程,这里和server段相同)
### Option: zabbix.timeout
# How long to wait for network operations.
#
# Mandatory: no
# Range: 1-30
# Default:
# TIMEOUT=3
TIMEOUT=3(超时时间)
配置zabbix_server.conf:
让zabbix-server服务能连接到zabbix-java-gateway服务
### Option: JavaGateway(找到这里配置以下三个参数)
# IP address (or hostname) of Zabbix Java gateway.
# Only required if Java pollers are started.
# Mandatory: no
# Default:
JavaGateway=192.168.199.63 #如果是本机安装直接使用127.0.0.1
### Option: JavaGatewayPort
# Port that Zabbix Java gateway listens on.
# Mandatory: no
# Range: 1024-32767
# Default:
JavaGatewayPort=10052 #端口号和javagateway要对应
### Option: StartJavaPollers
# Number of pre-forked instances of Java pollers.#
# Mandatory: no
# Range: 0-1000
# Default:
StartJavaPollers=5 #线程数和客户端配置对应 不能少于客户端数目
重启zabbix-server和zabbix-java-gateway服务
systemctl restart zabbix-server
systemctl restart zabbix-java-gateway
客户端配置
客户端java环境安装和tomcat安装自行准备,在tomcat下的/bin/catalina.sh文件中添加以下内容
CATALINA_OPTS="$CATALINA_OPTS
-Djavax.management.builder.initial=
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=本机ip"
注意添加的位置在#!/bin/sh下面。
注意-Djava.rmi.server.hostname=192.168.2.32要加了,hostname填本机的ip地址,除非是127.0.0.1
查看12345端口监听情况:netstat -antlp|grep 12345
这里有一点提醒,打/etc/zabbix/zabbix_java_gateway.cnf,在文件有末尾有如下代码:
# uncomment to enable remote monitoring of the standard JMX objects on the Zabbix Java Gateway itself
#JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345
# -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
取消注释后,zabbix_java_gateway本身就开启了JMX功能,就可能被远程监控。
添加catalina-jmx-remote.jar(可不操作)
在tomcat/lib下执行:wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.37/bin/extras/catalina-jmx-remote.jar
要找到对应tomcat版本的catalina-jmx-remote.jar。访问tomcat各个版本网站,从上面一直找下去。catalina-jmx-remote.jar文件在tomcat版本的/bin/extras/目录下,只要替换wget后面url即可。
检查防火墙状态
如果防火墙开启会报java.net.NoRouteToHostException: 没有到主机的路由
查看防火墙状态:firewall-cmd --state
关闭防火墙:systemctl stop firewalld.service
测试
下载cmdline-jmxclient-0.10.3.jar,百度网盘,提取码f37k。
测试
java -jar /usr/local/tomcat/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=Memory HeapMemoryUsage
1
结果
[root@localhost bin]# java -jar /usr/local/tomcat/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=Memory HeapMemoryUsage
01/31/2019 09:38:50 +0800 org.archive.jmx.Client HeapMemoryUsage:
committed: 247332864
init: 16777216
max: 247332864
used: 160725592
启动tomcat
./bin/startup.sh
zabbix添加tomcat监控
配置zabbix-web
打开界面,配置->主机->主机zabbix server(我的zabbix-java-gateway和zabbix-server安装在同一台虚拟机上)
找到JMX接口,配置如下,然后点击添加按钮
反过来看开头的那幅图,Zabbix-server通过JavaPollers进程调用zabbix-java-gateway获得tomcat数据,而zabbix-java-gateway就是通过这里配置的tomcat地址和端口,连接到tomcat从而获取到数据。
找到主机,如果JMX显示颜色,则配置成功。
注意,必需添加添加的tomcat的模板,如zabbix自带的Template App Apache Tomcat JMX或自定义的模板,后面JMX才能变绿,否则永远不亮
或者查看/var/log/zabbix/zabbix-server.log日志,出现enabling JMX agent checks on host “192.168.1.239”: host became available则表示能连接上。
跨域连接
两台不同的IP的设置和上面是一样的,只有在tomcat/bin/catalina.sh文件里hostname要写具体IP。
比如
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=12345
-Djava.rmi.server.hostname=192.168.1.239"
配置windows系统客户端
配置上tomcat
除了编辑catalina.bat外其它都一样。
windows系统上,如果是以服务方式启动tomcat,则12345是不会被监听的,必需以命令行启动tomcat。
添加tomact中JMX的参数
在tomcat/bin下找到catalina.bat文件,在set "CURRENT_DIR=%cd%"下加上:
set JAVA_OPTS= -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.2.32
1
注意Djava.rmi.server.hostname=192.168.2.32要加了,除非是127.0.0.1
添加catalina-jmx-remote.jar
在tomcat/lib下执行:wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.37/bin/extras/catalina-jmx-remote.jar加粗样式
要找到对应tomcat版本的catalina-jmx-remote.jar。访问tomcat各个版本网站,从上面一直找下去。catalina-jmx-remote.jar文件在tomcat版本的/bin/extras/目录下,只要替换wget后面url即可。
重启tomcat
执行bin目录下shell脚本
./shutdown.bat
./startup.bat
1.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
成功取到值!
009-通过jmx监控tomcat的更多相关文章
- zabbix使用jmx监控tomcat
zabbix监控Tomcat/JVM实例性能(115) – 运维生存时间http://www.ttlsa.com/zabbix/zabbix-use-jmx-monitor-tomcat/ zabbi ...
- 监控应用服务器使用JMX监控Tomcat (推荐)
前言:做了一个监控应用服务器的项目(支持Tocmat.WebSphere.WebLogic各版本), 过程也算是磕磕绊绊,由于网上缺少相关资料,或者深陷于知识的海洋难以寻觅到有效的资料,因而走过不少弯 ...
- linux下利用JMX监控Tomcat
利用JMX监控Tomcat,就是相当于部署在tomcat上的应用作为服务端,也就是被管理资源的对象.然后通过程序或者jconsole远程连接到该应用上来.远程连接需要服务器端提供ip和port.如果需 ...
- 运用JMX监控Tomcat/Java jvisualvm简要说明
公司线上项目出现了java heap space 然后经过查询知晓了下面工具于是开始了尝试. visualvm能干什么:监控内存泄露,跟踪垃圾回收,执行时内存.cpu分析,线程分析... jvisua ...
- zabbix通过jmx监控tomcat
Zabbix版本: Zabbix 3.0.2 一.服务端配置 1.安装jdk(版本1.7.0_79) 安装与配置比较简单,过程省略.执行java -version命令,出现类似界面表示成功. 2. ...
- Linux记录-JMX监控Tomcat上传到falcon
1.登录测试服务器xxxxxx xxxxxx su root输入xxxx 2.先修改Tomcat的启动脚本,(linux下为catalina.sh),添加以下内容: CATALINA_OPTS=&qu ...
- zabbix 部署 jmx 监控tomcat
zabbix提供了一个java gateway的应用去监控jmx(Java Management Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架.JMX可以 ...
- abbix通过JMX监控Tomcat(被监控端安装Tomat的服务器防火墙策略iptables配置)
原文地址:http://jaychang.iteye.com/blog/2214830 一.目前的环境 被监控端192.168.153.191 /usr/local/tomcat 下载了catalin ...
- Zabbix系列之三——部署JMX监控tomcat
zabbix提供了一个java gateway的应用去监控jmx(Java Management Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架.JMX可以 ...
随机推荐
- Mysql的BTREE和HASH索引
建议默认使用BTree索引,如果时间太长,可以尝试HAST索引,但限制如下: 不支持between and 只支持 = IN <> 不支持范围查询如between and和like. 无法 ...
- DeepFaceLab:手动提取高精度脸图,减少抖动!
DeepFaceLab默认情况下都都是自动提取脸部,整体来说效果不错,脸部曲线识别度也比较高.但是自动不是万能的,有些图片的轮廓识别并不好.而识别不好最直接的结果就是合成的视频可能会出现抖动. 也就是 ...
- OpenCV学习笔记(11)——Canny边缘检测
了解Canny边缘检测的概念 1.原理 Canny边缘检测是一种非常流行的边缘检测算法,是 John F.Canny在1986年提出的.它是一个有很多步构成的算法 1)噪声去除 使用5*5的高斯滤波器 ...
- 三步解决IDEA系列开发工具 RubyMine、IntelliJ IDEA 卡顿问题
近日有小伙伴跟我反映说自己的开发工具很卡,有没有什么解决方案?答案是当然有啦!接下来看看怎么设置! 1.打开RubyMine,或IDEA,上边工具栏选择Help,下拉选择Edit Custom VM ...
- Linux 常用命令之 mv cp scp
1.mv 命令是move的缩写,用于文件(或文件夹)移动的. 1)将 luna 目录下的文件 a.txt,移动到 miracle 目录下: mv ./luna/a.txt ./miracle/ 2)将 ...
- PowerDesigner_15连接Oracle11g,反向工程导出模型图
1.启动PowerDesigner2.菜单:File->ReverseEngineer->Database出来NewPhysicalDataModel对话框,DBMS选择ORACLEVer ...
- 数据测试002:利用Jmeter推送测试数据(上)
数据测试002:利用Jmeter推送测试数据(上) 刚才用Jmeter配置一下MySQL数据库花了点时间,好在最后都解决了,注意下面几个问题: 1)没有配置 “Cannot load JDBC dr ...
- Akka系列(二):Akka中的Actor系统
前言......... Actor模型作为Akka中最核心的概念,所以Actor在Akka中的组织结构是至关重要,本文主要介绍Akka中Actor系统. 1.Actor系统 Actor作为一种封装状态 ...
- IDEA 双击只选择了一个变量的某部分单词
1,很多抄袭文章说 在keymap 里搜索 select Word at caret , 鄙视手动抄袭和编写爬虫来 作恶的开发者. 2,自己试了,File菜单 ----> settings- ...
- PTA(Basic Level)1061.判断题
判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分. 输入格式: 输入在第一行给出两个不超过 100 的正整数 N 和 M,分别是学生人数和判断题数量.第二行给出 M ...