监控CentOS Java应用性能可从工具、指标及方法三方面入手,以下是具体方案:
一、核心监控工具
-
JMX工具(官方基础方案)
- jstat:监控JVM内存、垃圾回收等指标,如
jstat -gcutil <pid> 1000 5(每秒刷新5次堆内存使用率)。
- jstack:分析线程堆栈,定位死锁或性能瓶颈。
- jmap:生成堆内存快照,排查内存泄漏。
- JConsole/VisualVM:图形化界面查看CPU、内存、线程等实时数据,支持远程连接。
-
开源监控系统
- Prometheus+JMX Exporter:通过JMX Exporter将JVM指标导出为Prometheus格式,结合Grafana可视化,适合容器化场景。
- MyPerf4J:轻量级无侵入监控,支持高并发场景下的响应时间、吞吐量等指标采集。
- ELK Stack:通过Logstash采集Java日志,结合Kibana实现日志分析与可视化。
-
APM工具(全链路监控)
- Elastic APM:集成应用性能监控、错误追踪,支持分布式系统。
- SkyWalking:开源APM,提供分布式追踪、性能指标分析。
二、关键监控指标
- JVM层面:堆内存使用率、GC次数与耗时、线程数、CPU占用率。
- 应用层面:请求响应时间、吞吐量、错误率、慢SQL(需结合数据库监控)。
- 系统层面:CentOS服务器的CPU、内存、磁盘I/O、网络流量。
三、实施步骤
-
基础配置
- 启用JMX远程监控(需在启动参数中添加
-Dcom.sun.management.jmxremote等参数)。
- 安装基础工具:
yum install -y jdk(确保包含jconsole、jstack等命令)。
-
部署监控方案
- 轻量级场景:直接使用
jstat/jstack命令行工具,或通过crontab定时采集数据(如每分钟记录一次内存使用率)。
- 可视化场景:部署Prometheus+Grafana,配置JMX Exporter采集指标并展示仪表盘。
- 生产环境:采用Elastic APM或SkyWalking,实现全链路性能监控与告警。
-
日志管理
- 通过
logrotate设置日志轮转,避免文件过大。
- 使用ELK Stack或Splunk分析应用日志,定位异常。
四、注意事项
- 生产环境需避免直接使用
jstack等工具频繁采集数据,可通过异步采集或采样降低影响。
- 容器化部署时,需确保监控工具与Kubernetes集成(如Prometheus的
kube-state-metrics)。
参考来源: