【天天播资讯】【云原生 • Prometheus】Prometheus 注册中心Eureka服务发现原理
2023-04-21 15:57: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 metadataeureka_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.go
的func (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()
:遍历app
下instance
,将每个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.hostname
和port
(默认80),所以要注意注册到eureka
上的hostname
准确性,不然可能无法抓取;
2、metadata-map
数据会被转成__meta_eureka_app_instance_metadata_
格式标签,prometheus
进行relabeling
一般操作metadata-map
,可以自定义metric_path
、抓取端口等;
3、prometheus
的label
只支持[a-zA-Z0-9_]
,其它非法字符都会被转换成下划线,具体参加:strutil.SanitizeLabelName(m.XMLName.Local)
;但是eureka
的metadata-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.go
的func (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
操作
关键词:
责任编辑:hnmd004
-
显卡风扇不转了影响大吗?显卡风扇转好还是不转好?
显卡风扇不转了影响大吗?1、风扇转动主要是使显卡散热,如果在显卡工作是达到一定的温度,风扇会自动转起,控制显卡温度,保护显卡。当低于这一
2023-07-07 15:57:38 -
word文件损坏打不开怎么修复?word文件损坏乱码怎么修复?
word文件损坏打不开怎么修复?1 打开Microsoft Word软件,点击文件菜单,选择打开命令。2 找到损坏的Word文件,选中文件后点击打开按钮
2023-07-07 10:51:03 -
0xc0000005错误代码怎么解决?应用程序0xc0000005是什么错误?
0xc0000005错误代码怎么解决?1、首先按下win+r打开运行,输入regedit按下回车。2、随后依次定位到:HKEY_LOCAL_MACHINE SOFTWARE Microsoft
2023-07-07 10:47:09 -
java环境变量配置后不生效什么原因?怎样看java环境变量是否配置成功?
java环境变量配置后不生效什么原因?1 检查系统是否支持java,即查看java的版本。如果没有安装,需要安装java环境。2 检查配置文件是否正确
2023-07-07 10:43:40 -
ios17什么时候可以更新正式版?ios17什么时候正式推送更新?
ios17什么时候可以更新正式版?ios17正式版预计9月可以更新使用,届时和iPhone15系列新机一起到来。目前,ios17 Beta版在WWDC23发布会结束后
2023-07-07 10:40:52 -
Win11打游戏FPS低怎么办?手机玩游戏帧数低怎么办?
Win11打游戏FPS低怎么办?1、进入Win11系统桌面上,点击开始选择设置进入。2、进入设置界面,点击游戏进入。3、在游戏页面,点击游戏模式进
2023-07-07 10:38:03 -
电脑开不了机怎么办按哪个键?电脑开不了机怎么强制开机?
电脑开不了机怎么办按哪个键?F8:进入 Windows 安全模式。F10:进入 BIOS 设置界面。F11:进入系统恢复界面。Del:进入 BIOS 设置界
2023-07-06 11:14:10 -
显卡风扇不转正常吗?显卡风扇不转怎么解决?
显卡风扇不转正常吗?显卡风扇不转是不正常的。1、灰尘过多可能是显卡上的灰尘太多了,导致堵塞,如果长时间不清理的话,显卡的风扇就会因为
2023-07-06 11:02:33 -
windowshello突然不能用怎么办?windows hello在哪里设置?
windowshello突然不能用怎么办?1、首先按下WIN+R,输入 services msc 回车2、在服务列表中查找 Windows Biometric Service 看这个服
2023-07-06 10:53:30 -
不支持已连接的usb设备怎么解决?无法识别的usb设备是什么意思?
不支持已连接的usb设备怎么解决?需要格式化。USB不支持已连接的设备,是因为U盘文件系统要FAT32格式,需要重新设置U盘格式,先格式化U盘,将U盘
2023-07-06 08:45:03 -
打开dwg格式的软件有哪些?dwg格式文件是什么文件?
打开dwg格式的软件有哪些?1、看图纸DwgSeePlus,一款dwg文件浏览器;2、CAD迷你看图,一款小巧的DWG文件浏览小工具;3、CAD迷你画图,一款CAD
2023-07-06 08:42:40 -
电脑突然没声音了是什么原因?电脑突然没声音了怎么解决?
电脑突然没声音了是什么原因?一起跟着小编来看看吧。电脑没有声音的原因是计算机硬件问题和软件问题,硬件问题主要是声卡坏了,或者输出声
2023-07-05 10:24:15 -
amd是哪个国家的品牌?英特尔和amd哪个厉害?
amd是哪个国家的品牌?amd处理器是美国生产的;美国AMD半导体公司专门为计算机、通信和消费电子行业设计和制造各种创新的微处理器,以及提供
2023-07-05 10:21:36 -
tmp文件可以随便删吗?tmp文件删不掉怎么办?
tmp文件可以随便删吗?是的,可以删除。 tmp文件是一种临时文件,它们通常由操作系统或应用程序创建,以存储暂时数据。一旦完成,它们就会被
2023-07-05 10:19:30 -
mkv格式手机可以看吗?苹果不支持mkv视频吗?
mkv格式手机可以看吗?可以的。 MKV并不是一种压缩格式,而是Matroska的一种媒体文件,是一种多媒体封装格式,或叫多媒体容器。 它可将多种不
2023-07-05 10:16:45 -
电脑开机慢特别卡怎么解决?电脑开机慢系统启动慢什么原因?
电脑开机慢特别卡怎么解决?好多小伙伴不知道如何解决的,那小编就把操作方法分享给大家吧,感兴趣的小伙伴可以参考看看哈。方法一: 减少
2023-07-05 10:11:39 -
zip压缩文件怎么绕过密码?已有的压缩包如何添加密码?
zip压缩文件怎么绕过密码?好多小伙伴不知道的,那小编就来给大家解答一下吧,希望可以帮助到大家吧。1、首先在电脑中,启用英文版nsis,2、
2023-07-05 10:07:06 -
文件后缀隐藏了怎么显示出来?怎么让文件显示扩展名?
文件后缀隐藏了怎么显示出来?一起来看看吧。1、首先,双击打开【计算机】,打开计算机磁盘目录,2、打开后,正常菜单栏是没有显示出来,打
2023-07-04 10:01:15 -
php文件的扩展名是什么?怎么修改php上传文件的大小?
php文件的扩展名是什么?php文件后缀名就是 php文件扩展名和标签为了让服务器来确定我们的PHP文件和脚本,我们必须保存的文件以 php结尾。怎
2023-07-04 09:56:02 -
电脑的文件恢复区在哪里找?恢复文件已损坏怎么办?
电脑的文件恢复区在哪里找?1、1 360文件恢复区打开【360安全卫士】→【木马查杀】,找到并单击左下角的【恢复区】,就可以找到360文件
2023-07-04 09:52:57 -
ipad游戏没有声音怎么回事?ipad打游戏没有声音怎么办?
ipad游戏没有声音怎么回事?1、ipad游戏没有声音可能是忘记开声音或者设置了静音,打开声音或者关闭静音。2、ipad上的游戏设置没有启用声音
2023-07-04 09:42:32 -
电脑快捷方式存在问题是什么原因?快捷方式存在问题怎么解决?
电脑快捷方式存在问题是什么原因?Win11电脑快捷方式可能会出现问题,主要是由于系统更新、病毒感染或者其他原因导致的。快捷方式存在问题怎
2023-07-04 09:34:09 -
DAT是什么文件扩展名?bmp是什么文件扩展名?
DAT是什么文件扩展名? dat文件有两种类型:1、VCD的媒体文件,是数据流格式,可以用一般的视频播放器打开,该类型文件也是MPG格式的,是VCD
2023-07-03 09:48:00 -
mp3文件格式不支持怎么办?mp3格式是什么格式?
mp3文件格式不支持怎么办?是不是好多小伙伴遇到这样的问题不知道如何解决的,那小编就把方法分享给大家吧,感兴趣的小伙伴可以参考看看哈。
2023-07-03 09:44:46 -
任务管理器被禁用怎么解除?任务管理器中没有菜单栏如何解决?
任务管理器被禁用怎么解除?好多小伙伴不知道如何解决的,那小编就把方法给大家解答一下吧,希望可以帮助到大家吧。1、开始 运行 gpedit msc
2023-07-03 09:40:26
精彩推荐
阅读排行
最新资讯
- 电脑淘宝联系不了卖家(电脑淘宝怎么联...
- 图卢兹官方:俱乐部确认将参加下赛季欧联杯
- 第一章 第八节 桑
- 新阶段!北京开放自动驾驶车内无人商业...
- 武汉发布第二批拟供地清单 涉及31宗涉宅用地
- 知乎官宣!“匿名”功能下线
- 联络互动:目前正在加快推进北京联络大...
- 特斯拉“二把手”20天套现近千万!
- 财付通回应30亿罚单:坚决服从和落实,...
- 一成首付可买房,深圳涉事楼盘紧急回应→
- 华为云盘古大模型3.0来了!它为何不做中...
- AI创新成果走进应用场:GE医疗中国发布...
- 国家要“动真格”了?催买房无效后,智...
- 平谷一工业用地顺利成交
- 平谷一物流用地顺利成交
- 从“蔚小理”到“理蔚小”:销量差距背...
- 天智航股东拟合计减持不超2%股份
- 美媒:拜登批准向乌克兰提供违禁武器集...
- 海看股份:公司拥有超过9000小时的超清...
- 中国建筑材料联合会到山东玻纤调研指导工作
- 瑞普生物:猫三联疫苗正在新药申报注册...
- 安居房、人才房成为历史?2023深圳保障...
- 科技感仪式感通通拉满的录取通知书!南...
- 协鑫集成:公司目前订单储备充裕
- 西藏昌都发放购房补贴:干部职工300元/...
- 满足哪些条件可以线上办理公积金提取?...
- 30亿!支付宝、财付通收巨额罚单!
- 福建邵武:鼓励工会组织职工团购商品住...
- 新化首例不动产登记“带押过户”业务成...
- 7月7日大公司动向追踪:蚂蚁、腾讯领百...
- “河西人才节”重磅举措 河西区发布人...
- 把长安CS35 PLUS、吉利缤越压着打,202...
- Plog|长沙这个夏天,热!热!热!热!热!
- 广汇物流:拟定增募资不超18亿元
- 招商蛇口上半年销售约1664亿元 近期新...
- 2023年小暑物企最佳官宣海报:上坤物业
- 为控股股东提供关联担保未按规履行决策...
- 北京汽车:“巅峰”对话谋发展 雪域高...
- 川投能源业绩快报:上半年净利润同比增...
- 中原按揭:新措施促进香港楼市健康发展...
- 上半年宝龙地产销售约176亿元,上坤地产...
- 最新!佛山五区地价TOP10地图出炉,禅桂...
- 新赛股份:控股股东筹划公司控制权变更...
- 中国平安董事会审议通过付欣出任公司副...
- 一周法治播报|第77期:深圳发布四个政府...
- 谁让国内顶流足球红人同台齐聚?
- 2023年矿物制品龙头股有哪些?(2023/7/7)
- 华人健康:拟3.47亿元收购江苏神华100%股份
- 公积金利息可以取出来花吗?怎么操作?
- 房价下跌13%,香港放大招了!刺激楼市,...
- 金融管理部门对蚂蚁集团及旗下机构罚款7...
- 国能日新:董事及监事等拟合计减持不超2...
- 搭载全新发动机,蒙迪欧1.5T车型能否满...
- 贵阳银行:董事会秘书董静辞职
- 深网观察 第761期 | 深圳报业食堂摆...
- 时刻半年!连江将再出让2幅地块!位置在...
- 市区这片将拆迁!补偿政策...
- 45天下线1万台,哈弗枭龙要为新能源SUV...
- 瞄准全场景智慧出行,深蓝汽车要解决行...
- 中国石油北京项目管理公司:给予胡继勇...
- 齐翔腾达:子公司青岛思远8万吨/年甲乙...
- 招商银行:王小青副行长任职资格已获得核准
- cpu带k和f和kf(cpu带k的和带kf有何区别)
- 江苏出台临时用地管理规范性文件 明确...
- 2023年重庆市养老金计发补发时间什么时候?
- 产品力再突破,锋兰达要将“高价值”传...
- 通用电气发布可持续发展报告 多途径助...
- 简阳市市场监管局靠前发力 保障大运会...
- 住建部明确城市更新底线要求 坚持“留...
- 华依科技董事拟减持不超1.5%股份
- 《北京数字经济发展报告(2022~2023)》发布
- 链家,其实遇到了重大瓶颈
- 广汇物流:拟向控股股东等定增募资不超1...
- 保利发展上半年销售2368.21亿元 6月份2...
- 4.19公顷!史各庄这个地块“规划方案”...
- 问界M5标准版亮相,赛力斯要推动智慧汽...
- AI创新院正式成立 游族网络全面推进AI...
- 知乎宣布将下线匿名功能
- 大恒科技(600288.SH):以1.74亿元出售两...
- 冰箱保鲜蔬菜是密封好还是透气好?
- 掌趣科技旗下《饥饿鲨:进化》APP存在过...
- 株洲市三个名师工作室落户八中
- 开展危旧房排查 筑牢安全大根基
- 宣亚国际:公司暂未使用高算力、高传输...
- 格力地产:三亚合联中央商务区项目正在...
- 中南建设:公司西安中南上悦城4月底已完...
- 宋城演艺:公司目前已不持有SPACES任何股权
- 泉峰汽车:收到国内某知名通信科技公司...
- 深圳福彩公益微电影《星光》获国家广电...
- 九安医疗:公司已有专门负责糖尿病诊疗...
- 克而瑞:金科引入长城国富作战投,长实...
- 丰山集团:丰山全诺在钒电池液流电解液...
- 咸宁出台新政!事关老旧小区
- 今年首批!老旧小区改造,涉及昌平两个小区
- “和平方舟”号医院船,西太平洋全流程...
- 木头毛刺用什么打磨抛光(木头毛刺用什...
- 在各地大力推动下 保障性租赁住房筹建...
- 370亿风电龙头腰斩了
- 中秋节发红包多少适合女朋友的
- 13天完成100%签约,7天完成100%搬迁,居...
-
焦点讯息:部署和配置 Spring Cloud Data Flow
下一篇2023-04-21 16:20:38
-
武汉船机总包华夏金租1200吨风电安装平台下水
上一篇2023-04-21 14:54:59