项目后端架构使用 Tomcat 做为 Web 服务的容器,在系统设计之初,考虑到大量并发的状况,将后端拆分红若干个模块,分别经过部署在集群中的 Tomcat 加载,这些 Tomcat 可否正常工做而且在业务高峰承受住大量的请求,成为了关键。java
一开始搭建监控体系时,仅仅监控了集群中每台服务器系统的各项指标,也就是只添加了 Template OS Linux 模板,对 Tomcat 进程的状态很难把控。mysql
JMX在Java编程语言中定义了应用程序以及网络管理和监控的体系结构、设计模式、应用程序接口以及服务。一般使用JMX来监控系统的运行状态或管理系统的某些方面,好比清空缓存、从新加载配置文件等git
优势能够很是容易的使应用程序具备被管理github
伸缩性的架构每一个JMX Agent服务能够很容易的放入到Agent中,每一个JMX的实现都提供几个核心的Agent服务,你也能够本身编写服务,服务能够很容易的部署,取消部署。sql
主要提供接口,容许有不一样的实现apache
---------- 摘自《百度百科》编程
zabbix 监控 tomcat,实际上也是经过 Java 本身的 JMX 来获取数据的,tomcat 须要配置 JMX。后端
官网下载 java jdk 到服务器,配置 /etc/peofile设计模式
JAVA_HOME=/usr/java/jdk1.7.0 JRE_HOME=/usr/java/jdk1.7.0/jre PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
官网下载 tomcat数组
配置 tomcat JMX,编辑 ./bin/catalina.sh
CATALINA_OPTS="-Dcom.sun.management.jmxremote=ture -Djavax.management.builder.initial= -Djava.rmi.server.hostname=10.12.41.127 #tomcat IP -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false " # ----- Execute The Requested Command 在这行上面添加
详细安装参考:
传送门:https://my.oschina.net/u/2470065/blog/716047
编译安装 zabbix 时须要添加其对 Java 支持(--enable-java):
./configure --prefix=/usr/local/zabbix-3.0.3 --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java
zabbix_server 开启 java poller,zabbix_java 开启 JavaGateway,端口为 10052,tomcat JMX 开启 12345 提供性能数据;
修改 JavaGateway 的配置文件,$zabbix_server_home/sbin/zabbix_java/settings.sh:
LISTEN_IP="0.0.0.0" #监听地址 LISTEN_PORT=10052 #监听端口 START_POLLERS=5 # 开启的工做线程数(必须大于等于后面zabbix_server.conf文件的StartJavaPollers参数)
启动 JavaGateway:$zabbix_server_home/sbin/zabbix_java/startup.sh
修改 zabbix_server 的配置文件:
JavaGateway=127.0.0.1 # JavaGateway 服务器地址,zabbix_server与zabbix_java_gateway在同一台主机 JavaGatewayPort=10052 #端口 StartJavaPollers=5
启动 zabbix_server:$zabbix_server_home/sbin/zabbix_server
主机添加 JMX 接口:
zabbix 自带两个监控 Tomcat 的模板:Template JMX Generic、Template JMX Tomcat,实际使用的是从网上下载一个 Template:
curl -O https://raw.githubusercontent.com/liujun1990/zabbix/master/zbx_templates_tomcat.xml
导入进模板列表中,添加 Template App Tomcat
堆(Heap)和非堆(Non-heap)内存
按照官方的说法:“Java 虚拟机具备一个堆,堆是运行时数据区域,全部类实例和数组的内存均今后处分配。堆是在 Java 虚拟机启动时建立的。”“在JVM中堆以外的内存称为非堆内存(Non-heap memory)”。能够看出JVM主要管理两种类型的内存:堆和非堆。简单来讲堆就是 Java 代码可及的内存,是留给开发人员使用的;非堆就是JVM留给 本身用的,因此方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每一个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法 的代码都在非堆内存中。