溫馨提示×

Tomcat在CentOS上如何監控與報警

小樊
40
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女