锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Zabbix5系列-监控SpringBoot内置的Tomcat和JVM(二十一)

时间:2023-08-05 02:07:00 连接器df1ec

Zabbix5系列-监控SpringBoot内置的Tomcat和JVM

        • 一、参考
        • 二、环境
        • 三、开启JMX
        • 配置模板
        • 五、测试
        • 六、修改后的模板参考
          • 6.1 Apache Tomcat JMX模板
          • 6.2 Generic Java JMX模板

一、参考

  • Zabbix5系列
  • Zabbix5专栏
  • Centos7安装Docker
  • Centos8安装Docker
  • Debian10安装Docker
  • Zabbix5系列-Docker安装zabbix5.4 (一)
  • Zabbix5系列-监控华为,H3C交换机(snmpv2c/snmpv3/snmptrap) (二)
  • Zabbix5系列-监控Windows主机 (三)
  • Zabbix5系列-监控Linux主机 (四)
  • Zabbix5系列-Linux/Windows磁盘SMART监控 (五)
  • Zabbix监控惠普服务器iLO管理口 (六)
  • Zabbix监控海康威视摄像头 (七)
  • Zabbix5系列-使用SNMP监控Linux (八)
  • Zabbix5系列-监控docker (九)
  • Zabbix5系列-监控mysql(5.7/5.8/mariadb) (十)
  • Zabbix5系列-监控redis (十一)
  • Zabbix5系列-监控nginx (十二)
  • Zabbix5系列-制作拓扑图 (十三)
  • Zabbix5系列-声音报警,电子邮件报警 (十四)
  • Zabbix5系列-钉钉报警 (十五)
  • Zabbix5系列-创建自动发现模板 (十六)
  • Zabbix5系列-接入Grafana面板 (十七)
  • Zabbix5系列-报告工具ZbxTable (十八)
  • 用户手册: https://www.zabbix.com/documentation/current/zh/manual
  • 参考官方模板: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates?at=refs/heads/release/5.4
  • Zabbix模板库: https://share.zabbix.com
  • Zabbix容器: https://hub.docker.com/u/zabbix
  • Zabbix Agent下载页: https://www.zabbix.com/cn/download_agents
  • MIB浏览器下载: http://www.ireasoning.com/download.shtml
  • 华为MIB查询: https://support.huawei.com/mibtoolweb/enterpriseMibInfo/zh
  • 华为 VRP V200R021C00SPC100 MIB文件: https://support.huawei.com/enterprise/zh/software/253350229-ESW2000397776
  • H3C Comware MIB文件: https://www.h3c.com/cn/d_200905/635750_30003_0.htm
  • 华为图标 百度云盘 提取码mzhx: https://pan.baidu.com/s/1S6p96p3gNrv78Z2yJxrhaQ
  • zabbix报表工具: https://zbxtable.cactifans.com/
  • Grafana面板: https://grafana.com/docs/grafana/latest/installation/docker/
  • Grafana-cn面板: https://hub.docker.com/r/w958660278/grafana-cn

二、环境

系统:Centos7.9
JDK版本:1.8.0_251
Springboot版本:2.1.6.RELEASE

三、开启JMX

3.1 如果采用springboot注册为Linux找到服务模式运行程序jar在目录中创建同名文件的后缀名称conf,添加到配置文件中JAVA_OPTS配置
比如我的jar文件在/usr/local/workmanager/workmanage-2.0.2.jar创建配置文件/usr/local/workmanager/workmanage-2.0.2.conf内容为

JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.registry.ssl=false -Djava.rmi.server.hostname=主机IP地址 -Dcom.sun.management.jmxremote.rmi.port=12345" 

3.2 使用脚本或直接操作 在java加入上述参数配置
3.3 JAVAOPTS参考Zabbix-JMX监控和Monitoring and Management Using JMX

参数 用途
-Dcom.sun.management.jmxremote 开启jmx远程访问 true / false
-Dcom.sun.management.jmxremote.port JMX端口 12345
-Dcom.sun.management.jmxremote.ssl 是否启用SSL true / false
-Dcom.sun.management.jmxremote.registry.ssl 是否启用SSL记录 true / false
-Djava.rmi.server.hostname 本地绑定地址 127.0.0.1
-Dcom.sun.management.jmxremote.rmi.port RMI端口 12345
-Dcom.sun.management.jmxremote.authenticate 是否使用密码认证 true / false

3.4 配置JMX密码
进入JRE根目录下的lib/management/目录下 复制jmxremote.password.template密码配置模板为jmxremote.password

# 进入JRE的management目录 cd /us/local/jdk1.8.0_251/jre/lib/management/
# 复制模板文件
cp jmxremote.password.template jmxremote.password
# 编辑密码配置文件 末尾加入 monitorRole 密码
echo "monitorRole 密码">>jmxremote.password
# 修改文件所属用户跟启动jar的用户一致
chown www.www jmxremote.password
# 修改权限为600
chmod 600 jmxremote.password

3.5 重启jar
3.6 在Windows下使用jconsole测试
在这里插入图片描述

四、配置模板

  • Apache Tomcat JMX模板手册
  • Generic Java JMX模板手册

4.1 进入模板"Apache Tomcat JMX",所有监控项和自动发现的key里面的Catalina修改为Tomcat


4.2 进入模板"Generic Java JMX",所有监控项的用户名称和密码填写宏{$JMX.USER}和{$JMX.PASSWORD}

4.3 切换到Generic Java JMX模板的宏页 创建宏{$JMX.USER}和{$JMX.PASSWORD}

4.4 创建主机 选择JMX方式 写入IP地址和前面配置的端口

4.5 切换到模板页 选择刚修改过的模板

4.6 切换到宏页 从继承的宏里配置前面设置的JMX用户和密码

4.7 添加主机

五、测试

5.1 检查是否正常读取

六、修改后的模板参考

6.1 Apache Tomcat JMX模板
zabbix_export:
  version: '5.4'
  date: '2022-06-19T07:33:51Z'
  groups:
    -
      uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6
      name: Templates/Applications
  templates:
    -
      uuid: 3cc8c9ae7055458c9a803597007f70bd
      template: 'Apache Tomcat JMX'
      name: 'Apache Tomcat JMX'
      description: | The template to monitor Apache Tomcat by Zabbix that work without any external scripts. The metrics are collected by JMX.
        
        
        You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/411862-discussion-thread-for-official-zabbix-template-tomcat
        
        Template tooling version used: 0.38
      groups:
        -
          name: Templates/Applications
      items:
        -
          uuid: 7f6ec0e48d41456896799f487cd8243e
          name: 'Tomcat: 版本'
          type: JMX
          key: 'jmx["Tomcat:type=Server",serverInfo]'
          history: 7d
          trends: '0'
          value_type: CHAR
          username: '{$TOMCAT.USER}'
          password: '{$TOMCAT.PASSWORD}'
          description: 'The version of the Tomcat.'
          preprocessing:
            -
              type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
          jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
          tags:
            -
              tag: Application
              value: Tomcat
          triggers:
            -
              uuid: 152d235652914aa2af78334385334214
              expression: 'last(/Apache Tomcat JMX/jmx["Tomcat:type=Server",serverInfo],#1)<>last(/Apache Tomcat JMX/jmx["Tomcat:type=Server",serverInfo],#2) and length(last(/Apache Tomcat JMX/jmx["Tomcat:type=Server",serverInfo]))>0'
              name: 'Tomcat: 版本已变更'
              priority: INFO
              description: 'Tomcat version has changed. Ack to close.'
              manual_close: 'YES'
      discovery_rules:
        -
          uuid: a478be537e5f48fe95310997d0df0eda
          name: '协议处理程序 自动发现'
          type: JMX
          key: 'jmx.discovery[attributes,"Tomcat:type=ProtocolHandler,port=*"]'
          delay: 1h
          username: '{$TOMCAT.USER}'
          password: '{$TOMCAT.PASSWORD}'
          filter:
            evaltype: AND
            conditions:
              -
                macro: '{#JMXATTR}'
                value: ^name$
                formulaid: A
          description: 'Discovery for ProtocolHandler'
          item_prototypes:
            -
              uuid: 830f58f8ad6640d989a70c01f7aa2ad8
              name: '{#JMXVALUE}: Gzip压缩状态'
              type: JMX
              key: 'jmx[{#JMXOBJ},compression]'
              history: 7d
              trends: '0'
              value_type: CHAR
              username: '{$TOMCAT.USER}'
              password: '{$TOMCAT.PASSWORD}'
              description: 'Gzip compression status on {#JMXNAME}. Enabling gzip compression may save server bandwidth.'
              preprocessing:
                -
                  type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                -
                  tag: Application
                  value: 'Tomcat: ProtocolHandler {#JMXVALUE}'
              trigger_prototypes:
                -
                  uuid: 7d707de73a164f1db6b69e4dcb8c6ae9
                  expression: 'find(/Apache Tomcat JMX/jmx[{#JMXOBJ},compression],,"like","off") = 1'
                  name: '{#JMXVALUE}: Gzip压缩已禁用'
                  priority: INFO
                  description: 'gzip compression is disabled for connector {#JMXVALUE}.'
                  manual_close: 'YES'
          jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
        -
          uuid: 77175f79fe844bb8bca66de437a3ba32
          name: '全局请求处理程序 自动发现'
          type: JMX
          key: 'jmx.discovery[beans,"Tomcat:type=GlobalRequestProcessor,name=*"]'
          delay: 1h
          username: '{$TOMCAT.USER}'
          password: '{$TOMCAT.PASSWORD}'
          filter:
            evaltype: AND
            conditions:
              -
                macro: '{#JMXNAME}'
                value: '{$TOMCAT.LLD.FILTER.MATCHES:"GlobalRequesProcessor"}'
                formulaid: A
              -
                macro: '{#JMXNAME}'
                value: '{$TOMCAT.LLD.FILTER.NOT_MATCHES:"GlobalRequesProcessor"}'
                operator: NOT_MATCHES_REGEX
                formulaid: B
          description: 'Discovery for GlobalRequesProcessor'
          item_prototypes:
            -
              uuid: d7cb07f3f5e04792850332c416284dd9
              name: '{#JMXNAME}: 每秒接收的字节数'
              type: JMX
              key: 'jmx[{#JMXOBJ},bytesReceived]'
              history: 7d
              units: B
              username: '{$TOMCAT.USER}'
              password: '{$TOMCAT.PASSWORD}'
              description: 'Bytes received rate by processor {#JMXNAME}'
              preprocessing:
                -
                  type: CHANGE_PER_SECOND
                  parameters:
                    - ''
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                -
                  tag: Application
                  value: 'Tomcat: {#JMXTYPE} {#JMXNAME}'
            -
              uuid: abad7332ed6b417c92f6038ce12ae000
              name: '{#JMXNAME}: 每秒发送的字节数'
              type: JMX
              key: 'jmx[{#JMXOBJ},bytesSent]'
              history: 7d
              units: B
              username: '{$TOMCAT.USER}'
              password: '{$TOMCAT.PASSWORD}'
              description: 'Bytes sent rate by processor {#JMXNAME}'
              preprocessing:
                -
                  type: CHANGE_PER_SECOND
                  parameters:
                    - ''
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                -
                  tag: Application
                  value: 'Tomcat: {#JMXTYPE} {#JMXNAME}'
            -
              uuid: 1596a335401d47d6b2bde7a5b0de7b07
              name: '{#JMXNAME}: 每秒错误数'
              type: JMX
              key: 'jmx[{#JMXOBJ},errorCount]'
              history: 7d
              username: '{$TOMCAT.USER}'
              password: '{$TOMCAT.PASSWORD}'
              description: 'Error rate of request processor {#JMXNAME}'
              preprocessing:
                -
                  type: CHANGE_PER_SECOND
                  parameters:
                    - ''
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                -
                  tag: Application
                  value: 'Tomcat: {#JMXTYPE} {#JMXNAME}'
            -
              uuid: 985d3eeacd9d404385bfcef693add39a
              name: '{#JMXNAME}: 请求处理时间'
              type: JMX
              key: 'jmx[{#JMXOBJ},processingTime]'
              history: 7d
              units: s
              username: '{$TOMCAT.USER}'
              password: '{$TOMCAT.PASSWORD}'
              description: 'The total time to process all incoming requests of request processor {#JMXNAME}'
              preprocessing:
                -
                  type: MULTIPLIER
                  parameters:
                    - '0.001'
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                -
                  tag: Application
                  value: 'Tomcat: {#JMXTYPE} {#JMXNAME}'
            -
              uuid: 8e0307b5063549dab118e0e374a62aad
              name: '{#JMXNAME}: 每秒请求数'
              type: JMX
              key: 'jmx[{#JMXOBJ},requestCount]'
              history: 7d
              username: '{$TOMCAT.USER}'
              password: '{$TOMCAT.PASSWORD}'
              description: 'Rate of requests served by request processor {#JMXNAME}'
              preprocessing:
                -
                  type: CHANGE_PER_SECOND
                  parameters:
                    - ''
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                -
                  tag: Application
                  value: 'Tomcat: {#JMXTYPE} {#JMXNAME}'
          graph_prototypes:
            -
              uuid: 87de97d55baa4be1964652957a051fc2
              name: '{#JMXNAME}: 流量'
              graph_items:
                -
                  sortorder: '1'
                  drawtype: GRADIENT_LINE
                  color: 1A7C11
                  item:
                    host: 'Apache Tomcat JMX'
                    key: 'jmx[{#JMXOBJ},bytesSent]'
                -
                  sortorder: '2'
                  drawtype: GRADIENT_LINE
                  color: 2774A4
                  item:
                    host: 'Apache Tomcat JMX'
                    key: 'jmx[{#JMXOBJ},bytesReceived]'
          jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
        -
          uuid: cf1badf064714d9b9e3b7110696432f9
          name: 'Contexts 自动发现'
          type: JMX
          key: 'jmx.discovery[beans,"Tomcat:type=Manager,host=*,context=*"]'
          delay: 1h
          username: '{$TOMCAT.USER}'
          password: '{$TOMCAT.PASSWORD}'
          filter:
            evaltype: AND
            conditions:
              -
                macro: '{#JMXHOST}'
                value: '{$TOMCAT.LLD.FILTER.MATCHES:"Manager"}'
                formulaid: A
              -
                macro: '{#JMXHOST}'
                value: '{$TOMCAT.LLD.FILTER.NOT_MATCHES:"Manager"}'
                operator: NOT_MATCHES_REGEX
                formulaid: B
          description: 'Discovery for contexts'
          item_prototypes:
            -
              uuid: c20bb67db247471ba686d2ea371b7c73
              name: '{#JMXHOST}{#JMXCONTEXT}: 在线会话'
              type: JMX
              key: 'jmx[{#JMXOBJ},activeSessions]'
              history: 7d
              username: '{$TOMCAT.USER}'
              password: '{$TOMCAT.PASSWORD}'
              description: 'Active sessions of the application.'
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                -
                  tag: Application
                  value: 'Tomcat: Context {#JMXHOST}{#JMXCONTEXT}'
            -
              uuid: bc3c2a3cff614f3eaf001463df1b2364
              name: '{#JMXHOST}{#JMXCONTEXT}: 允许的最大会话数'
              type: JMX
              key: 'jmx[{#JMXOBJ},maxActiveSessions]'
              history: 7d
              value_type: FLOAT
              username: '{$TOMCAT.USER}'
              password: '{$TOMCAT.PASSWORD}'
              description: 'The maximum number of active Sessions allowed, or -1 for no limit.'
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                -
                  tag: Application
                  value: 'Tomcat: Context {#JMXHOST}{#JMXCONTEXT}'
            -
              uuid: fd8678e68cf440939af2dd8f3568a42f
              name: '{#JMXHOST}{#JMXCONTEXT}: 最大在线会话数'
              type: JMX
              key: 'jmx[{#JMXOBJ},maxActive]'
              history: 7d
              username: '{$TOMCAT.USER}'
              password: '{$TOMCAT.PASSWORD}'
              description: 'Maximum number of active sessions so far.'
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                -
                  tag: Application
                  value: 'Tomcat: Context {#JMXHOST}{#JMXCONTEXT}'
            -
              uuid: 34702e2d6b2142ec9aa43bea1059a98a
              name: '{#JMXHOST}{#JMXCONTEXT}: 每秒拒绝的会话数'
              type: JMX
              key: 'jmx[{#JMXOBJ},rejectedSessions]'
              history: 7d
              username: '{$TOMCAT.USER}'
              password: '{$TOMCAT.PASSWORD}'
              description: 'Rate of sessions we rejected due to maxActive being reached.'
              preprocessing:
                -
                  type: CHANGE_PER_SECOND
                  parameters:
                    - ''
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                -
                  tag: Application
                  value: 'Tomcat: Context {#JMXHOST}{#JMXCONTEXT}'
            -
              uuid: eb28f9bd99d440f4a50d1c24ae758029
              name: '{#JMXHOST}{#JMXCONTEXT}: 每秒创建的会话数'
              type: JMX
              key: 'jmx[{#JMXOBJ},sessionCounter]'
              history: 7d
              username: '{$TOMCAT.USER}'
              password: '{$TOMCAT.PASSWORD}'
              description: 'Rate of sessions created by this application per second.'
              preprocessing:
                -
                  type: CHANGE_PER_SECOND
                  parameters:
                    - ''
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                -
                  tag: Application
                  value: 'Tomcat: Context {#JMXHOST}{#JMXCONTEXT}'
          graph_prototypes:
            -
              uuid: dfd46f5443f9438fb21ae23dfd4010c0
              name: '{#JMXHOST}{#JMXCONTEXT}: 会话'
              graph_items:
                -
                  sortorder: '1'
                  drawtype: GRADIENT_LINE
                  color: 1A7C11
                  item:
                    host: 'Apache Tomcat JMX'
                    key: 'jmx[{#JMXOBJ},maxActive]'
                -
                  sortorder: '2'
                  drawtype: GRADIENT_LINE
                  color: 2774A4
                  item:
                    host: 'Apache Tomcat JMX'
                    key: 'jmx[{#JMXOBJ},activeSessions]'
                -
                  sortorder: '3'
                  drawtype: GRADIENT_LINE
                  color: F63100
                  item:
                    host: 'Apache Tomcat JMX'
                    key: 'jmx[{#JMXOBJ},rejectedSessions]'
                -
                  sortorder: '4'
                  drawtype: GRADIENT_LINE
                  color: A54F10
                  item:
                    host: 'Apache Tomcat JMX'
                    key: 'jmx[{#JMXOBJ},maxActiveSessions]'
          jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
        -
          uuid: 05752834671f416fb2fdac1006308c3e
          name: '线程池 自动发现'
          type: JMX
          key: 'jmx.discovery[beans,"Tomcat:type=ThreadPool,name=*"]'
          delay: 1h
          username: '{$TOMCAT.USER}'
          password: '{$TOMCAT.PASSWORD}'
          filter:
            evaltype: AND
            conditions:
              -
                macro: '{#JMXNAME}'
                value: '{$TOMCAT.LLD.FILTER.MATCHES:"ThreadPool"}'
                formulaid: A
              -
                macro: '{#JMXNAME}'
                value: '{$TOMCAT.LLD.FILTER.NOT_MATCHES:"ThreadPool"}'
                operator: NOT_MATCHES_REGEX
                formulaid: B
          description: 'Discovery for ThreadPool'
          item_prototypes:
            -
              uuid: 7d7418c72ced48eca2a92e30021b611b
              name: '{#JMXNAME}: 线程数'
              type: JMX
              key: 'jmx[{#JMXOBJ},currentThreadCount]'
              history: 7d
              username: '{$TOMCAT.USER}'
              password: '{$TOMCAT.PASSWORD}'
              description: 'Amount of threads the thread pool has right now, both busy and free.'
              preprocessing:
                -
                  type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 10m
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                -
                  tag: Application
                  value: 'Tomcat: {#JMXTYPE} {#JMXNAME}'
            -
              uuid: 35b1e99fbc44448083b5aad0ce1239a1
              name: '{#JMXNAME}: 繁忙线程数'
              type: JMX
              key: 'jmx[{#JMXOBJ},currentThreadsBusy]'
              history: 7d
              username: '{$TOMCAT.USER}'
              password: '{$TOMCAT.PASSWORD}'
              description: 'Number of the requests that are being currently handled.'
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                -
                  tag: Application
                  value: 'Tomcat: {#JMXTYPE} {#JMXNAME}'
            -
              uuid: 32e316ce567c4f94aecb89d9763e4d27
              name: '{#JMXNAME}: 线程限制'
              type: JMX
              key: 'jmx[{#JMXOBJ},maxThreads]'
              history: 7d
              username: '{$TOMCAT.USER}'
              password: '{$TOMCAT.PASSWORD}'
              description: 'Limit of the threads count. When currentThreadsBusy counter reaches the maxThreads limit, no more requests could be handled, and the application chokes.'
              preprocessing:
                -
                  type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 10m
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                -
                  tag: Application
                  value: 'Tomcat: {#JMXTYPE} {#JMXNAME}'
          trigger_prototypes:
            -
              uuid: 7a15296553a447f6aebf4958631b6704
              expression: 'min(/Apache Tomcat JMX/jmx[{#JMXOBJ},currentThreadsBusy],{$TOMCAT.THREADS.MAX.TIME:"{#JMXNAME}"})>last(/Apache Tomcat JMX/jmx[{#JMXOBJ},maxThreads])*{$TOMCAT.THREADS.MAX.PCT:"{#JMXNAME}"}/100'
              name: '{#JMXNAME}: 繁忙线程数 {$TOMCAT.THREADS.MAX.TIME:"{#JMXNAME}"} 内超过 {$TOMCAT.THREADS

相关文章