【云原生 • Prometheus】图解Prometheus数据抓取原理

2023-04-22 10:31:31 来源: 腾讯云
scrape加载流程组件关系

【云原生 • Prometheus】图解Prometheus数据抓取原理

discovery模块利用各种服务发现协议发现目标采集点,并通过channel管道将最新发现的目标采集点信息实时同步给scrape模块scrape模块负责使用http协议从目标采集点上抓取监控指标数据。

如上图,discovery服务发现模块经过Discoverer组件--> updater组件--> sender组件,将服务发现采集点实时动态发送到syncCh通道上,而该通道的另一端就是scrape模块,这样discovery模块scrape模块就构建起了关联。

scrape模块updateTsets组件通过协程方式运行实时监听syncCh通道,并将更新写入到scrapeManager结构体中targetSets字段对应的map中,同时触发triggerSend信号reloader组件,告诉该组件采集点有更新,reloader组件就从scrapeManagertargetSets中拉取最新采集点进行加载。


(相关资料图)

reloader组件基于这些采集点信息生成一个个targetScraper组件targetScraper组件组件主要负责按照job中配置的interval时间间隔不停轮训调用采集点的HTTP接口,这样就实现了采集点的指标数据采集。

scrape加载流程

下面来看下scrape模块reloader加载采集点具体流程,如下图:

「reloader采集点加载主要分为如下几个主要步骤:」

「1、scrapePool生成并初始化基础数据:」

scrapeManager结构体中targetSets字段对应的map中存放了当前服务发现的最新采集点信息,keyjob名称,遍历该targetSets中存放的采集点信息,为每个job对应生成一个scrapePool结构体的实例,即scrapePool是封装单个抓取job的工作单元:

ScrapePools 是单个的Job的抓取目标的工作单位:type scrapePool struct { //存储指标 appendable storage.Appendable //一个scrapePool对应一个job,config即为该job配置 config *config.ScrapeConfig // 基于job配置生成http请求客户端工具,比如封装认证信息等 client *http.Client //每个target都会生成一个loop loops          map[uint64]loop //target_limit检查 targetLimitHit bool //relabe后有效的采集点 activeTargets  map[uint64]*Target //relabel后无效采集点 droppedTargets []*Target //生成scrapeLoop工厂函数 newLoop func(scrapeLoopOptions) loop}

每个抓取job生成的scrapePool存放在scrapeManager结构体中scrapePools这个map中:

scrapePools   map[string]*scrapePool

「2、targetgroup.Group构建Target:」

上面生成的scrapePool中主要初始化configclient等信息,并没有涉及到抓取采集点数据,然后对生成的scrapePool执行Sync方法,入参就是该抓取job当前所有采集点信息,这个方法就是对job的采集点信息进行处理:

func (sp *scrapePool) Sync(tgs []*targetgroup.Group) 

遍历采集点,通过targetsFromGroup(tg, sp.config)解析采集点返回[]*Target

var all []*Targetsp.droppedTargets = []*Target{}for _, tg := range tgs { //基于targetgroup.Group构建target集合 targets, err := targetsFromGroup(tg, sp.config) if err != nil {  level.Error(sp.logger).Log("msg", "creating targets failed", "err", err)  continue } for _, t := range targets {  if t.Labels().Len() > 0 {//relabel后符合要求的采集点   all = append(all, t)  } else if t.DiscoveredLabels().Len() > 0 {//relabel后不符合要求的采集点:废弃   sp.droppedTargets = append(sp.droppedTargets, t)  } }}

Target结构体主要字段如下,即将服务发现的采集点信息解析成scrape模块的Target信息,解析过程中会涉及relabel操作,从服务发现的目标采集点中过滤出符合要求的真实采集点,一个Target即代表一个将要真实触发Http请求对象:

type Target struct { //服务发现标签,即未经过relabel处理的标签 discoveredLabels labels.Labels //经过relabel处理之后标签 labels labels.Labels //http请求参数 params url.Values    //采集点状态:up、down、unknown health             TargetHealth}

「3、有效Target生成scrapeLoop:」

「Target只是包含采集点信息,scrapeLoop实现loop接口,封装了发送http请求采集数据指标逻辑的Target执行单元:」

type loop interface { run(interval, timeout time.Duration, errc chan<- error) setForcedError(err error) stop() getCache() *scrapeCache disableEndOfRunStalenessMarkers()}

其中run方法就是启动http数据抓取,入参interval指定循环抓取指标间隔;stop方法则是停止http数据采集。

我们来看下Target如何生成scrapeLoop

if _, ok := sp.activeTargets[hash]; !ok {    //生成targetScraper,其中封装了Target和client //Target封装了采集点请求IP、端口、请求参数等信息,通过这些信息构建HTTP请求Request //client是封装了认证信息的http请求客户端工具,用于将http请求request发送出去 s := &targetScraper{Target: t, client: sp.client, timeout: timeout} l := sp.newLoop(scrapeLoopOptions{  target:          t,  scraper:         s,  limit:           limit,  honorLabels:     honorLabels,  honorTimestamps: honorTimestamps,  mrc:             mrc, })   ...}if _, ok := sp.activeTargets[hash]; !ok {    //sp.activeTargets不存在则表示新发现的采集点,则创建scrapeLoop     //生成targetScraper,其中封装了Target和client //Target封装了采集点请求IP、端口、请求参数等信息,通过这些信息构建HTTP请求Request //client是封装了认证信息的http请求客户端工具,用于将http请求request发送出去 s := &targetScraper{Target: t, client: sp.client, timeout: timeout} l := sp.newLoop(scrapeLoopOptions{  target:          t,  scraper:         s,  limit:           limit,  honorLabels:     honorLabels,  honorTimestamps: honorTimestamps,  mrc:             mrc, }) sp.activeTargets[hash] = t sp.loops[hash] = l uniqueLoops[hash] = l} else {    //sp.activeTargets存在则可能:    //1、重复的采集点:直接忽略即可    //2、之前发现并启动的采集点:设置uniqueLoops[hash] = nil,则后续启动loop时不用启动     //target在sp.activeTargets已存在,但是uniqueLoops不存在,说明该采集点之前就被发现过并被启动,当前发现的和之前一致未变 //uniqueLoops[hash] = nil表示当前还是存在,但是不需要启动,后面对于sp.activeTargets存在但是uniqueLoops中不存在的采集点,则为采集点消失,需要停止loop并移除掉 if _, ok := uniqueLoops[hash]; !ok {  uniqueLoops[hash] = nil } sp.activeTargets[hash].SetDiscoveredLabels(t.DiscoveredLabels())}

uniqueLoops存储当前抓取job所有有效采集点,不在该集合中的采集点需要停止并移除,如之前存在的采集点,但是当前又消失不见的采集点:

for hash := range sp.activeTargets { //uniqueLoops存储当前抓取job所有有效采集点,不在该集合中的采集点需要停止并移除,如之前存在的采集点,但是当前又消失不见的采集点 //uniqueLoops中value=nil的是不需要启动,之前服务发现过并被启动的;value不是nil则表示需要启动 if _, ok := uniqueLoops[hash]; !ok {  //移除  wg.Add(1)  go func(l loop) {   l.stop()   wg.Done()  }(sp.loops[hash])  delete(sp.loops, hash)  delete(sp.activeTargets, hash) }}

scrapeLoop中还有个关键的类型targetScraper,它才是真正执行http请求组件,其实现scraper接口(如下),其中scrape就是一次http请求逻辑封装:

type scraper interface { scrape(ctx context.Context, w io.Writer) (string, error) Report(start time.Time, dur time.Duration, err error) offset(interval time.Duration, jitterSeed uint64) time.Duration}

「4、启动scrapeLoop:」

最后,执行scrapeLooprun方法,启动scrapeLoop组件:

for _, l := range uniqueLoops { if l != nil {   go l.run(interval, timeout, nil) }}

组件关系

scrape模块加载流程关键是几个核心组件创建、初始化及启动运行的过程:」

标签:

【云原生 • Prometheus】图解Prometheus数据抓取原理

discovery模块利用各种服务发现协议发现目标采集点,并通过channel管道将最新发现的目标采集点信息实时同步

04-22 10:31:31

LED概念股震荡走弱 乾照光电跌超10%

4月21日电,乾照光电跌超10%,万润科技跌停,易天股份、福日电子、联得装备、创维数字、华灿光电等多股跌超

04-22 10:16:29

PTA期货每周行情--郑商所(4.17-4.21) 每日热议

说明:(1)价格:元 吨(2)成交量、持仓量:手(3)成交额:亿元(4)涨跌一:周收盘-上周结算(5)涨跌二:周结算-

04-22 09:38:51

融创获超75%债权人支持 境外债务重组成功_世界速讯

融创获超75%债权人支持境外债务重组成功-4月20日晚,融创中国发布公告称,其本金总额为90 48亿美元的境外债

04-22 09:31:21

如何使用空气罐

气壶常用于餐饮或聚会,盛放热饮或冷饮。空气罐像热水瓶一样绝缘。热饮会保持几个小时的热度,而冷饮会保持

04-22 09:33:16

【世界报资讯】“五一”临近旅游等行业将迎业绩爆发 四大受益板块估值修复可期

随着“五一”假期临近,近日各大平台发布的酒店、景区门票、机票订单、电影订单等数据持续走高,多维度...

04-22 09:07:58

滥竽充数告诉了我们什么道理_滥竽充数的道理

欢迎观看本篇文章,小勉来为大家解答以上问题。滥竽充数告诉了我们什么道理,滥竽充数的道理很多人还不知道

04-22 08:57:05

中国邮政储蓄银行上海分行男员工殴打女同事 涉事银行这样回应

中国邮政储蓄银行上海分行男员工殴打女同事涉事银行这样回应

04-22 08:23:53

马斯克放话0利润卖车也能赚钱:特斯拉市值应声蒸发3800亿

马斯克放话0利润卖车也能赚钱:特斯拉市值应声蒸发3800亿

04-22 08:31:17

一季度人民币汇率双向波动小幅升值 企业要树立汇率风险中性理念

一季度人民币汇率双向波动小幅升值企业要树立汇率风险中性理念(主题)人民网北京4月21日电(记者杜燕飞)

04-22 07:51:47

异氟尔酮二胺IPDA商品报价动态(2023-04-21)-环球热消息

交易商品牌 产地交货地最新报价异氟尔酮二胺IPDA 含量99 8%以上,色度15以下,水份0 2%以内南京大泽贸易有

04-22 07:43:01

专家人才建言献策|李胜:加强大数据全产业链人才引进和复合型人才培养

2014年,“东方祥云”平台从全球8615个参赛项目中脱颖而出,获得“云上贵州”大数据商业模式大赛最高奖...

04-22 07:13:46

当前热议!2023全球豫商大会签约55个项目 合同引资636亿元

2023全球豫商大会在郑州举行,郑州三六零数字科技综合业务平台项目、洛阳年产5万吨磷酸酯萃取剂项目、平顶

04-22 06:34:40

每日资讯:一个男生硬起来是什么样子的?

1、当男人有性兴奋了就会硬起来,这个你说憋啊……就好像你让一个人上台演讲他紧张得要死你就跟他说“有...

04-22 06:01:43

74岁,达利欧与年轻人聊了一小时 全球讯息

这是一场别开生面的对话——74岁的达利欧与4位中国年轻人。昨晚(4月20日),中信出版(300788)联动抖音...

04-22 05:42:03

法官信箱 | 被辞员工离开工作岗位 应当交回工作手机号码

编辑同志:我原来所在公司在电信经营者处开户获取手机号码后,为便于我为公司开展工作,将手机号码交给我使

04-22 05:06:54

陈皮普洱、柑普茶和小青柑、大红柑怎么区分? 时讯

很多茶友就觉得柑普就等同于陈皮茶,其实这种观点是不正确的。陈皮是指芸香科植物橘及其栽培变种的干燥成熟

04-22 04:54:17

荔枝虫害防治_荔枝虫_每日头条

1、荔枝里面有虫是食心虫(像蛔虫似的,肉白色的)。2、荔枝果是作为这种虫子的寄生体,使虫子得以成长,这

04-22 04:05:28

速递!西子洁能(002534):4月21日北向资金增持56.13万股

4月21日北向资金增持56 13万股西子洁能。近5个交易日中,获北向资金减持的有4天,累计净减持165 68万股。近

04-22 03:59:10

2022浙江湖州市市级机关事业单位招聘编外工作人员拟聘人员公示(十五)

根据《2022年湖州市市级机关事业单位公开招聘编外工作人员公告》规定,经笔试、面试、体检和考察,现确定下

04-22 03:47:05

科学家发现三叠纪“长颈”龙家族新成员

新华社北京4月20日电(记者温竞华)在大自然中,长长的脖子能带来很多生存优势,如拓展视野、便于获取食物

04-22 03:21:10

当前快看:4月21日基金净值:泓德战略转型股票最新净值1.3436,跌1.75%

4月21日,泓德战略转型股票最新单位净值为1 3436元,累计净值为2 2436元,较前一交易日下跌1 75%。历史数据

04-22 02:52:16

第四军医大学夏丽敏团队揭示了靶向ELF4是一种新治疗结直肠癌转移的策略

结直肠癌(CRC)是一种高度恶性的疾病,已夺去数百万人的生命。远处转移是结直肠癌相关死亡的主要原因,肝脏

04-22 02:30:22

环球观焦点:米洛斯浴室柜优缺点_米洛斯浴室柜官网

1、米洛斯浴室柜质量不错。2、水龙头的话。3、我建议你选用科勒水龙头或者是九牧的;米洛斯浴室柜不属于十

04-22 02:04:58

环球热资讯!深圳贝尔口腔门诊部怎么样?整牙医生李锐景简介一览!

一、深圳贝尔口腔门诊部怎么样?是专业的口腔连锁机构,是面向大众的现代化医疗机构。就医环境优雅,交通便

04-22 01:40:24

矫诏_当前讯息

1、矫诏,读音为jiǎozhào,汉语词语,意思是伪造皇帝诏书,或者篡改皇帝的诏书。2、出自《汉书.卷九三.

04-22 01:35:12

绝对折射率_关于绝对折射率介绍_观速讯

1、光从真空射入介质发生折射时,入射角i与折射角r的正弦之比n叫做介质的“绝对折射率”,简称“折射率...

04-22 01:00:57

环球即时:印象深刻的事英语作文50字(推荐10篇)

印象深刻的事英语作文50字第1篇WhenIwasalittlechild,IwassonaughtythatIalwaysdidsomethingangrymyparents

04-22 00:34:19

世界快讯:官方:攻防俱佳,德里赫特以40%得票率当选拜仁3月最佳球员

官方:攻防俱佳,德里赫特以40%得票率当选拜仁3月最佳球员直播吧4月21日讯拜仁官方在周四公布球队3月份的最

04-22 00:17:17

生妻不娶,暗九不过-全球看热讯

​在历史的长河中,富含哲理以及寓教后人的语句也就成了约定成俗的“规矩”!其中,不乏一些讲授经验的...

04-21 23:36:02

笛子谱怎么看 符号_笛子谱

1、五线化成简谱!就可以了民谣的话也可以我虽然没玩过笛子但是乐理都懂笛子因该是七个岳孔加一个没孔吧

04-21 23:27:06

科学计数法的定义初一 科学计数法的定义

今天来聊聊关于科学计数法的定义初一,科学计数法的定义的文章,现在就为大家来简单介绍下科学计数法的定义

04-21 23:08:23

当前滚动:大道至简 实干为要_大道至简下一句

1、菩提本无树,明镜亦非台。2、本来无一物,何处惹尘埃。3、重剑无锋,大巧不工。4、大道至简,有权不可任

04-21 22:52:39

代招生合同范本(热门14篇)

代招生合同范本第1篇1 甲方同意授权乙方作为甲方招生代理业务的合作方,乙方与甲方之间的合作仅指招生业务

04-21 22:20:00

foxpro被什么软件取代_foxpro

1、foxpro没有几页。2、foxpro只有六个字母。以上就是【foxpro被什么软件取代,foxpro】相关内容。

04-21 22:14:05

377的功效与作用_377 环球播报

你们好,最近小活发现有诸多的小伙伴们对于377的功效与作用,377这个问题都颇为感兴趣的,今天小活为大家梳

04-21 21:51:12

藤野先生选自呐喊吗_藤野先生选自

一、题文二、解答鲁迅周树人文学思想革命朝花夕拾从百草园到三味书屋阿长与山海经本文到此结束,希望对大家

04-21 21:09:28

爆大冷!梁靖崑遭逆转出局!钱天一有惊无险赛后一句话笑场,刘国梁找王曼昱复盘!附4.21赛程

4月20日下午,WTT澳门冠军赛进行了5场1 8决赛,国乒的钱天一、王曼昱和梁靖崑分别迎战各自对手。在此前已经

04-21 20:58:22

欧文·斯通文集 天天简讯

1、《欧文·斯通文集》是1998-1北京十月文艺出版社出版的图书。2、作者是(美)欧文﹒斯通。

04-21 20:41:30

爷爷突然住院,医生成了7岁女孩的临时爸爸

00:20近日,在安徽合肥,7岁小女孩星星(化名)因爷爷生病住院,和奶奶一起在病房陪护。由于父母都在外地,

04-21 20:23:43

世界头条:4月21日大数据板块跌幅达4%

4月21日11点8分,大数据板块指数报3955 361点,跌幅达4%,成交1105 76亿元,换手率2 49%。板块个股中,跌幅

04-21 19:48:04

一场盛大的音乐节“钱力漫游” 要闻速递

线下演出带动文旅消费,线上“音乐节”仍有新故事

04-21 19:06:13

“零容忍”出清造假公司 “违法退”或成多元退市机制新特征 环球播报

中国证券网讯(记者刘礼文)近日,ST宏图因公司存在虚减负债情况,收到证监会《行政处罚及市场禁入事先告知

04-21 18:56:30

现场默哀!已致29人遇难!医院院长等12人被刑拘

现场默哀!已致29人遇难!医院院长等12人被刑拘

04-21 18:44:04

焦点简讯:待产包清单详细_待产清单

1、1、产妇卫生巾、婴儿脐带贴2、我买这个是最亏的。去医院的时候,分配我在楼下一家店买了一个刚刚还139元

04-21 18:45:07

全球观焦点:淄博一季度新建商品住宅网签面积大涨7成 达到120.6万平方米

观点网讯:近日,据淄博市新闻办披露,今年一季度,全市新建商品住宅网签面积大涨,达到120 6万平方米,同

04-21 18:27:35

迈克-布朗谈2-0:如果我们过于自信就会被击败 那些家伙是冠军

迈克-布朗谈2-0:如果我们过于自信就会被击败那些家伙是冠军,勇士,疯狂,迈克-布朗,nba季后赛

04-21 17:26:25

甘肃:人工智能赋能为民兴办实事 帮助315万老人管慢病

甘肃:人工智能赋能为民兴办实事帮助315万老人管慢病

04-21 17:29:33

全球快播:科大讯飞将于5月6日发布讯飞星火大模型

科大讯飞发布第一季度报告称,2023年一季度实现营业收入28 88亿元,同比下降17 64%;归母净亏损5789 5万元,

04-21 17:34:54

央行回应!中国不存在长期通缩或通胀基础

4月20日,人民银行举行2023年一季度金融统计数据有关情况新闻发布会,央行调查统计司司长、新闻发言人阮健

04-21 17:10:28

LED概念股震荡走弱 乾照光电跌超10%
PTA期货每周行情--郑商所(4.17-4.21) 每日热议
融创获超75%债权人支持 境外债务重组成功_世界速讯
如何使用空气罐
【世界报资讯】“五一”临近旅游等行业将迎业绩爆发 四大受益板块估值修复可期
滥竽充数告诉了我们什么道理_滥竽充数的道理
中国邮政储蓄银行上海分行男员工殴打女同事 涉事银行这样回应
马斯克放话0利润卖车也能赚钱:特斯拉市值应声蒸发3800亿
一季度人民币汇率双向波动小幅升值 企业要树立汇率风险中性理念
异氟尔酮二胺IPDA商品报价动态(2023-04-21)-环球热消息
专家人才建言献策|李胜:加强大数据全产业链人才引进和复合型人才培养
当前热议!2023全球豫商大会签约55个项目 合同引资636亿元
每日资讯:一个男生硬起来是什么样子的?
74岁,达利欧与年轻人聊了一小时 全球讯息
法官信箱 | 被辞员工离开工作岗位 应当交回工作手机号码
陈皮普洱、柑普茶和小青柑、大红柑怎么区分? 时讯
荔枝虫害防治_荔枝虫_每日头条
速递!西子洁能(002534):4月21日北向资金增持56.13万股
2022浙江湖州市市级机关事业单位招聘编外工作人员拟聘人员公示(十五)
科学家发现三叠纪“长颈”龙家族新成员
当前快看:4月21日基金净值:泓德战略转型股票最新净值1.3436,跌1.75%
第四军医大学夏丽敏团队揭示了靶向ELF4是一种新治疗结直肠癌转移的策略
环球观焦点:米洛斯浴室柜优缺点_米洛斯浴室柜官网
环球热资讯!深圳贝尔口腔门诊部怎么样?整牙医生李锐景简介一览!
矫诏_当前讯息
绝对折射率_关于绝对折射率介绍_观速讯
环球即时:印象深刻的事英语作文50字(推荐10篇)
世界快讯:官方:攻防俱佳,德里赫特以40%得票率当选拜仁3月最佳球员
生妻不娶,暗九不过-全球看热讯
笛子谱怎么看 符号_笛子谱
科学计数法的定义初一 科学计数法的定义
当前滚动:大道至简 实干为要_大道至简下一句
代招生合同范本(热门14篇)
foxpro被什么软件取代_foxpro
377的功效与作用_377 环球播报
藤野先生选自呐喊吗_藤野先生选自
爆大冷!梁靖崑遭逆转出局!钱天一有惊无险赛后一句话笑场,刘国梁找王曼昱复盘!附4.21赛程
欧文·斯通文集 天天简讯
爷爷突然住院,医生成了7岁女孩的临时爸爸
世界头条:4月21日大数据板块跌幅达4%
一场盛大的音乐节“钱力漫游” 要闻速递
“零容忍”出清造假公司 “违法退”或成多元退市机制新特征 环球播报
现场默哀!已致29人遇难!医院院长等12人被刑拘
焦点简讯:待产包清单详细_待产清单
全球观焦点:淄博一季度新建商品住宅网签面积大涨7成 达到120.6万平方米
迈克-布朗谈2-0:如果我们过于自信就会被击败 那些家伙是冠军
甘肃:人工智能赋能为民兴办实事 帮助315万老人管慢病
全球快播:科大讯飞将于5月6日发布讯飞星火大模型
央行回应!中国不存在长期通缩或通胀基础
高速列车仿生表面微结构气动优化设计及机理研究_关于高速列车仿生表面微结构气动优化设计及机理研究简述
X 广告
资讯
X 广告

Copyright ©  2015-2023 非洲畜牧网版权所有  备案号:沪ICP备2022005074号-8   联系邮箱:58 55 97 3@qq.com