SkyWalking 源码分析 JVM 指标的收集与存储
1. 概述
本文主要分享 SkyWalking JVM 指标的收集与存储。大体流程如下:
- Agent 每秒定时收集 JVM 指标到缓冲队列。
- Agent 每秒定时将缓冲队列的 JVM 指标发送到 Collector 。
- Collector 接收到 JVM 指标,异步批量存储到存储器( 例如,ES )。
目前JVM 指标包括四个维度:
- CPU
- Memory
- MemoryPool
- GC
SkyWalking UI 界面如下:

2. Agent 收集 JVM 指标
2.1 JVMService
org.skywalking.apm.agent.core.jvm.JVMService ,实现 BootService 、Runnable 接口,JVM 指标服务,负责将 JVM 指标收集并发送给 Collector 。代码如下:
- queue 属性,收集指标队列。
- collectMetricFuture 属性,收集指标定时任务。
- sendMetricFuture 属性,发送指标定 时任务。
- sender 属性,发送器。
#beforeBoot() 方法,初始化 queue ,sender 属性,并将自己添加到 GRPCChannelManager ,从而监听与 Collector 的连接状态。