本节重点介绍 :
- node_exporter主流程源码追踪
- mem模块采集的流程
node_exporter主流程源码追踪
采集器的初始化
- 初始化handler
- 源码位置 D:\nyy_work\go_path\pkg\mod\github.com\prometheus\node_exporter@v1.2.2\node_exporter.go
- 调用 newHandler,其中最关键一句是 innerHandler
- 调用 innerHandler ,其中干这么几件事
- 根据过滤器初始化node_collector nc
- 把 nc注册到 prometheus的 registry 上
r.Register(nc)
- 源码如下
NewNodeCollector 初始化nc
- 源码位置 D:\nyy_work\go_path\pkg\mod\github.com\prometheus\node_exporter@v1.2.2\collector\collector.go
- 根据 各个模块注册的 collectorState获取他们的执行函数 collector
- 各个模块会调用 在各自的init 函数中调用 registerCollector ,向 collectorState和factories注册自己
执行采集
- prometheus sdk中执行采集就是执行对应的 Collect方法
- 源码位置 D:\nyy_work\go_path\pkg\mod\github.com\prometheus\node_exporter@v1.2.2\collector\collector.go
- 调用 execute函数,可以看到就是调用各个 collector模块的 update函数
mem采集模块的内容
- Update源码位置 D:\nyy_work\go_path\pkg\mod\github.com\prometheus\node_exporter@v1.2.2\collector\meminfo.go
- 源码如下
- 内容分析
- 通过c.getMemInfo() 获取到memInfo
- 在linux 中memInfo中对应的就是 /proc/meminfo ,逐行解析
- 遍历推送即可
本节重点总结 :
- node_exporter主流程源码追踪
- mem模块采集的流程