全球时讯:【云原生 • Prometheus】Prometheus 注册中心Eureka服务发现原理

2023-04-21 17:29:36 来源: 腾讯云

Prometheus 注册中心Eureka服务发现原理

概述

Eureka服务发现协议允许使用Eureka Rest API检索出Prometheus需要监控的targets,Prometheus会定时周期性的从Eureka调用Eureka Rest API,并将每个应用实例创建出一个target。

Eureka服务发现协议支持对如下元标签进行relabeling


(资料图)

__meta_eureka_app_name: the name of the app__meta_eureka_app_instance_id: the ID of the app instance__meta_eureka_app_instance_hostname: the hostname of the instance__meta_eureka_app_instance_homepage_url: the homepage url of the app instance__meta_eureka_app_instance_statuspage_url: the status page url of the app instance__meta_eureka_app_instance_healthcheck_url: the health check url of the app instance__meta_eureka_app_instance_ip_addr: the IP address of the app instance__meta_eureka_app_instance_vip_address: the VIP address of the app instance__meta_eureka_app_instance_secure_vip_address: the secure VIP address of the app instance__meta_eureka_app_instance_status: the status of the app instance__meta_eureka_app_instance_port: the port of the app instance__meta_eureka_app_instance_port_enabled: the port enabled of the app instance__meta_eureka_app_instance_secure_port: the secure port address of the app instance__meta_eureka_app_instance_secure_port_enabled: the secure port of the app instance__meta_eureka_app_instance_country_id: the country ID of the app instance__meta_eureka_app_instance_metadata_: app instance metadata__meta_eureka_app_instance_datacenterinfo_name: the datacenter name of the app instance__meta_eureka_app_instance_datacenterinfo_: the datacenter metadata

eureka_sd_configs常见配置如下:

- job_name: "eureka"  eureka_sd_configs:    - server: http://localhost:8761/eureka #eureka server地址      refresh_interval: 1m #刷新间隔,默认30s

eureka_sd_configs官网支持主要配置如下:

server: basic_auth:  [ username:  ]  [ password:  ]  [ password_file:  ]# Configures the scrape request"s TLS settings.tls_config:  [  ]# Optional proxy URL.[ proxy_url:  ]# Configure whether HTTP requests follow HTTP 3xx redirects.[ follow_redirects:  | default = true ]# Refresh interval to re-read the app instance list.[ refresh_interval:  | default = 30s ]

Eureka协议实现

基于Eureka服务发现协议核心逻辑都封装在discovery/eureka.gofunc (d *Discovery) refresh(ctx context.Context) ([]*targetgroup.Group, error)方法中:

func (d *Discovery) refresh(ctx context.Context) ([]*targetgroup.Group, error) { // 通过Eureka REST API接口从eureka拉取元数据:http://ip:port/eureka/apps apps, err := fetchApps(ctx, d.server, d.client) if err != nil {  return nil, err } tg := &targetgroup.Group{  Source: "eureka", } for _, app := range apps.Applications {//遍历app        // targetsForApp()方法将app下每个instance部分转成target  targets := targetsForApp(&app)        //解析的采集点合入一起  tg.Targets = append(tg.Targets, targets...) } return []*targetgroup.Group{tg}, nil}

refresh方法主要有两个流程:

1、fetchApps():从eureka-server/eureka/apps接口拉取注册服务信息;

2、targetsForApp():遍历appinstance,将每个instance解析出一个target,并添加一堆元标签数据。

如下示例从eureka-server/eureka/apps接口拉取的注册服务信息:

    1    UP_1_            SERVICE-PROVIDER-01                    localhost:service-provider-01:8001            192.168.3.121            SERVICE-PROVIDER-01            192.168.3.121            UP            UNKNOWN            8001            443            1                            MyOwn                                        30                90                1629385562130                1629385682050                0                1629385562132                                        8001                true                8080                        http://192.168.3.121:8001/            http://192.168.3.121:8001/actuator/info            http://192.168.3.121:8001/actuator/health            service-provider-01            service-provider-01            false            1629385562132            1629385562039            ADDED            

instance信息会被解析成采集点target

func targetsForApp(app *Application) []model.LabelSet { targets := make([]model.LabelSet, 0, len(app.Instances)) // Gather info about the app"s "instances". Each instance is considered a task. for _, t := range app.Instances {  var targetAddress string        // __address__取值方式:instance.hostname和port,没有port则默认port=80  if t.Port != nil {   targetAddress = net.JoinHostPort(t.HostName, strconv.Itoa(t.Port.Port))  } else {   targetAddress = net.JoinHostPort(t.HostName, "80")  }  target := model.LabelSet{   model.AddressLabel:  lv(targetAddress),   model.InstanceLabel: lv(t.InstanceID),   appNameLabel:                     lv(app.Name),   appInstanceHostNameLabel:         lv(t.HostName),   appInstanceHomePageURLLabel:      lv(t.HomePageURL),   appInstanceStatusPageURLLabel:    lv(t.StatusPageURL),   appInstanceHealthCheckURLLabel:   lv(t.HealthCheckURL),   appInstanceIPAddrLabel:           lv(t.IPAddr),   appInstanceVipAddressLabel:       lv(t.VipAddress),   appInstanceSecureVipAddressLabel: lv(t.SecureVipAddress),   appInstanceStatusLabel:           lv(t.Status),   appInstanceCountryIDLabel:        lv(strconv.Itoa(t.CountryID)),   appInstanceIDLabel:               lv(t.InstanceID),  }  if t.Port != nil {   target[appInstancePortLabel] = lv(strconv.Itoa(t.Port.Port))   target[appInstancePortEnabledLabel] = lv(strconv.FormatBool(t.Port.Enabled))  }  if t.SecurePort != nil {   target[appInstanceSecurePortLabel] = lv(strconv.Itoa(t.SecurePort.Port))   target[appInstanceSecurePortEnabledLabel] = lv(strconv.FormatBool(t.SecurePort.Enabled))  }  if t.DataCenterInfo != nil {   target[appInstanceDataCenterInfoNameLabel] = lv(t.DataCenterInfo.Name)   if t.DataCenterInfo.Metadata != nil {    for _, m := range t.DataCenterInfo.Metadata.Items {     ln := strutil.SanitizeLabelName(m.XMLName.Local)     target[model.LabelName(appInstanceDataCenterInfoMetadataPrefix+ln)] = lv(m.Content)    }   }  }  if t.Metadata != nil {   for _, m := range t.Metadata.Items {                // prometheus label只支持[^a-zA-Z0-9_]字符,其它非法字符都会被替换成下划线_    ln := strutil.SanitizeLabelName(m.XMLName.Local)    target[model.LabelName(appInstanceMetadataPrefix+ln)] = lv(m.Content)   }  }  targets = append(targets, target) } return targets}

解析比较简单,就不再分析,解析后的标签数据如下图:

标签中有两个特别说明下:

1、__address__:这个取值instance.hostnameport(默认80),所以要注意注册到eureka上的hostname准确性,不然可能无法抓取;

2、metadata-map数据会被转成__meta_eureka_app_instance_metadata_格式标签,prometheus进行relabeling一般操作metadata-map,可以自定义metric_path、抓取端口等;

3、prometheuslabel只支持[a-zA-Z0-9_],其它非法字符都会被转换成下划线,具体参加:strutil.SanitizeLabelName(m.XMLName.Local);但是eurekametadata-map标签含有下划线时,注册到eureka-server上变成双下划线,如下配置:

eureka:  instance:    metadata-map:      scrape_enable: true      scrape.port: 8080

通过/eureka/apps获取如下:

总结

基于Eureka服务发现原理如下图:

基于eureka_sd_configs服务发现协议配置创建Discoverer,并通过协程运行Discoverer.Run方法,Eureka服务发现核心逻辑封装discovery/eureka.gofunc (d *Discovery) refresh(ctx context.Context) ([]*targetgroup.Group, error)方法中。

refresh方法中主要调用两个方法:

1、fetchApps:定时周期从Eureka Server/eureka/apps接口拉取注册上来的服务元数据信息;

2、targetsForApp:解析上步骤拉取的元数据信息,遍历app下的instance,将每个instance解析成target,并将其它元数据信息转换成target元标签可以用于relabel_configs操作

标签:

上一篇 :

下一篇 :

全球时讯:【云原生 • Prometheus】Prometheus 注册中心Eureka服务发现原理

Eureka服务发现协议允许使用EurekaRestAPI检索出Prometheus需要监控的targets,Prometheus会定时周期性的从Eurek

04-21 17:29:36

立新能源一季度营业利润同比增长191% 主业盈利能力持续增长|全球热议

证券时报网讯,4月20日,立新能源(001258)披露2023年一季报,报告期公司实现营业收入2 02亿元,同比增...

04-21 17:21:19

Python基础语法-函数-生成器函数 天天快播

Python中的生成器函数是一种特殊的函数,它可以在调用时产生一个迭代器对象,用于按需生成一系列值,而...

04-21 16:05:49

go的数据类型-其他数据类型-pointer(一)-焦点热议

在Go语言中,指针是一种非常重要的数据类型。它们允许我们直接访问内存中的数据,并对其进行修改。本文...

04-21 15:51:12

深圳数据交易所与蚂蚁集团签订合作框架协议

其中,深圳数据交易所与蚂蚁集团签订合作框架协议,双方将在包括共建共享高价值数据合作渠道,开展数据...

04-21 15:00:04

[一季报]奥普家居(603551):2023年第一季度报告

证券代码:603551证券简称:奥普家居奥普家居股份有限公司2023年第一季度报告本公司董事会及全

04-21 15:10:27

【全球新视野】二手房指导价两年后,最后的“高地”正慢慢淡出

二手房指导价两年后,最后的“高地”正慢慢淡出

04-21 15:03:33

竞争加剧 头部消金公司料将上演赶超大戏_天天快播

每经AI快讯,践行普惠金融理念,填补中低收入人群金融服务空白,消费金融公司立足专业化消费信贷功能定...

04-21 14:59:07

世界球精选!合水县气象台发布寒潮蓝色预警信号【2023-04-21】

合水县气象台发布寒潮蓝色预警信号【2023-04-21】

04-21 14:36:33

天天要闻:车展E快评 | 575万起售最贵纯电车 最贵纯电车劳斯莱斯闪灵

最贵的纯电车长啥样?就算中了五百万大奖也开不走它,因为它575万起售。

04-21 14:35:29

谷雨来临:这几种谷类食物要记得吃

04-21 13:19:26

环球快讯:安卓手机最新好评榜出炉:众星云集下,这款千元机却拿下第一!

他就是realme10Pro+,这款手机小智在前不久的文章里也推荐过它。realme10Pro+配备了一块屏占比极高的双...

04-21 13:30:58

银行业危机缓解,三井住友发行瑞信破产以来首支主要银行AT1债券-每日快播

App4月19日消息,三井住友金融集团发行了日元AT1债券,成为自上月瑞士信贷倒闭以来首家发行此类债券的大...

04-21 13:06:17

西城区组织开展全民国家安全教育日进校园活动:全球今亮点

西城区组织开展全民国家安全教育日进校园活动

04-21 12:41:34

破百仅需 3 秒多,拉风程度不输保时捷!中国品牌支棱起来了!:世界快资讯

目前,很多品牌的在售跑车基本以燃油车为主,电动跑车大都还处于概念或者起跑的阶段,属于非常小众的车...

04-21 12:08:17

马斯克SpaceX星舰发射失败:惨烈爆炸 当空“放烟花”

快科技4月20日讯,SpaceX星舰今晚重新发射,遗憾的是点火升空虽然顺利,但最终并没有取得成功,官方直播...

04-21 12:08:32

当前热文:欧盟宣布最迟于2024年对科索沃民众免签

中新社布鲁塞尔4月20日电(记者德永健)欧盟委员会20日宣布,在欧洲议会和欧盟理事会达成一致后,欧盟最迟...

04-21 11:31:41

每日热门:今日更新红酒木瓜汤真的可以丰胸吗 红酒木瓜汤的效果

红酒木瓜汤真的可以丰胸吗红酒木瓜汤在生活当中是许多女性都比较喜欢的一种能够帮助丰胸的饮品,那么大...

04-21 10:55:18

快资讯:圣元环保2022年净利降62% 2020年上市募13亿

圣元环保2022年净利降62%2020年上市募13亿

04-21 10:41:01

睿远基金一季报:傅鹏博减持港股中国移动;赵枫加仓腾讯,美团退出前十大重仓_当前观察

睿远基金一季报:傅鹏博减持港股中国移动;赵枫加仓腾讯,美团退出前十大重仓

04-21 10:18:19

世界新资讯:微粒贷借款逾期40年拖欠多久上征信系统

网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天...

04-21 09:52:56

市场交投活跃但个股跌多涨少,投资者该如何应对?丨就市论市

市场交投活跃但个股跌多涨少,投资者该如何应对?丨就市论市,早盘,沪指,个股,收盘,创业板,沪股通,就市论...

04-21 09:12:23

焦点速讯:贝仕达克(300822.SZ):2022年度净利降64.38%至4538.22万元 拟10送5派1.5元

格隆汇4月20日丨贝仕达克(300822 SZ)公布2022年年度报告,2022年公司实现营业收入9 94亿元,同比下降

04-21 09:15:29

孙颖莎逆转韩莹,王艺迪艰难取胜迪亚兹| WTT澳门冠军赛

钱天一在3比1击败了韩国球员申裕斌。王曼昱和刘杨子的比赛赢得也不轻松,虽然是3比0,但是有两局都打到...

04-21 08:28:03

全球快讯:c盘临时文件夹在哪里_c盘临时文件夹在

1、大部分的临时文件位于C:用户AppDataLocalTemp下。本文到此分享完毕,希望对大家有所帮助。

04-21 07:55:44

加拿大出事!

加拿大出事!,政府,联邦,罢工,加拿大,皮埃尔

04-21 07:38:12

全球连线|多国留学生零距离感受中国秦腔魅力_环球微头条

02:39由宁夏大学国际教育学院主办、宁夏演艺集团秦腔剧院承办的“唱响青春·多彩秦韵”活动19日在银川举...

04-21 07:35:34

环球播报:高压聚乙烯英文缩写_高压聚乙烯

1、高压聚乙烯是指高压工艺生产的聚乙烯,是低密度聚乙烯(LDPE)低压聚乙烯是指低压工艺生产的聚乙烯能...

04-21 07:23:04

全球新动态:克鲁尼奇:比起遇到本国球队,欧冠半决赛更想踢外国球队

直播吧4月19日讯今天凌晨,米兰在1 4决赛淘汰那不勒斯挺进欧冠四强,克鲁尼奇接受了欧足联官方媒体采访...

04-21 07:20:30

怎样分离乙醇和乙酸乙酯(如何分离乙醇与乙酸)

在乙酸乙酯中混有乙醇,可以用水将乙醇除去,乙酸乙酯不溶于水,乙醇易溶于水,所以,向混合物中加入水...

04-21 07:00:06

中国第一女DJKAKA李奕可强势加盟檀健次热单歌曲remix 4月20日全球发行

腾讯视频综艺《超感现场》等综艺中展现自己的音乐态度和坚持,将电子音乐带入更多人的视线中。冲击世界...

04-21 06:21:33

淄博烧烤带火“烧烤经济”具体是什么情况

很多人对淄博烧烤带火“烧烤经济”具体是什么情况比较关心,现在让我们一起来瞧瞧具体是什么情况吧!1、...

04-21 05:36:15

必迈医药未及时提交年报 收到纳斯达克不合规通知函

必迈医药(BIMIInternationalMedical)(BIMI US)因未能提供截至2022年12月31日的年度报告而收到纳斯达克不合规(non-

04-21 05:22:25

真三国无双ol铁钩_真三国无双ol铁钩-天天热门

真三国无双ol铁钩,真三国无双ol铁钩这个很多人还不知道,现在让我们一起来看看吧!1、碎霸。2、带雷!盾...

04-21 04:54:47

全球微头条丨从文博到非遗 四川文旅IP“热袭”2023香港国际授权展

封面新闻记者刘可欣四川展馆4月19日,2023香港国际授权展在香港会议展览中心盛大开幕。故宫博物院、中国...

04-21 04:25:52

山月不知心底事番外结局(山月不知心底事番外)

大家好,小乐来为大家解答以上的问题。山月不知心底事番外结局,山月不知心底事番外这个很多人还不知道,...

04-21 04:08:36

保险当天退保怎么退?保险生效一天可以退保吗? 天天热文

想必现在有很多小伙伴对于保险的知识都比较想要了解,那么今天小编就为大家收集了一些关于保险的知识分...

04-21 03:39:52

嘉元科技:黄勇因个人原因申请辞去公司副总裁职务 其工作已进行妥善交接

中国财富通4月19日-嘉元科技(688388)公告称,近期收到公司副总裁黄勇递交的辞职报告。黄勇因个人原因...

04-21 03:30:05

出离愤怒是什么意思(出离愤怒)-焦点速递

1、更加生气出离:chūlí1 佛家所谓涅盘。2、2 走出;离开。3、3 超出。4、出离愤怒这里出离是第

04-21 03:13:45

要闻:安徽省首单区县级基金债成功发行

近日,安徽平天湖投资控股集团有限公司成功发行2023年公司债券(债券简称“23平天湖债”),系安徽省首...

04-21 02:50:37

提钱花借款逾期六年影响征信吗 世界新视野

网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天...

04-21 01:51:33

世界通讯!宜兴阳羡音乐节可以露营过夜吗?

宜兴阳羡音乐节可以露营过夜吗?山湖音乐节现场设置了露营区,可以自带露营帐篷前往露营区露营。不可以...

04-21 01:58:50

热点!2023年宁波余姚富巷小学划定学区了吗

余姚市富巷小学学区范围划分一、学区范围富巷社区、富巷居委、丰山前村、康山村。二、学校简介余姚市富...

04-21 01:24:53

中原内配、重塑集团、氢璞创能签约 做强氢燃料电池发动机双极板产业|时快讯

4月19日,中原内配集团股份有限公司与上海重塑能源集团股份有限公司、北京氢璞创能科技有限公司在中原内...

04-21 01:31:20

全球视讯!央行上海:3月末上海人民币贷款余额10.15万亿元 信贷增速稳步提高

2023年3月末,全市本外币贷款余额10 82万亿元,同比增长8 1%,增速比上月末高0 4个百分点。其中,人...

04-21 01:05:27

烟火气回归!100秒速看一季度消费大数据

烟火气回归!100秒速看一季度消费大数据,广州,文旅,火气,采购商,消费大数据

04-21 00:20:06

视焦点讯!不锈钢管重量计算_不锈钢管重量

1、1楼乱扯,2喽对的(外径-壁厚)x壁厚x0 02491x长度=重量(kg),单位为

04-20 23:49:50

当前播报:兖煤澳大利亚:一季度平均价格为347澳元╱吨 同比升35%

兖煤澳大利亚(03668 HK)发布公告,2023年第一季度,按100%基准计,原煤产量为1120万吨。按100%基准计,...

04-20 23:22:53

今日快看!中国上市公司协会柳磊:私募基金已成为资本市场重要载体

中国上市公司协会党委书记、执行副会长柳磊20日在杭州举行的第七届(2023)全球私募基金西湖峰会上表示...

04-20 23:16:10

环球今头条!NExT工作室《重生边缘》新生测试正式开启

今日,由NExTStudios开发的第三人称射击端游《重生边缘》开启了新生测试,目前前往官方预约还有机会获得...

04-20 22:56:43

立新能源一季度营业利润同比增长191% 主业盈利能力持续增长|全球热议
Python基础语法-函数-生成器函数 天天快播
go的数据类型-其他数据类型-pointer(一)-焦点热议
深圳数据交易所与蚂蚁集团签订合作框架协议
[一季报]奥普家居(603551):2023年第一季度报告
【全球新视野】二手房指导价两年后,最后的“高地”正慢慢淡出
竞争加剧 头部消金公司料将上演赶超大戏_天天快播
世界球精选!合水县气象台发布寒潮蓝色预警信号【2023-04-21】
天天要闻:车展E快评 | 575万起售最贵纯电车 最贵纯电车劳斯莱斯闪灵
谷雨来临:这几种谷类食物要记得吃
环球快讯:安卓手机最新好评榜出炉:众星云集下,这款千元机却拿下第一!
银行业危机缓解,三井住友发行瑞信破产以来首支主要银行AT1债券-每日快播
西城区组织开展全民国家安全教育日进校园活动:全球今亮点
破百仅需 3 秒多,拉风程度不输保时捷!中国品牌支棱起来了!:世界快资讯
马斯克SpaceX星舰发射失败:惨烈爆炸 当空“放烟花”
当前热文:欧盟宣布最迟于2024年对科索沃民众免签
每日热门:今日更新红酒木瓜汤真的可以丰胸吗 红酒木瓜汤的效果
快资讯:圣元环保2022年净利降62% 2020年上市募13亿
睿远基金一季报:傅鹏博减持港股中国移动;赵枫加仓腾讯,美团退出前十大重仓_当前观察
世界新资讯:微粒贷借款逾期40年拖欠多久上征信系统
市场交投活跃但个股跌多涨少,投资者该如何应对?丨就市论市
焦点速讯:贝仕达克(300822.SZ):2022年度净利降64.38%至4538.22万元 拟10送5派1.5元
孙颖莎逆转韩莹,王艺迪艰难取胜迪亚兹| WTT澳门冠军赛
全球快讯:c盘临时文件夹在哪里_c盘临时文件夹在
加拿大出事!
全球连线|多国留学生零距离感受中国秦腔魅力_环球微头条
环球播报:高压聚乙烯英文缩写_高压聚乙烯
全球新动态:克鲁尼奇:比起遇到本国球队,欧冠半决赛更想踢外国球队
怎样分离乙醇和乙酸乙酯(如何分离乙醇与乙酸)
中国第一女DJKAKA李奕可强势加盟檀健次热单歌曲remix 4月20日全球发行
淄博烧烤带火“烧烤经济”具体是什么情况
必迈医药未及时提交年报 收到纳斯达克不合规通知函
真三国无双ol铁钩_真三国无双ol铁钩-天天热门
全球微头条丨从文博到非遗 四川文旅IP“热袭”2023香港国际授权展
山月不知心底事番外结局(山月不知心底事番外)
保险当天退保怎么退?保险生效一天可以退保吗? 天天热文
嘉元科技:黄勇因个人原因申请辞去公司副总裁职务 其工作已进行妥善交接
出离愤怒是什么意思(出离愤怒)-焦点速递
要闻:安徽省首单区县级基金债成功发行
提钱花借款逾期六年影响征信吗 世界新视野
世界通讯!宜兴阳羡音乐节可以露营过夜吗?
热点!2023年宁波余姚富巷小学划定学区了吗
中原内配、重塑集团、氢璞创能签约 做强氢燃料电池发动机双极板产业|时快讯
全球视讯!央行上海:3月末上海人民币贷款余额10.15万亿元 信贷增速稳步提高
烟火气回归!100秒速看一季度消费大数据
视焦点讯!不锈钢管重量计算_不锈钢管重量
当前播报:兖煤澳大利亚:一季度平均价格为347澳元╱吨 同比升35%
今日快看!中国上市公司协会柳磊:私募基金已成为资本市场重要载体
环球今头条!NExT工作室《重生边缘》新生测试正式开启
全球微资讯!合创汽车王勇:逐步完善产品矩阵 诠释智能移动“第三空间”
X 广告
资讯
X 广告

Copyright ©  2015-2022 世界畜牧网版权所有  备案号:琼ICP备2022009675号-1   联系邮箱:435 227 67@qq.com