首页主机资讯Linux中Java应用怎样监控

Linux中Java应用怎样监控

时间2025-11-14 17:50:03发布访客分类主机资讯浏览636
导读:Linux下Java应用监控实践指南 一 监控体系与分层 系统级:关注CPU、内存、I/O、网络等资源,常用命令有top/htop、vmstat、pidstat、mpstat,用于快速定位资源瓶颈与异常波动。 JVM级:关注堆/非堆内存、...

Linux下Java应用监控实践指南

一 监控体系与分层

  • 系统级:关注CPU、内存、I/O、网络等资源,常用命令有top/htop、vmstat、pidstat、mpstat,用于快速定位资源瓶颈与异常波动。
  • JVM级:关注堆/非堆内存、GC次数与耗时、类加载、JIT编译、线程数量与状态,常用工具jps、jstat、jstack、jmap、jconsole/VisualVM、JMC
  • 应用与业务级:关注HTTP延迟、吞吐、错误率、数据库/缓存调用等,可通过Micrometer/Prometheus暴露指标,配合Grafana可视化。
  • 日志与告警:使用logrotate管理日志体积,结合ELK集中分析;或用Zabbix通过JMX采集JVM指标并配置阈值告警。

二 快速上手命令清单

  • 定位进程:
    • 列出Java进程:jps -l
  • 实时资源:
    • 进程资源:top -p ;系统概况:vmstat 1 5;按进程CPU:pidstat -u 1 5;多核分布:mpstat 1 5
  • JVM运行与GC:
    • GC统计:jstat -gc 1000;GC利用率:jstat -gcutil 1000
  • 线程与内存分析:
    • 线程栈:jstack > thread_dump.txt;堆概要:jmap -heap ;堆转储:jmap -dump:live,format=b,file=heapdump.hprof
  • 图形化/远程:
    • 本地图形工具:jconsole、VisualVM;远程分析:Java Mission Control(JMC)

三 生产级监控方案 Prometheus Grafana

  • 应用埋点(Spring Boot示例):
    • 依赖(Maven):
      • io.micrometer:micrometer-registry-prometheus:1.8.2
    • 配置(application.yml):
      • management.endpoints.web.exposure.include: prometheus
      • management.metrics.export.prometheus.enabled: true
  • Prometheus抓取:prometheus.yml
    • scrape_configs:
      • job_name: ‘java-app’
        metrics_path: ‘/actuator/prometheus’
        static_configs:
        • targets: [‘localhost:8080’]
  • 启动与验证:
    • 启动Prometheus:./prometheus --config.file=prometheus.yml
    • 访问http://:9090查询指标;Grafana导入JVM/Micrometer仪表盘展示趋势与告警。

四 企业监控与告警 Zabbix JMX

  • 启用JMX(示例,生产请开启认证与SSL):
    • java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar your-app.jar
  • Zabbix配置:
    • 安装Zabbix代理并加载JMX模块,编辑**/etc/zabbix/zabbix_agentd.conf**:
      • LoadModule=jmx.so
      • Server=< ZABBIX_SERVER_IP>
      • Hostname=< YOUR_HOSTNAME>
    • 重启代理:systemctl restart zabbix-agent
  • Web端创建主机与监控项:
    • 监控项示例:键值jmx[“java.lang:type=Memory”,“HeapMemoryUsage”],更新间隔60s;可绘制图形并配置阈值告警

五 常见故障排查路径

  • CPU飙高:
    • 系统层:top -p 确认热点进程;pidstat -u 1 5定位线程;mpstat 1 5看多核负载分布。
    • JVM层:jstack 多次采样,查找RUNNABLE占比高或锁竞争线程;结合jstat -gcutil观察是否因频繁GC引起。
  • 内存问题/疑似泄漏:
    • jstat -gcutil观察Old/Eden区使用与GC后回收效果;
    • 生成堆转储:jmap -dump:live,format=b,file=heapdump.hprof ,用MAT/VisualVM分析对象保留路径;
    • 必要时配合jmap -heap查看堆配置与使用情况。
  • 线程阻塞/死锁:
    • jstack导出线程栈,分析BLOCKED/WAITING状态与锁持有者,定位业务或框架层竞争点。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux中Java应用怎样监控
本文地址: https://pptw.com/jishu/748231.html
Debian FTP如何限制连接数 怎样为Linux hostname添加注释

游客 回复需填写必要信息