本系列尝试分析prometheus中部分重要模块的静态结构。
scrape模块在prometheus中负责着采集具体指标,并记录到后端存储中的功能,可以说是prometheus最为核心的一个功能模块。
prometheus的指标采集模块静态结构如下图:
在一个管理面(scrapeManager)中,每次初始化(重载),会根据配置的份数创建出对应的采集缓冲池(scrapePool);在缓冲池中,每一个监控目标会对应创建一个采集循环(scrapeLoop);采集循环可以认为是最小的一个工作单位,下图进一步解析采集循环的静态结构:
采集的主要流程函数在scrape.go中的scrapeAndReport,采集接口(scraper)采集到数据后,会先调用append方法写到采集缓冲层(scrapeCache)中,最后调用持久化的Commit方法写到后端存储。
静态结构梳理清晰之后,阅读源码的难度会相对下降一些,通过分析每个层次实现的方法,基本可以打通这个模块的脉络。相应的源码解析博客附在文末。
参考文档:
https://blog.youkuaiyun.com/dengxiafubi/category_9042830.html