centos

centos上如何监控tomcat运行状态

小樊
47
2025-04-08 16:35:08
栏目: 智能运维

在CentOS上监控Tomcat运行状态有多种方法,以下是一些常用的监控方式:

使用JMX Exporter

JMX Exporter是一个开源的Java代理,可以收集Java应用程序的JMX指标。以下是配置和使用JMX Exporter的步骤:

  1. 下载JMX Exporter
cd /usr/local/prometheus
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.1/jmx_prometheus_javaagent-0.3.1.jar
  1. 配置JMX Exporter

创建或编辑jmx-exporter.yaml文件,例如:

lowercaseOutputLabelNames: true
lowercaseOutputName: true
rules:
  - pattern: 'Catalina<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+):'
    name: tomcat_$3_total
    labels:
      port: "$2"
      protocol: "$1"
    help: Tomcat global $3
    type: COUNTER
  - pattern: 'Catalina<j2eeType=Servlet, WebModule=//([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), name=([-a-zA-Z0-9+/$%~_-|!.]*), J2EEApplication=none, J2EEServer=none><>(requestCount|maxTime|processingTime|errorCount):'
    name: tomcat_servlet_$3_total
    labels:
      module: "$1"
      servlet: "$2"
    help: Tomcat servlet $3
    type: COUNTER
  - pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|pollerThreadCount|connectionCount):'
    name: tomcat_threadpool_$3
    labels:
      port: "$2"
      protocol: "$1"
    help: Tomcat threadpool $3
    type: GAUGE
  - pattern: 'Catalina<type=Manager, host=([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), context=([-a-zA-Z0-9+/$%~_-|!.]*)><>(processingTime|sessionCounter|rejectedSessions|expiredSessions):'
    name: tomcat_session_$3_total
    labels:
      context: "$2"
      host: "$1"
    help: Tomcat session $3
    type: COUNTER
  1. 配置Tomcat

编辑Tomcat的bin/catalina.sh文件,添加以下行:

JAVA_OPTS="$JAVA_OPTS -javaagent:/usr/local/prometheus/jmx_prometheus_javaagent-0.3.1.jar=9010:/usr/local/prometheus/jmx-exporter.yaml"
  1. 重启Tomcat
/bin/systemctl restart tomcat
  1. 验证配置

访问http://<your-tomcat-host>:9010/jmx,使用Prometheus抓取指标。

使用Shell脚本

可以编写一个Shell脚本来监控Tomcat进程,并在进程挂掉时自动重启:

#!/bin/sh

JAVA_HOME=/usr/local/jdk1.8.0_161
PATH=$JAVA_HOME/bin:$PATH

while true; do
  PID=$(ps -ef | grep java | grep tomcat | grep -w 'apache-tomcat-8.5.29_2' | grep -v 'grep' | awk '{print $2}')
  if [ -z "$PID" ]; then
    echo "[error] Tomcat process not found. Restarting..."
    /usr/local/apache-tomcat-8.5.29_2/bin/startup.sh
  else
    echo "[info] Tomcat process is running with PID $PID."
  fi
  sleep 10
done

将脚本保存为monitor.sh,并赋予执行权限:

chmod +x monitor.sh

使用crontab定时执行该脚本:

crontab -e

添加以下内容:

* * * * * /path/to/monitor.sh

使用Application Manager

Application Manager是一个功能强大的Tomcat监控工具,可以提供深入的性能监控和警报功能:

  1. 安装Application Manager

按照官方文档进行安装和配置。

  1. 配置监控

使用Application Manager的Tomcat Monitor功能,配置监控指标,如CPU、内存、JVM使用情况等。

  1. 查看监控数据

通过Application Manager的Web界面查看Tomcat的运行状态和性能指标。

使用日志记录

可以通过查看Tomcat的日志文件来监控其运行状态:

tail -f /path/to/tomcat/logs/catalina.out

使用系统监控工具

可以使用系统监控工具如tophtopvmstatfreeiostatnetstatssdstatiftop等来监控服务器的整体状态,从而间接了解Tomcat的运行状况。

通过上述方法,您可以选择适合您的监控方式来确保Tomcat的稳定运行。

0
看了该问题的人还看了