在Debian系統中,Tomcat日志是監控應用運行狀態、排查故障的關鍵依據。以下是具體監控方法,涵蓋實時查看、日志管理、自動化分析與高級可視化等場景:
tail -f
命令:最常用的實時監控工具,直接輸出日志文件的最新內容(如Tomcat的主日志catalina.out
)。
tail -f /var/log/tomcat9/catalina.out
按Ctrl+C
退出。若需同時監控多個日志(如訪問日志、應用日志),可使用:
tail -f /var/log/tomcat9/*.log
watch
命令:定期執行命令并刷新輸出,適合需要固定間隔查看的場景(如每秒刷新最后一次100行):
watch -n 1 "tail -n 100 /var/log/tomcat9/catalina.out"
-n 1
表示1秒刷新一次,-d
參數可高亮顯示變化內容。
Tomcat日志長期運行會占用大量磁盤空間,需用logrotate
工具自動壓縮、備份舊日志。
配置步驟:
/etc/logrotate.d/tomcat9
文件(針對Tomcat 9):sudo nano /etc/logrotate.d/tomcat9
/var/log/tomcat9/*.log {
daily # 每天輪轉
missingok # 忽略缺失文件
rotate 7 # 保留7天日志
compress # 壓縮舊日志(如.gz格式)
notifempty # 空日志不輪轉
create 640 root adm # 新日志權限
}
sudo logrotate -vf /etc/logrotate.d/tomcat9
該配置會自動清理超過7天的舊日志,避免磁盤空間耗盡。
通過grep
、awk
等工具提取日志中的錯誤、警告或特定關鍵詞,縮小排查范圍:
grep -i "error\|exception" /var/log/tomcat9/catalina.out
grep -c "error" /var/log/tomcat9/catalina.out
grep "2025-10-18" /var/log/tomcat9/catalina.out | grep -i "error"
這些命令可快速定位應用崩潰、數據庫連接失敗等問題。
對于大規模日志,ELK Stack提供實時聚合、可視化與深度分析能力:
/etc/logstash/conf.d/tomcat.conf
:input {
file {
path => "/var/log/tomcat9/catalina.out"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
grok { match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:logmessage}" } }
date { match => [ "timestamp", "ISO8601" ] }
}
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
http://localhost:5601
,添加Elasticsearch索引(如tomcat-*
),創建儀表盤展示錯誤趨勢、訪問量統計、響應時間分布等指標。通過Shell腳本定期檢查日志中的異常(如5分鐘內無新日志),并觸發告警(如郵件、短信):
#!/bin/bash
LOG_FILE="/var/log/tomcat9/catalina.out"
LAST_LINE_FILE="/tmp/tomcat_last_line.txt"
ALERT_THRESHOLD=300 # 5分鐘(秒)
# 獲取當前最后一行行號
CURRENT_LINE=$(wc -l < "$LOG_FILE")
# 讀取上次記錄的行號
if [ -f "$LAST_LINE_FILE" ]; then
LAST_LINE=$(cat "$LAST_LINE_FILE")
else
LAST_LINE=0
fi
# 計算新增行數
NEW_LINES=$((CURRENT_LINE - LAST_LINE))
# 若新增行數為0且超過閾值,觸發告警
if [ "$NEW_LINES" -eq 0 ] && [ "$(( $(date +%s) - $(stat -c %Y "$LOG_FILE") ))" -gt "$ALERT_THRESHOLD" ]; then
echo "Alert: Tomcat log has not been updated for $ALERT_THRESHOLD seconds!" | mail -s "Tomcat Log Alert" admin@example.com
fi
# 更新上次行號
echo "$CURRENT_LINE" > "$LAST_LINE_FILE"
將腳本保存為/usr/local/bin/monitor_tomcat_log.sh
,添加執行權限并設置定時任務(每5分鐘運行一次):
chmod +x /usr/local/bin/monitor_tomcat_log.sh
(crontab -l ; echo "*/5 * * * * /usr/local/bin/monitor_tomcat_log.sh") | crontab -
該腳本可擴展為監控特定錯誤關鍵詞(如"OutOfMemoryError"),提升告警針對性。
若不想搭建復雜環境,可使用商業或開源工具實現一鍵監控:
jmx_exporter
采集Tomcat的JVM指標(如內存使用、線程池狀態),在Grafana中創建儀表盤展示;以上方法覆蓋了從基礎查看到高級分析的全流程,可根據實際需求選擇組合使用。例如,小型項目可用tail -f
+grep
快速排查問題;大型項目建議用ELK Stack+Prometheus實現規?;O控。