侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

配置 Zabbix 监控 Tomcat

2023-11-25 星期六 / 0 评论 / 0 点赞 / 39 阅读 / 6619 字

背景 项目后端架构使用 Tomcat 作为 Web 服务的容器,在系统设计之初,考虑到大量并发的情况,将后端拆分成若干个模块,分别通过部署在集群中的 Tomcat 加载,这些 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.0JRE_HOME=/usr/java/jdk1.7.0/jrePATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/binCLASSPATH=.:$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编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法 的代码都在非堆内存中。

 

 

 

 

 

 

 

广告 广告

评论区