在Debian環境下監控Tomcat狀態有多種方法,以下是一些常用的方法:
啟用JMX:
編輯 catalina.sh 文件,在 Execute The Requested Command 這一行之前加上以下參數:
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8081 -Djava.rmi.server.hostname=192.168.99.205 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
其中,192.168.99.205 是Tomcat部署所在的主機IP,需根據實際情況進行修改。
驗證JMX是否開啟:
使用 jconsole 連接到Tomcat的JMX端口(如8081),如果看到Tomcat的監控頁面,則說明JMX已經開啟。
使用jmxtrans進行監控:
配置 jmxtrans 將Tomcat的監控數據寫入InfluxDB,然后使用Grafana從InfluxDB獲取數據并可視化。
top和htop命令:
使用 top 或 htop 命令實時查看Tomcat進程的CPU和內存占用情況。
top -p $(pidof tomcat)
htop -p $(pidof tomcat)
vmstat命令:
使用 vmstat 命令監控系統資源使用情況,包括CPU、內存、磁盤I/O等。
vmstat
netstat命令:
使用 netstat 命令查看Tomcat監聽的端口狀態。
netstat -an | grep 8080
free和df命令:
使用 free 命令查看系統內存使用情況,使用 df 命令查看磁盤空間使用情況。
free -m
df -h
iostat命令:
使用 iostat 命令監控系統磁盤I/O情況。
iostat
uptime命令:
使用 uptime 命令查看系統的運行時間和平均負載。
uptime
可以編寫Shell腳本來監控Tomcat的狀態,并在異常時自動重啟Tomcat。以下是一個簡單的示例腳本:
#!/bin/sh
# 獲取Tomcat進程ID
TomcatID=$(ps -ef | grep tomcat | grep -v 'grep' | awk '{print $2}')
# 定義要監控的頁面地址
WebUrl="http://localhost:8080"
# 日志輸出文件
GetPageInfo="/tmp/TomcatMonitor.Info"
TomcatMonitorLog="/tmp/TomcatMonitor.Log"
Monitor() {
echo "[info]開始監控tomcat...[(date '%F %H:%M:%S')]"
if [ -n "$TomcatID" ]; then
echo "[info]當前tomcat進程ID為:$TomcatID,繼續檢測頁面..."
# 檢測是否啟動成功(成功的話頁面會返回狀態"200")
TomcatServiceCode=$(curl -s -o GetPageInfo -m 10 --connect-timeout 10 "$WebUrl" -w %{http_code})
if [ "$TomcatServiceCode" -eq 200 ]; then
echo "[info]頁面返回碼為$TomcatServiceCode,tomcat啟動成功,測試頁面正常"
else
echo "[error]tomcat頁面出錯,請注意...狀態碼為$TomcatServiceCode,錯誤日志已輸出到$GetPageInfo"
echo "[error]頁面訪問出錯,開始重啟tomcat"
kill -9 $TomcatID
sleep 3
rm -rf /opt/tomcat/work
StartTomcat
fi
else
echo "[error]tomcat進程不存在!tomcat開始自動重啟..."
echo "[info]StartTomcat,請稍候..."
rm -rf /opt/tomcat/work
StartTomcat
fi
}
StartTomcat() {
/opt/tomcat/bin/startup.sh
}
# 測試腳本是否允許成功
if [ ! -x "./monitor.sh" ]; then
chmod 777 monitor.sh
fi
# 把腳本加到crontab定時任務中,每分鐘檢查一次
echo "* * * * * /path/to/monitor.sh" | crontab -
將上述腳本保存為 monitor.sh,并確保其可執行權限,然后將其添加到crontab中,每分鐘執行一次以監控Tomcat的狀態。
通過以上方法,你可以在Debian環境下有效地監控Tomcat的狀態,確保其穩定運行。