温馨提示×

Tomcat在CentOS上如何监控与报警

小樊
51
2025-10-19 18:05:32
栏目: 智能运维

一、基础监控方法

1. 使用Tomcat自带工具

  • Manager应用:通过Web界面查看Tomcat状态。首先编辑conf/tomcat-users.xml,添加具有manager-gui角色的用户(如<user username="admin" password="admin" roles="manager-gui"/>),然后访问http://<服务器IP>:8080/manager/html登录,可查看应用部署、会话数、请求处理时间等信息。
  • JMX(Java管理扩展):通过JMX接口获取详细的JVM和Tomcat指标。编辑bin/catalina.sh,添加以下配置启用JMX(无认证示例,生产环境建议开启认证):
    export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
    
    使用JConsole或VisualVM连接<服务器IP>:9090,可监控内存使用、线程数、类加载、JDBC连接池等指标。

2. 系统命令监控

通过Linux系统命令快速检查Tomcat运行状态:

  • 查看进程ps -ef | grep tomcat,确认Tomcat进程是否存在;
  • 查看端口netstat -tuln | grep 8080(替换为Tomcat实际端口),确认端口是否监听;
  • 查看日志tail -f $TOMCAT_HOME/logs/catalina.out,实时查看Tomcat运行日志,快速定位错误。

二、第三方监控工具(推荐)

1. Prometheus + Grafana

  • Prometheus:开源监控系统,用于收集和存储指标;
  • Grafana:开源可视化工具,用于展示Prometheus采集的指标。
  • 配置步骤
    1. 下载JMX Exporter:用于将Tomcat的JMX指标转换为Prometheus可采集的格式。下载地址:https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.1/jmx_prometheus_javaagent-0.3.1.jar
    2. 配置JMX Exporter:创建jmx-exporter.yaml文件,定义需要采集的指标(如线程池、请求计数、会话数等)。示例配置:
      lowercaseOutputLabelNames: true
      lowercaseOutputName: true
      rules:
        - pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy)>'
          name: tomcat_threadpool_$3
          labels:
            port: "$2"
            protocol: "$1"
          help: Tomcat thread pool $3
          type: GAUGE
      
    3. 配置Tomcat:编辑bin/catalina.sh,添加JMX Exporter代理参数:
      export JAVA_OPTS="$JAVA_OPTS -javaagent:/usr/local/prometheus/jmx_prometheus_javaagent-0.3.1.jar=9010:/usr/local/prometheus/jmx-exporter.yaml"
      
    4. 重启Tomcatsystemctl restart tomcat
    5. 配置Prometheus:编辑prometheus.yml,添加Tomcat抓取任务:
      scrape_configs:
        - job_name: 'tomcat'
          static_configs:
            - targets: ['<服务器IP>:9010']
      
    6. 配置Grafana:添加Prometheus为数据源,导入Tomcat监控Dashboard(如ID:6732,可从Grafana官方库获取),即可可视化监控指标。

2. Zabbix

企业级开源监控解决方案,支持Tomcat全方位监控(进程、端口、JVM内存、线程、请求响应时间等)。

  • 配置步骤
    1. 安装Zabbix Server:参考Zabbix官方文档在CentOS上安装;
    2. 安装Zabbix Agent:在被监控的Tomcat服务器上安装Zabbix Agent;
    3. 配置Zabbix Agent:编辑zabbix_agentd.conf,设置ServerServerActive为Zabbix Server IP;
    4. 创建监控项:在Zabbix Web界面添加Tomcat监控项,通过Zabbix Agent或JMX接口采集指标;
    5. 设置报警规则:针对关键指标(如Tomcat进程down、JVM内存使用率超过80%)设置报警,通过邮件、短信等方式通知管理员。

三、脚本监控与报警

1. Shell脚本监控(进程+接口+邮件报警)

编写Shell脚本定期检查Tomcat进程状态和接口可用性,异常时发送邮件报警。

  • 示例脚本tomcatMonitor.sh):
    #!/bin/bash
    TOMCAT_NAME="apache-tomcat-8.5.6"
    TOMCAT_HOME="/usr/local/$TOMCAT_NAME"
    WEB_URL="http://localhost:8080/manager/status"  # 替换为实际测试接口
    EMAIL="admin@example.com"
    LOG_FILE="/tmp/tomcatMonitor.log"
    
    # 获取Tomcat进程ID
    TOMCAT_PID=$(ps -ef | grep $TOMCAT_NAME | grep -v 'grep' | awk '{print $2}')
    
    # 记录日志
    echo "[$(date '+%F %H:%M:%S')] 开始监控Tomcat" >> $LOG_FILE
    
    if [ -z "$TOMCAT_PID" ]; then
      echo "[$(date '+%F %H:%M:%S')] Tomcat进程不存在,尝试重启..." >> $LOG_FILE
      $TOMCAT_HOME/bin/startup.sh >> $LOG_FILE 2>&1
      sleep 10
      TOMCAT_PID=$(ps -ef | grep $TOMCAT_NAME | grep -v 'grep' | awk '{print $2}')
      if [ -z "$TOMCAT_PID" ]; then
        echo "[$(date '+%F %H:%M:%S')] Tomcat重启失败,发送报警邮件" >> $LOG_FILE
        echo "Tomcat进程down,无法自动重启!" | mail -s "Tomcat报警" $EMAIL
      else
        echo "[$(date '+%F %H:%M:%S')] Tomcat重启成功,PID:$TOMCAT_PID" >> $LOG_FILE
      fi
    else
      # 检查接口状态
      HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" -m 10 --connect-timeout 10 $WEB_URL)
      if [ "$HTTP_CODE" -ne 200 ]; then
        echo "[$(date '+%F %H:%M:%S')] Tomcat接口异常(HTTP状态码:$HTTP_CODE),发送报警邮件" >> $LOG_FILE
        echo "Tomcat接口异常,状态码:$HTTP_CODE!" | mail -s "Tomcat报警" $EMAIL
      else
        echo "[$(date '+%F %H:%M:%S')] Tomcat运行正常,PID:$TOMCAT_PID" >> $LOG_FILE
      fi
    fi
    
  • 设置定时任务:通过crontab -e添加每分钟执行一次脚本的任务:
    * * * * * /bin/bash /path/to/tomcatMonitor.sh
    

2. Supervisor进程守护

使用Supervisor监控Tomcat进程,进程挂掉后自动重启。

  • 安装Supervisor
    yum install epel-release -y
    yum install supervisor -y
    systemctl start supervisord
    systemctl enable supervisord
    
  • 配置Supervisor:创建Tomcat配置文件/etc/supervisord.d/tomcat.ini
    [program:tomcat]
    command=/usr/local/apache-tomcat-8.5.6/bin/startup.sh
    autostart=true
    autorestart=true
    stderr_logfile=/var/log/tomcat.err.log
    stdout_logfile=/var/log/tomcat.out.log
    user=root
    environment=JAVA_HOME="/usr/local/jdk1.8.0_161",CATALINA_HOME="/usr/local/apache-tomcat-8.5.6"
    
  • 重启Supervisorsystemctl restart supervisord,即可自动守护Tomcat进程。

0