在Ubuntu上监控Java应用可通过以下方式实现:
一、JDK自带工具
- 命令行工具:
jps:列出Java进程ID 。jstat:监控GC、类加载等统计信息,如jstat -gcutil(每秒刷新一次)。1000 jstack:生成线程堆栈信息,用于分析死锁或线程状态。jmap:生成堆内存快照,用于内存泄漏分析。
- 图形化工具:
- JConsole:监控JVM内存、线程、CPU等基础指标。
- VisualVM:集成JConsole功能,支持堆转储分析、线程监控等。
二、第三方监控工具
- Prometheus + Grafana:
- 通过JMX Exporter采集JVM指标,Prometheus存储数据,Grafana可视化展示。
- 适合复杂场景,支持告警规则配置。
- Zabbix/Supervisord:
- 监控进程状态、资源使用,支持自动重启异常进程。
- APM工具:
- 如Glowroot、Pinpoint,用于分布式系统性能追踪,分析请求链路和慢查询。
三、系统级监控
- top/htop:实时查看CPU、内存占用,过滤Java进程。
- vmstat/iostat:监控虚拟内存、磁盘I/O性能。
四、脚本化监控
- 编写Shell脚本定期检查进程状态、资源使用,如CPU占用率超过阈值时发送告警。
选择建议:
- 简单场景:使用JDK自带工具(如
jstat、jstack)或htop。 - 复杂场景:Prometheus+Grafana组合,支持指标可视化和告警。
- 分布式系统:选择APM工具(如Glowroot)进行全链路监控。