CentOS Java项目运维监控实施指南
JMX(Java Management Extensions)是Java应用监控的核心标准,通过JVM参数开启后,可使用JDK自带工具实现本地或远程监控。
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=falsejps -l);jstat -gcutil <PID> 1000 5每秒采集一次,共5次,查看堆内存使用率);jstack <PID> > thread_dump.log);jmap -heap <PID>查看堆内存详情,jmap -dump:format=b,file=heap.hprof <PID>导出堆转储文件);jconsole <IP>:<JMX端口>连接远程主机);jvisualvm命令启动。对于分布式或容器化环境,Prometheus(时序数据库)+Grafana(可视化)是主流方案,可实现指标的长期存储与动态展示。
prometheus.yml配置监控目标(如Java应用所在主机的JMX Exporter端口):scrape_configs:
- job_name: 'java_app'
static_configs:
- targets: ['your_java_app_host:9010'] # JMX Exporter暴露的端口
启动Prometheus:./prometheus --config.file=prometheus.yml。java -javaagent:/path/to/jmx_prometheus_javaagent.jar=8080:/path/to/config.yml -jar your_app.jarconfig.yml定义了需要采集的指标(如堆内存、GC次数、线程数等)。sudo yum install grafana),启动后添加Prometheus为数据源(URL为http://localhost:9090),导入Java监控模板(如Grafana官方的“Java Monitoring”模板),即可生成内存使用率、GC频率、线程数等可视化 dashboard。对于复杂的分布式Java应用,APM(应用性能管理)工具可实现全链路追踪、性能瓶颈定位与代码级分析。
-javaagent:/path/to/skywalking-agent.jar),即可自动采集性能数据并上报至OAP Server。-javaagent:/path/to/myperf4j-agent.jar),并配置需要监控的方法或类。/actuator/health查看健康状态,/actuator/metrics查看所有指标)。结合Micrometer库,可将指标导出至Prometheus、Grafana等系统(添加micrometer-registry-prometheus依赖)。日志是排查问题的关键线索,ELK(Elasticsearch+Logstash+Kibana)可实现日志的集中收集、存储与分析。
sudo yum install elasticsearch)、Logstash(sudo yum install logstash)、Kibana(sudo yum install kibana),并启动服务。java_log.conf),定义输入(从文件读取Java日志)、过滤(解析日志格式)、输出(发送至Elasticsearch):input {
file {
path => "/path/to/your_java_app.log"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:logmessage}" }
}
date {
match => ["timestamp", "ISO8601"]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "java_app_logs"
}
}
http://localhost:5601),创建索引模式(匹配java_app_logs),即可通过Discover、Dashboard等模块查看日志详情、统计错误数、分析请求耗时等。top(查看Java进程CPU、内存占用)、ps(查看进程详细信息,如ps -ef | grep java)、vmstat(监测系统虚拟内存、CPU活动,如vmstat 1 5每秒采集一次,共5次)等命令,快速了解系统整体状态。crontab -e创建定时任务,定期检查Java进程是否存活(如*/5 * * * * pgrep java > /dev/null || systemctl restart your_java_service每5分钟检查一次,若进程不存在则重启服务),或清理日志文件(如0 0 * * * rm -f /path/to/logs/*.log每天凌晨清理日志)。