Ubuntu中Java应用监控的实用方法详解
Java应用在Ubuntu上的监控需从系统级基础命令(ps、top)入手,结合JDK自带工具(jstat、jstack、jmap)进行内存与线程分析,引入Prometheus+Grafana等第三方方案采集JVM指标,SpringBoot项目可借助Actuator与Micrometer增强应用层监控,并通过Shell脚本与crontab实现自动化巡检与告警。
Ja va应用在Ubuntu上跑得好不好,监控这道工序绝对不能省。下面先从系统级基础监控说起,再逐步深入到JDK自带工具、第三方方案、应用层手段,最后给出一个脚本自动化的闭环思路。

一、系统级基础监控
Ubuntu系统自带的那几个命令,用来快速摸清Ja va进程的底细,其实已经够用了:
ps命令:想列出所有Ja va进程?ps -ef | grep ja va就行。要是怕grep把自己也筛出来,换成ps -ef | grep [j]a va更干净。top/htop:实时看资源占用,top里按Shift+M按内存排序,一目了然。htop需要先装一下(sudo apt install htop),界面更友好,进程树也看得清。jtop:专门为Ja va应用设计的实时监控工具,安装也简单:wget https://github.com/kwhat/jtop/releases/download/v0.7.3/jtop-0.7.3.jar && chmod +x jtop-0.7.3.jar && sudo mv jtop-0.7.3.jar /usr/local/bin/jtop.jar。直接跑jtop看整体状态,或者jtop -p盯住某个进程。
二、JDK自带工具监控
JDK自带的命令行工具,从进程管理到内存分析、线程诊断,覆盖面很全,而且不用额外装任何东西:
jps(Ja va Process Status):列出当前用户下的Ja va进程和PID。简单jps显示PID和主类名,jps -v还能看到启动参数,排查问题很实用。jstat(JVM Statistics Monitoring Tool):实时监控JVM内存、GC、类加载等。比如jstat -gcutil,每5秒刷一次,共10次,堆内存各区域使用率、GC次数和耗时全出来了。5000 10 jstack(Ja va Stack Trace):生成线程栈跟踪信息,死锁、线程阻塞这类问题,用它准没错。用法:jstack,保存到文件慢慢分析。> thread_dump.txt jmap(Ja va Memory Map):生成堆转储快照(Heap Dump),内存泄漏分析利器。命令:jmap -dump:format=b,file=heapdump.hprof,生成二进制文件,可以用Eclipse MAT或VisualVM分析。jconsole(Ja va Monitoring Console):图形化监控,可以看到堆内存、方法区、线程、类加载、GC等。启动方式:jconsole,然后选择目标Ja va进程就行。jvisualvm(Ja va VisualVM):功能更强大,集成了前面几个工具的能力,还能做性能剖析、堆转储分析。启动方式:jvisualvm,前提是JA VA_HOME/bin在PATH里。
三、第三方监控工具
生产环境要求高可用,单靠自带工具还不够。这里推荐几个成熟的开源/商业方案:
- Prometheus + Grafana:
Prometheus 是时间序列数据库,通过JMX Exporter(Ja va袋里)采集JVM指标(内存、GC、线程数等)。在prometheus.yml里添加- targets: ['即可抓取。Grafana 负责可视化,连接Prometheus后,用现成的模板(比如“JVM Monitoring”)就能展示内存使用率、GC频率、线程数等实时图表,还能设置告警(比如内存超过80%触发邮件报警)。:9090'] - Zabbix:企业级开源监控,支持监控Ubuntu服务器资源(CPU、内存、磁盘),也通过Zabbix Agent或JMX监控Ja va应用指标。告警方式支持邮件、信息,还能自动修复,适合运维体系比较完善的环境。
- HertzBeat:新兴的开源实时监控告警系统,兼容Prometheus,最重要的是不需要Agent,Web页面配置监控阈值(响应时间、错误率等),告警支持邮件、钉钉、企业微信,部署很轻量。
四、应用层监控(Spring Boot项目推荐)
如果Ja va应用是Spring Boot项目,那监控能力可以更上一层楼:
- Spring Boot Actuator:内置了监控端点,暴露健康状况、内存使用、线程信息等。只需添加依赖
org.springframework.boot:spring-boot-starter-actuator,然后配置management.endpoints.web.exposure.include=*开启所有端点。访问http://看健康状态,:8080/actuator/health http://看所有指标。:8080/actuator/metrics - Micrometer:与Actuator集成,支持将指标发送到Prometheus、Grafana等工具。比如添加
micrometer-registry-prometheus依赖,Actuator会自动暴露Prometheus格式的指标端点(/actuator/prometheus),直接对接Prometheus。
五、脚本自动化监控
上面这些工具基本都是被动监控,但有些场景需要主动巡检、自动恢复。写一个Shell脚本定期检查Ja va应用状态,配合crontab就能实现自动报警和重启:
- 进程检查脚本(
monitor.sh):
#!/bin/bash
PID=$(pgrep -f "ja va -jar /path/to/your/app.jar")
if [ -z "$PID" ]; then
echo "$(date): Ja va应用未运行,正在重启..." >> /var/log/ja va_monitor.log
nohup ja va -jar /path/to/your/app.jar > /dev/null 2>&1 &
else
CPU_USAGE=$(top -bn1 -p $PID | grep "Cpu(s)" | sed "s/.*, *([0-9.]*)%* id.*/1/" | awk '{print 100 - $1}')
if (( $(echo "$CPU_USAGE > 80" | bc -l) )); then
echo "$(date): CPU使用率过高(${CPU_USAGE}%),发送报警..." >> /var/log/ja va_monitor.log
# 发送邮件报警(需配置mailutils)
echo "Ja va应用CPU使用率过高:${CPU_USAGE}%" | mail -s "CPU报警" your_email@example.com
fi
fi
- 定时任务:用
crontab -e添加一行,每5分钟执行一次脚本:*/5 * * * * /bin/bash /path/to/monitor.sh。
这样一套组合拳打下来,从系统层面到JVM内部,再到应用层和自动化,Ja va应用在Ubuntu上的监控才算真正到位。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
CentOS系统PHP超时问题详细原因分析与全面解决方法
CentOS系统PHP超时问题源于脚本执行超限,可从配置参数、代码性能、服务器环境三方面解决:修改php ini或 htaccess全局设置,脚本内动态调整超时,同步优化Web服务器超时参数,并排查慢查询、外部依赖等性能瓶颈。
深入分析Java日志对CentOS性能的影响
Java日志对CentOS性能的影响主要体现在I O、CPU和内存占用。频繁写入磁盘增加I O负载,异步日志或缓冲区可缓解;日志级别过低导致CPU占用升高,需合理设置;缓冲区过大会增加内存压力,可调整大小或使用内存映射文件。日志存储需轮转压缩归档,分析处理宜采用自动化工具。
CentOS Cobbler集成其他工具实践指南
Cobbler利用Kickstart脚本集成Puppet、Ansible等配置管理工具,实现系统安装后自动化部署;与OpenStack协同管理虚拟机镜像及创建流程;配合GlusterFS自动挂载存储卷;并原生支持DNS、DHCP网络自动配置,全面提升部署效率。
CentOS上C++性能优化选项配置完整指南
在CentOS上配置C++性能优化,需安装gcc等编译工具,使用-O2、-march=native、-mtune=native及-flto编译选项,借助gprof、perf、valgrind定位性能热点,同时可通过环境变量或CMake统一管理优化设置,推荐结合CPU架构特性并利用CMake条件编译,从而显著提高程序执行速度与效率,实现最佳性能。
Crontab时间格式错误如何修复
Crontab时间格式由5个字段组成,分别代表分钟、小时、日期、月份和星期。常见错误包括多余字符、字段值超出范围、缺少字段、星期值错误以及字段间缺少空格或制表符。对照这些典型问题逐项排查即可解决。
- 热门数据榜
相关攻略
2026-07-20 21:33
2026-07-20 21:33
2026-07-20 21:33
2026-07-20 21:33
2026-07-20 06:48
2026-07-20 06:48
2026-07-20 06:48
2026-07-20 06:47
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

