配置 Zabbix 监控 Tomcat

背景

    项目后端架构使用 Tomcat 作为 Web 服务的容器,在系统设计之初,考虑到大量并发的情况,将后端拆分成若干个模块,分别通过部署在集群中的 Tomcat 加载,这些 Tomcat 能否正常工作并且在业务高峰承受住大量的请求,成为了关键。

    一开始搭建监控体系时,仅仅监控了集群中每台服务器系统的各项指标,也就是只添加了 Template OS Linux 模板,对 Tomcat 进程的状态很难把控。

 

JMX

    JMX在Java编程语言中定义了应用程序以及网络管理和监控的体系结构、设计模式、应用程序接口以及服务。通常使用JMX来监控系统的运行状态或管理系统的某些方面,比如清空缓存、重新加载配置文件等

    优点可以非常容易的使应用程序具有被管理

    伸缩性的架构每个JMX Agent服务可以很容易的放入到Agent中,每个JMX的实现都提供几个核心的Agent服务,你也可以自己编写服务,服务可以很容易的部署,取消部署。

    主要提供接口,允许有不同的实现

                                                                                        ----------    摘自《百度百科》

    zabbix 监控 tomcat,实际上也是通过 Java 自己的 JMX 来获取数据的,tomcat 需要配置 JMX。

 

配置 Tomcat JMX

  1. 安装 JDK、tomcat

    官网下载 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  在这行上面添加

 

配置 zabbix     

    详细安装参考:

    传送门: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

 

Zabbix 图形界面配置

    主机添加 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

 

zabbix tomcat 监控项

  1. Session:活跃的 session、被系统拒绝的、最大限制 session 数量
  2. class status:总共加载的 class、加载的 class 数、未加载 class 数
  3. heap memory:总共堆内存、commit 的堆内存、使用的堆内存
  4. session status:active 会话数、session 数、拒绝数、最大 active 数
  5. thread status:线程数、线程峰值、总共 start 线程数

    堆(Heap)和非堆(Non-heap)内存 
    按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是 Java 代码可及的内存,是留给开发人员使用的;非堆就是JVM留给 自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法 的代码都在非堆内存中。

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/2470065/blog/843895

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值