网络上很多教程也比较多和全了,但是自己做时候多多少少的坑备注下吧。

1,监控原理简单说一下,就是zabbix_server通过代理(zabbix_java_gateway)来获取agent端(tomcat)的数据。【当然可以和zabbix_agent分开使用了】

2。配置举例吧。zabbix_server:10.2.2.123  zabbix_java_gateway:10.2.2.124  tomcat:10.2.2.125  

  三台机器是可以在一起的,但是为了区分三个作用还是分开来看吧

3.在zabbix_server端,修改配置文件

JavaGateway=10.2.2.124
JavaGatewayPort=
StartJavaPollers=

在zabbix_java_gateway修改配置文件

LISTEN_IP="0.0.0.0"
LISTEN_PORT=
START_POLLERS=

listen_ip 我猜测是监控的地址池,不过没有验证  StartJavaPollers<=START_POLLERS

tomcat端修改catalina.sh文件,$(tomcat)/bin/Catalina.sh加入

export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
-Djava.rmi.server.hostname=10.2.2.125"

注意这个10.2.2.125要写进/etc/hosts中,因为jmxremote这个包在回调信息时候回查询其域名,不然回找不到路由。有时候不写也行,我块儿我也不太明白,先留着这个坑吧(我测试过连接成功之后删除可以用,可能是记住了路由,不过最后还是都配置好比较好)。最好实现所有的内网服务器可以通过域名来互相访问通。(ansible/saltstack之类的来做呗)

4.有人说要把jmxremote这个包放到$(tomcat)/lib/中,不过我没放也可以,给个下载地址吧。一般在tomcat自己镜像同目录的bin/extras/  目录中

然后下载cmdline-jmxclient-0.10.3.jar这个包,我一直不知道这个包是哪个公司做的,而且这个包好像也没人用新版本,这个版本用了n年了吧,不过能用就挺好。

现在tomcat端  测试

java -jar cmdline-jmxclient-0.10..jar - 127.0.0.1:

org.apache.logging.log4j2:component=Loggers,name=org.springframework,type="WebappClassLoader\n  context: ROOT\n  delegate: false\n----------> Parent Classloader:\njava.net.URLClassLoader@4bf558aa\n"
org.apache.logging.log4j2:component=Appenders,name=RollingFile,type="WebappClassLoader\n context: ROOT\n delegate: false\n----------> Parent Classloader:\njava.net.URLClassLoader@4bf558aa\n"
Catalina:context=/,host=localhost,type=Loader
com.alibaba.druid:type=DruidDataSourceStat
Catalina:name=HttpRequest1,type=RequestProcessor,worker="http-nio-8088"
java.util.logging:type=Logging
org.apache.logging.log4j2:component=Loggers,name=,type="WebappClassLoader\n context: ROOT\n delegate: false\n----------> Parent Classloader:\njava.net.URLClassLoader@4bf558aa\n"
java.lang:type=Compilation
Catalina:port=,type=Connector
JMImplementation:type=MBeanServerDelegate
java.lang:type=ClassLoading

有数据就说明catalina.sh配置没问题

然后在zabbix_java_gateway端 测试

java -jar cmdline-jmxclient-0.10..jar - 10.2.2.125:

org.apache.logging.log4j2:component=Loggers,name=org.springframework,type="WebappClassLoader\n  context: ROOT\n  delegate: false\n----------> Parent Classloader:\njava.net.URLClassLoader@4bf558aa\n"
org.apache.logging.log4j2:component=Appenders,name=RollingFile,type="WebappClassLoader\n context: ROOT\n delegate: false\n----------> Parent Classloader:\njava.net.URLClassLoader@4bf558aa\n"
Catalina:context=/,host=localhost,type=Loader
com.alibaba.druid:type=DruidDataSourceStat
Catalina:name=HttpRequest1,type=RequestProcessor,worker="http-nio-8088"
java.util.logging:type=Logging
org.apache.logging.log4j2:component=Loggers,name=,type="WebappClassLoader\n context: ROOT\n delegate: false\n----------> Parent Classloader:\njava.net.URLClassLoader@4bf558aa\n"
java.lang:type=Compilation
Catalina:port=,type=Connector
JMImplementation:type=MBeanServerDelegate
java.lang:type=ClassLoading

要让zabbix_java_gateway端也能获取数据才行

5.zabbix自带模板除了检测版本和压缩传输的两项,其他基本不能直接用,要用java -jar cmdline-jmxclient-0.10.3.jar - 10.2.2.125: | grep "监控项"慢慢调整才能用

比如

jmx["Catalina:type=GlobalRequestProcessor,name=http-8080",requestCount]
调整为
jmx["Catalina:type=GlobalRequestProcessor,name=\"http-8080\"",requestCount]

一个一个改太麻烦,可以导出模板xml文件,vim 或者 emeditor来批量修改(其他带正则表达式的替换工具也行)

改好了就添加主机,使用jmx的方式IP:port     10.2.2.125:12345

关联模板,

完成

centos7,zabbix3.2通过zabbix_java_gateway监控jmx[java/tomcat]的更多相关文章

  1. 利用JMX来监控大部分java应用

    JMX(JavaManagement Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架.JMX可以跨越一系列异构操作系统平台.系统体系结构和网络传输协议,灵活 ...

  2. Zabbix JMX之tomcat监控

    工作原理: 1.JAVA-GATEWAY  Zabbix本身不支持直接监控Java,在zabbix 1.8以前,只能使用Zapcat来做代理监控,而且要修改源代码,非常麻烦.所有后来为了解决这个监控问 ...

  3. zabbix 基于JMX的Tomcat监控

    zabbix 基于JMX的Tomcat监控 一.环境 ubuntu14.04 LTS Java 1.7.0 zabbix 2.4.5 二.安装配置 1.安装JavaGateway 在ubuntu14. ...

  4. zabbix日常监控项java(四)

    yum install net-tools netstat命令 yum -y install bash-completion 命令自动补全包 https://github.com/qiueer/zab ...

  5. 分布式协调服务Zookeeper集群监控JMX和ZkWeb应用对比

    分布式协调服务Zookeeper集群监控JMX和ZkWeb应用对比 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. JMX是用来远程监控Java应用的框架,这个也可以用来监控其他的J ...

  6. zabbix日常监控项java(四又分之一)

    因zabbix自带监控JMX的模板通用性差的问题,需要我们自己新建一个属于自己的模板,于是本文就出现了.... 大部分都是参考网上其他博主的文档,在此作为梳理.总结:以方便自己日后使用查询.

  7. CentOS7下部署java+tomcat+mysql项目及遇到的坑

    CentOS 7 下安装部署java+tomcat+mysql 前置:CentOS7安装:https://jingyan.baidu.com/article/b7001fe1d1d8380e7382d ...

  8. jconsole监控远程linux tomcat运行情况的配置 (转)

    来自:http://zhumeng8337797.blog.163.com/blog/static/100768914201242494649455/ 步骤如下: 1.编辑tomcat/bin/cat ...

  9. JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!)

    JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!) 1.文件准备: 服务器:CentOS Linux release 7.3.1611 (Core)     Apa ...

随机推荐

  1. 学习笔记CB005:关键词、语料提取

    关键词提取.pynlpir库实现关键词提取. # coding:utf-8 import sys import importlib importlib.reload(sys) import pynlp ...

  2. js实现复制内容到粘贴板

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. 联想拯救者r720+固态浦科特M8PeGN 的bios 设置

    最近笔记本左边的两个usb3.0接口都坏了,win10 报错usb端口上的电涌 真是一脸蒙B! 然后去打售后电话,说昌平没有售后,需要去海淀黄庄去维修,然后下午就去了那里,维修的人员说硬件坏了,需要1 ...

  4. oracle中创建数据库用户,并授权

    --查看表空间文件路径select * from dba_data_files where tablespace_name=$TABLESPACE CREATE TABLESPACE usr_aa D ...

  5. Laravel5 快速认证逻辑流程分析

    Laravel5本身自带一套用户认证功能,只需在新项目下,使用命令行php artisan make:auth 和 php artisan migrate就可以使用自带的快速认证功能. 以下为分析登录 ...

  6. 深入理解C#的装箱和拆箱(转)

    装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作.  1. 装箱在值类型向引用类型转换时发生 2. 拆箱在引用类型向值类型转换时发生 光上述两句话不难理解,但是往深处了解,就需要一些篇幅来解释了 ...

  7. LINUX系统软件安装和卸载的常见方法

    linux系统分很多种简单介绍几种常用的: 1.centos/redhat: 安装: rpm安装,如果有依赖,很闹心,如果使用--nodeps不检查依赖,会有问题. #rpm -ivh <XXX ...

  8. python3-基础6

    函数嵌套调用: 再调用一个函数的过程中,又调用了其他的函数 函数的嵌套定义:在一个函数的内部,又定义另外一个函数,函数内部定义的变量,在外部不能被调用 名称空间:一种隔离的概念,专门用来存放名字的地方 ...

  9. js 浏览器窗口大小改变 高度 宽度获取 window/document.height()区别

    <script> //当浏览器的窗口大小被改变时触发的事件window.onresize window.onresize = function(){ console.log($(windo ...

  10. 【剑指Offer】只出现一次的字符

    题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...