GC日志需先解析为结构化指标,再通过Pushgateway、Micrometer或Logstash推送至Prometheus+Grafana实现监控可视化;GCViewer仅支持离线分析,无法直接对接监控系统。

GC 统计数据本身是日志文本,不能直接“导入”监控系统。需要先解析日志、提取结构化指标,再通过标准协议或中间组件推送到监控后端(如 Prometheus + Grafana)。核心路径是:日志 → 解析 → 指标暴露 → 采集 → 可视化。
用 Pushgateway 上报 GC 指标
这是最常用、轻量且适合批处理场景的方式:
- 编写一个解析脚本(Java/Python/Shell),读取 GC 日志(如 gc.log),提取关键数值:Young GC 次数、Full GC 次数、平均停顿时间、老年代使用率峰值等;
- 将这些指标按 Prometheus 文本格式组织,例如:
gc_young_count{app="order-service"} 142
gc_full_pause_ms_sum{app="order-service"} 3862.4 - 通过 HTTP POST 发送到 Pushgateway(如 http://pushgateway:9091/metrics/job/jvm_gc/instance/prod-01);
- Prometheus 配置 scrape job 拉取 Pushgateway 中的指标,Grafana 添加对应面板即可绘图。
用 Micrometer + Spring Boot Actuator 实时暴露
适用于运行中的 Spring Boot 应用,无需额外解析日志文件:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 添加依赖:micrometer-registry-prometheus 和 spring-boot-starter-actuator;
- 启用 /actuator/prometheus 端点;
- Micrometer 默认已自动注册 JVM GC 相关指标(如 jvm_gc_pause_seconds_count、jvm_gc_memory_promoted_bytes_total),无需手动解析日志;
- Prometheus 定期抓取该端点,Grafana 关联指标即可构建 GC 频次、耗时、内存晋升趋势等看板。
用 Logstash / Fluentd 做日志管道解析
适合已有 ELK 或 Loki 日志平台的企业环境:
立即学习“Java免费学习笔记(深入)”;
- 配置 Logstash pipeline,用 grok 过滤器匹配 GC 日志行(如识别 [GC (Allocation Failure) 或 [Full GC);
- 用 dissect 或 kv 插件提取时间、类型、耗时、前后堆大小等字段;
- 输出到 Elasticsearch 或 Prometheus Exporter(需配合 custom exporter);
- Grafana 可直连 ES 查询 GC 事件分布,或通过 exporter 转为 Prometheus 指标供图表使用。
为什么不用 GCViewer 直接连监控系统?
GCViewer 是离线分析工具,定位问题快,但不具备指标导出接口或实时推送能力。它生成的是 HTML 报告或 CSV 文件,属于事后分析产物,无法作为监控系统的数据源。若想联动,可将其分析结果(如“Full GC 每小时超 5 次”)转为告警规则,写入 Prometheus Alertmanager 的自定义 alert,实现“分析结论 → 监控告警”的闭环。

















