在Ubuntu上監控Java應用可以通過多種工具和方法實現,以下是一些常用的監控工具和步驟:
jps
jstat -gcutil <pid> 5000 10
jmap -dump:format=b,file=heapdump.hprof <pid>
jstack <pid> > thread_dump.txt
jconsole
jvisualvm
java -XX:UnlockCommercialFeatures -XX:+UnlockFlightRecorder -jar myapp.jar
sudo apt update
sudo apt install prometheus
sudo systemctl start prometheus
sudo systemctl enable prometheus
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/ubuntu $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
wget https://repo.zabbix.com/zabbix/5.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.4-1ubuntu20.04_all.deb
sudo dpkg -i zabbix-release_5.4-1ubuntu20.04_all.deb
sudo apt update
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent
可以編寫腳本來定期收集Java應用的性能數據,并發送報警郵件。例如,以下是一個簡單的CPU占用率監控腳本:
#!/bin/bash
THRESHOLD=80
EMAILS="xxxxxxx@163.com,xxxxxxx@qq.com"
CURRENT_TIME=$(date '+%Y-%m-%d %H:%M:%S')
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
if (( $(echo "$CPU_USAGE > $THRESHOLD" | bc -l) )); then
echo "$CURRENT_TIME - 當前CPU使用率:$CPU_USAGE%" | mail -s "CPU 使用率報警" $EMAILS
echo "$CURRENT_TIME - 報警郵件已發送至 $EMAILS"
fi
visualvm
通過這些工具和方法,可以有效地監控和管理Java應用的性能,確保系統的穩定運行和應用的高性能。