zabbix实现对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远程监控功能等

环境说明
安装方法:yum安装
Zabbix版本: Zabbix-3.0.4
JDK版本: 1.8.0.102
zabbix-server操作系统: CentOS 7.2 X86_64
zabbix-agent操作系统: CentOS 6.5 X86_64
tomcat:8.0.26

注意:
如果是编译安装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

1.配置zabbix-agent客户端Tomcat JMX,即tomcat的远程调用脚本
配置jmx编辑catalina.sh,加入如下配置

vim /usr/local/tomcat/bin/catalina.sh

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote #开启远程监控
  -Dcom.sun.management.jmxremote.port=12345 #远程监控端口
  -Dcom.sun.management.jmxremote.ssl=false #远程ssl验证为false
  -Dcom.sun.management.jmxremote.authenticate=false #关闭权限认证
  -Djava.rmi.server.hostname=192.168.3.18" #部署了tomcat的主机地址

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

重新启动Tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

验证是否启动jmx监听成功
lsof -i :12345
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    3509 root   20u  IPv6  21949      0t0  TCP *:italk (LISTEN)

通过第三方工具测试:
方法一:使用windowsJava工具JConsole测试,到java安装目录D:\Java\jdk1.8.0_102\bin
双击运行jconsole.exe

方法二:
1.在tomcat下载页面Extra类别中下载 JMX Remote jar 二进制包。放在 tomcat/lib 下面.
下载地址:http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.37/bin/extras/catalina-jmx-remote.jar

2.下载jmxcmd.jar文件测试是否恩能够取得数据

#wget http://nchc.dl.sourceforge.net/project/jmxcmd/jmxcmd.jar
测试有数据则表示成功
命令格式:
java -jar jmxcmd.jar - yourip:jmx端java.lang:type=MemoryNonHeapMemoryUsage

# java -jar jmxcmd.jar - 192.168.3.18:12345 java.lang:type=Memory NonHeapMemoryUsage
09/21/2016 20:25:45 +0800 de.layereight.jmxcmd.Client NonHeapMemoryUsage: 
committed: 72876032
init: 2555904
max: -1
used: 71414864

# java -jar jmxcmd.jar - 192.168.3.18:12346 java.lang:type=Memory NonHeapMemoryUsage
09/21/2016 20:25:59 +0800 de.layereight.jmxcmd.Client NonHeapMemoryUsage: 
committed: 101371904
init: 2555904
max: -1
used: 96162168

2.zabbix server配置

首先我们需要了解一下他们的对应关系,zabbix_server开启java poller, zabbx_java开启JavaGateway,端口为10052,Tomcat JMX开启12345提供性能数据。
数据获取:java poller<-->JavaGateway:10052<-->Tomcat:12345.
Java支持
编译安装zabbix server需要加上--enable-java以支持jmx监控,如果之前的zabbix server没加,那么请重新编译安装, 分享下我的安装参数:

①安装jdk1.8
rpm -ivh jdk-8u102-linux-x64.rpm 
验证jdk是否安装成功

java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

②安装zabbix-java-gateway
下载地址
http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/6/x86_64/zabbix-java-gateway-3.0.4-1.el6.x86_64.rpm

rpm -ivh zabbix-java-gateway-3.0.4-1.el6.x86_64.rpm

启动zabbix_java

/etc/init.d/zabbix-java-gateway

配置Zabbix Java GateWay
配置文件: /etc/zabbix/zabbix_java_gateway.conf

支持的配置选项为:
名称选项说明
LISTEN_IP指定bind的地址,默认值为0.0.0.0
LISTEN_PORT指定bind的端口,默认值为10052
PID_FILE指定PID文件存放目录,默认为 /tmp/zabbix_java.pid
START_POLLERS指定启动多少进程, 默认为5
Zabbix Java GateWay启动后,也需要在Zabbix Server/Proxy上进行配置,对应的配置文件选项为:
名称选项说明
JavaGateway指定Zabbix Java GateWay地址
JavaGatewayPort指定Zabbix Java GateWay端口,默认为10052
StartJavaPollers指定启动时启动的Java Pollers数量
注意:Zabbix Server/Proxy中的StartJavaPollers要小于等于Zabbix Java GateWay配置文件中的START_POLLERS

#zabbix_java_gateway配置文件里有默认端口等设置,这里我们保持默认即可

设置成开机启动:
systemctl enable zabbix-java-gateway

验证是否启动成功
ss -tunlp|grep 10052
tcp    LISTEN     0      50       :::10052                :::*                   users:(("java",pid=3271,fd=11))

配置zabbix-server访问gateway
vim /etc/zabbix/zabbix_server.conf

JavaGateway=127.0.0.1#gateway地址

JavaGatewayPort=10052   #监听端口
StartJavaPollers=5#预启动进程轮训个数

重启zabbix-server使配置生效
systemctl restart zabbix-server.service

3.在zabbix中添加主机和模板开始监控Java

添加主机

zabbix实现对tomcat的监控的更多相关文章

  1. 通过memcached来实现对tomcat集群中Session的共享策略

    近期在做一套集群的实现,实现的方案是在Linux下完成对Apache + Tomcat 负载均衡的功能. 上述功能已经实现,有需要了解的朋友可以看我另外一篇博文. Linux下Apache与Tomca ...

  2. 9.使用GetData,Children实现对ZNode的监控

    一. zookeeper中的watcher 1. exists :监控的是[znode]的CUD 的操作   2. getdata 的时候注册的watcher[U,D 监控]update delete ...

  3. 基于spring-boot和docker-java实现对docker容器的动态管理和监控[附完整源码下载]

    ​ (我是个封面) docker简介 Docker 是一个开源的应用容器引擎,和传统的虚拟机技术相比,Docker 容器性能开销极低,因此也广受开发者喜爱.随着基于docker的开发者越来越多,doc ...

  4. 用 Python 脚本实现对 Linux 服务器的监控

    目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统 ...

  5. 用 Python 脚本实现对 Linux 服务器的网卡流量监控

    *这篇文章网上已经有相关代码,为了加深印象,我做了相关批注,希望对朋友们有帮助 工作原理:基于/proc文件系统 Linux 系统为管理员提供了非常好的方法,使其可以在系统运行时更改内核,而不需要重新 ...

  6. Zabbix JMX之tomcat监控

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

  7. zabbix添加对tomcat线程池的监控

    在zabbix模板中添加以下监控项: 可以参考文档:http://www.fblinux.com/?p=616

  8. (82)zabbix如何选择适合的监控类型

    zabbix提供十几种监控类型,包括:Zabbix agent, Simple checks, SNMP, Zabbix internal, IPMI, JMX monitoring等等,那我们应该如 ...

  9. Docker下实战zabbix三部曲之三:自定义监控项

    通过上一章<Docker下实战zabbix三部曲之二:监控其他机器>的实战,我们了解了对机器的监控是通过在机器上安装zabbix agent来完成的,zabbix agent连接上zabb ...

随机推荐

  1. 前端学习 -- Html&Css -- 层级和透明度

    层级 如果定位元素的层级是一样,则下边的元素会盖住上边的. 通过z-index属性可以用来设置元素的层级,可以为z-index指定一个正整数作为值,该值将会作为当前元素的层级,层级越高,越优先显示. ...

  2. Solr7.1--- 生产环境搭建

    准备三台虚拟机,把Solr-7.1.0.tgz上传到三个节点上.我上传到了自定义的目录/mysoft. 我的环境是CentOS7+Solr7.1.0 如果发现图文不符,因为我之前操作截图后,关闭出去吃 ...

  3. @Value加载classpath下的文件

    maven工程中,要加载classpath下的文件并以InputStream的形式返回,通常使用的方法是 InputStream inputStream = Test.class.getClassLo ...

  4. 2018.9青岛网络预选赛(C)

    传送门:Problem C https://www.cnblogs.com/violet-acmer/p/9664805.html 题意: 定义五个指令,判断能否从输入的n条指令中成功跳出循环,如果不 ...

  5. StringUtils中isEmpty 和isBlank的区别

    StringUtils在commons-lang-2.2.jar包中:org.apache.commons.lang.StringUtils ; StringUtils方法的操作对象是java.lan ...

  6. ML面试题网站及ML模型网站

    一.面试题网站 1)最全:http://www.epx365.cn/jyzn/201839501.html 2)七月在线:https://blog.csdn.net/movie14/article/d ...

  7. 多目标遗传算法 ------ NSGA-II (部分源码解析)两个个体支配判断 dominance.c

    /* Domination checking routines */ # include <stdio.h> # include <stdlib.h> # include &l ...

  8. SqlServer中的查询简单总结

    一.sql语句的执行顺序 查询时数据库中使用最多的操作,一条sql语句的查询顺序是 1.from Tb1 [ join on ]   得到查询的数据源 2.where    对数据过滤(单条数据上过滤 ...

  9. 骨骼动画的原理及在Unity中的使用

    制作骨骼动画 我们看看这几步操作后,我们得到了那些数据: 1.每个皮肤顶点的初始世界坐标. 2.每个骨骼关节顶点的初始世界坐标. 3.每个顶点被骨骼顶点的影响信息. 4.骨骼如何移动. 骨骼动画原理 ...

  10. PHP7 学习笔记(六)403 Forbidden - WAMP Server 2.5

    今天在wamp目录下有一个项目:comment 我在我的Windows 7机器上安装了WAMP版本2.5. 当浏览器浏览到本地主机时,WAMP服务器页面是可见的. 但是当我浏览到我的本地主机在我的移动 ...