【prometheus】-08 图解云原生服务发现机制_环球看点

2023-03-25 06:57:30 来源: 腾讯云

Prometheus服务发现机制之Kubernetes

概述

分析过云原生监控接入方案,下面开始看下云原生服务发现机制。Prometheus本身就是作为云原生监控出现的,所以对云原生服务发现支持具有天然优势。Kubernetes服务发现协议允许使用Kubernetes Rest API检索出Prometheus需要监控的targets,并且跟着集群状态进行同步变更。

kubernetes_sd_configs表示基于Kubernetes进行服务发现,服务发现目标类型使用role表示,比如:role=service,表示针对Kubernetes中的service资源对象,进行具体的服务发现操作。kubernetes_sd_configs支持的role包括:node、service、pod、endpoints、ingress

原理

基于Kubernetes进行服务发现,主要针对Kubernetes中的service、pod、node等资源对象进行服务发现,Prometheus使用client-gorole中指定的资源对象进行监听。一般Prometheus部署在Kubernetes集群中的话,Prometheus可以直接利用指定的Service AccountKubernetes API进行访问。若PrometheusKubernetes集群之外,则kubernetes_sd_configs还需指定监控集群的API ServerURL以及相关的认证信息,从而能够创建对应集群的Client


(资料图)

“client-go是kubernetes官方提供的go语言的客户端库,go应用使用该库可以访问kubernetes的API Server,这样我们就能通过编程来对kubernetes资源进行增删改查操作。

配置示例:

- job_name: kubernetes-pod    metrics_path: /metrics    kubernetes_sd_configs:    - role: pod      namespaces:        names:        - "test01"      api_server: https://apiserver.simon:6443      bearer_token_file: d:/token.k8s       tls_config:        insecure_skip_verify: true    bearer_token_file: d:/token.k8s    tls_config:      insecure_skip_verify: true

协议分析

Kubernetes服务发现大致原理如下图:

1、通过clientset访问API Server,根据role配置获取不同的集群资源对象;

2、通过List & Watch机制,注册监听事件:

p.informer.AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: func(o interface{}) {  podAddCount.Inc()  p.enqueue(o) }, DeleteFunc: func(o interface{}) {  podDeleteCount.Inc()  p.enqueue(o) }, UpdateFunc: func(_, o interface{}) {  podUpdateCount.Inc()  p.enqueue(o) },})

通过informer.AddEventHandler函数可以为集群资源添加资源事件回调方法,支持3种资源事件回调方法:AddFunc、DeleteFunc、UpdateFunc,分别对应新增资源、修改资源和删除资源时事件触发。

3、资源变更注册回调方法中,将目标资源对象转成key放入到队列queue中,如下pod资源:

func (p *Pod) enqueue(obj interface{}) {    //obj是pod资源对象,通过DeletionHandlingMetaNamespaceKeyFunc将其转换成key    //比如key=test01/nginx-deployment-5ffc5bf56c-n2pl8,即namespace/pod_name格式 key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj) if err != nil {  return } p.queue.Add(key)}

4、后台goroutines无限循环执行process逻辑,process逻辑中就是不停从queue中提取数据进行处理,比如pod.go对应逻辑如下:

func (p *Pod) process(ctx context.Context, ch chan<- []*targetgroup.Group) bool { keyObj, quit := p.queue.Get() if quit {  return false } defer p.queue.Done(keyObj) key := keyObj.(string) //与 MetaNamespaceKeyFunc() 功能相反的是 SplitMetaNamespaceKey() 函数,它将传入的 Key 分解,返回对象所在的命名空间和对象名称。 namespace, name, err := cache.SplitMetaNamespaceKey(key) if err != nil {  return true }    //根据key获取资源对象obj o, exists, err := p.store.GetByKey(key) if err != nil {  return true } if !exists {  //pod被删除时,exists=false  // 然后发送targets为空的tg,即移除  send(ctx, ch, &targetgroup.Group{Source: podSourceFromNamespaceAndName(namespace, name)})  return true } pod, err := convertToPod(o) if err != nil {  level.Error(p.logger).Log("msg", "converting to Pod object failed", "err", err)  return true }    //p.buildPod(pod):将资源对象信息转成target groups send(ctx, ch, p.buildPod(pod)) return true}

大致逻辑:

a、根据从queue中提取的key,使用p.store.GetByKey(key)获取对应的资源对象,比如pod、service等对象;

b、如果对象不存在,则表示资源对象被删除,则创建一个targets集合为空的target groups,这样Scrape Manager就会移除targets

c、使用buildXXX(obj)将资源对象解析成target groups,如buildNode()、buildPod()等;

d、最后使用send()方法将解析的target groups通过通道channel传递出去,最终传递给Scrape Manager,这样target groupstargets将被Prometheus抓取监控数据。

pod资源的target groups结构如下示例,每个pod对象都会被解析成target groups,其中包含targets集合、labels标签集合:

Discovery创建

1、假如我们定义如下抓取作业:

- job_name: kubernetes-nodes-cadvisor    metrics_path: /metrics    scheme: https    kubernetes_sd_configs:    - role: node      api_server: https://apiserver.simon:6443      bearer_token_file: d:/token.k8s       tls_config:        insecure_skip_verify: true    bearer_token_file: d:/token.k8s    tls_config:      insecure_skip_verify: true    relabel_configs:    # 将标签(.*)作为新标签名,原有值不变    - action: labelmap      regex: __meta_kubernetes_node_label_(.*)    # 修改NodeIP:10250为APIServerIP:6443    - action: replace      regex: (.*)      source_labels: ["__address__"]      target_label: __address__      replacement: 192.168.52.151:6443    - action: replace      source_labels: [__meta_kubernetes_node_name]      target_label: __metrics_path__      regex: (.*)      replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor  

会被解析成kubernetes.SDConfig如下:

kubernetes.SDConfig定义如下:

type SDConfig struct { APIServer          config.URL              `yaml:"api_server,omitempty"` Role               Role                    `yaml:"role"` HTTPClientConfig   config.HTTPClientConfig `yaml:",inline"` NamespaceDiscovery NamespaceDiscovery      `yaml:"namespaces,omitempty"` Selectors          []SelectorConfig        `yaml:"selectors,omitempty"`}

2、Discovery创建

//创建Clientset,可看成操作Kubernetes API的客户端c, err := kubernetes.NewForConfig(kcfg) if err != nil {  return nil, err }return &Discovery{  client:             c,  logger:             l,  role:               conf.Role,  namespaceDiscovery: &conf.NamespaceDiscovery,  discoverers:        make([]discovery.Discoverer, 0),  selectors:          mapSelector(conf.Selectors),}, nil

3、Discovery创建完成,最后会调用Discovery.Run()启动服务发现:

func (d *Discovery) Run(ctx context.Context, ch chan<- []*targetgroup.Group) { d.Lock() namespaces := d.getNamespaces() switch d.role { case RoleEndpointSlice:  role=endpointslice逻辑 case RoleEndpoint:  role=endpoints逻辑 case RolePod:  role=pod逻辑 case RoleService:  role=service逻辑 case RoleIngress:  role=ingress逻辑 case RoleNode:  role=node逻辑 default:  level.Error(d.logger).Log("msg", "unknown Kubernetes discovery kind", "role", d.role) } var wg sync.WaitGroup for _, dd := range d.discoverers {  wg.Add(1)  go func(d discovery.Discoverer) {   defer wg.Done()   d.Run(ctx, ch)  }(dd) } d.Unlock() wg.Wait() <-ctx.Done()}

4、注册集群资源对象监听事件回调逻辑:

for _, namespace := range namespaces { p := d.client.CoreV1().Pods(namespace) plw := &cache.ListWatch{  ListFunc: func(options metav1.ListOptions) (runtime.Object, error) {   options.FieldSelector = d.selectors.pod.field   options.LabelSelector = d.selectors.pod.label   return p.List(ctx, options)  },  WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {   options.FieldSelector = d.selectors.pod.field   options.LabelSelector = d.selectors.pod.label   return p.Watch(ctx, options)  }, } pod := NewPod(  log.With(d.logger, "role", "pod"),  cache.NewSharedInformer(plw, &apiv1.Pod{}, resyncPeriod), ) d.discoverers = append(d.discoverers, pod) go pod.informer.Run(ctx.Done())}

标签:

上一篇 :

下一篇 :

【prometheus】-08 图解云原生服务发现机制_环球看点

分析过云原生监控接入方案,下面开始看下云原生服务发现机制。Prometheus本身就是作为云原生监控出现的...

03-25 06:57:30

大话西游2023清明任务“何故魂归来”测试,副本玩法略有不同|今头条

清明将至,怀古踏春。又是一年清明时,长安城春雨绵绵,万物萌动。清明节,是中华民族最重要的祭祀节日...

03-25 02:53:26

ChatGPT出笼,这次要革互联网的命了

ChatGPT出笼,这次要革互联网的命了,插件,互联网,搜索引擎,应用程序,chatgpt

03-24 23:01:10

每日速递:什么叫一米线它有什么作用

一米线:又称伸缩隔离带、栏杆座、警戒线、移动护栏杆; "一米线 "主要用于大型排队秩序控制以及定向...

03-24 22:43:02

一图秒懂,汽车促消费活动到哪去?|信息

长沙晚报掌上长沙3月24日讯(全媒体记者 欧艳 林暘)雨花车企表示

03-24 21:09:07

涨价劝退年轻人!卫龙辣条去年少卖了4吨,漯河首富刘卫平也焦虑

“辣条第一股”卫龙(09985 HK)资本市场优等生的光环正在逐渐散去。  3月24日,卫龙发布了2022年财...

03-24 19:02:24

提振出行消费 中石化易捷启动第二届出行养车节

3月23日,中石化易捷第二届出行养车节在四川成都启动。启动仪式上,中石化易捷推出“出行养车卡”,为消...

03-24 18:03:14

动态:衡中衡电子秤怎么调克数_电子秤怎么调克数

1、首先我们电子秤的左边有几个砝码,然后右边有一个挂钩。我们先在电子秤的左边放一个小砝码。2、那么...

03-24 16:48:48

天天微头条丨2023ToyotaMirai增加了新技术并附送15000美元的免费燃油

这家汽车制造商刚刚宣布MiraiFCEV轿车将于2023年推出,好消息是它成功地保持了49,500美元的起始建议零售价。

03-24 15:20:46

自梳女是什么

自梳女也称妈姐或姑婆,是指女性把头发像已婚妇一样自行盘起,以示终生不嫁、独身终老,死后称净女,是...

03-24 15:14:53

与春天有个约“惠”——集美家居定慧桥商场22周年庆踏春而来

与春天有个约“惠”——集美家居定慧桥商场22周年庆踏春而来

03-24 14:04:02

环球今日讯!德军棕黄一点都不棕(田宫四号g型)

第一次尝试沙漠黄旧化。板件是田工新出的四号g,看上了套件里面送的北非四德傻兵人,最近在准备整个大活...

03-24 12:16:23

让非遗品牌焕发时代风采

杨悦3月23日晚,“2023非遗品牌大会”在广州开幕。本届大会首次升格为全国性大型非遗活动,参会、参展主...

03-24 11:26:39

看完7集《人生之路》,我五味杂陈哑然失笑,魔改毁经典啊|环球时讯

看完7集《人生之路》,我五味杂陈哑然失笑,魔改毁经典啊

03-24 10:19:42

天天关注:600319股吧(淘气天尊股市直播)

新华社河南南阳5月29日电(记者苏斌、张寒)三年前夺得雅加达亚运会乒乓球混双冠军时,王楚钦悄悄捏了捏和...

03-24 08:59:51

手机卡可以换归属地吗_全球速看

以中国移动为例,中国移动卡在不换号码的情况下换归属地是可以的。但仅限同一省份,不同的省份是不可以...

03-24 07:34:04

朱啸虎:ChatGPT太强大,对创业公司很不友好

近期,金沙江创投主管合伙人朱啸虎在“2023黑马产业大会”上分享了他对于当前消费产业和企业服务的投资...

03-24 07:19:55

当前速看:林淑华_关于林淑华的介绍

1、林淑华,祖籍浙江平湖。2、曾用名方健。3、解放后,在上海市文化局工作。4、代表作《问宝宝》《新中...

03-24 03:53:41

全球百事通!《最终幻想16》狼犬伙伴新实机:大街上随时"撸狗"

今日,《最终幻想16》发布主角克莱夫好伙伴狼犬Torgal的第三弹实机短片,玩家可以随时通过按下X键来爱抚它。

03-23 23:13:11

TV动画《无神世界中的神明活动》追加声优,2023年4月5日开播-今日热议

TV动画《无神世界中的神明活动》追加声优:诹访部顺一、速水奨、悠木碧,该作将在4月5日开播!【STAFF】...

03-23 21:02:52

好利科技(002729):2022年营业收入2.53亿元,与上期同比增加13.67%|世界播报

好利科技(002729):2022年营业收入2 53亿元,与上期同比增加13 67%3月23日,好利科技2022年年报显示,...

03-23 19:43:33

微信怎么用拍一拍并说话

微信拍一拍并说话的用法:1、打开微信点击一下通讯录。2、选择打开与好友的聊天框界面。3、选择好友后弹...

03-23 18:51:32

天天看点:在鸭绿江畔讲好水上安全“第一课”

宽甸满族自治县位于鸭绿江畔,这里渡口分布广泛、山路崎岖,水路出行是县里相对便捷的交通方式,乡镇“...

03-23 18:01:34

天天热门:瑞可达:主要客户是中兴通讯、爱立信、诺基亚、三星等全球主要通信设备制造商等客户

有投资者在投资者互动平台提问:请问贵公司5G通讯连接器业务进展如何?主要的客户有哪些?瑞可达(688800...

03-23 17:04:33

全球消息!普陀新文化地标破土开工,区域高质量发展迈向高端化智能化绿色化

3月21日,位于普陀区怒江北路229弄的波克城市互联网研发应用中心项目(后简称“波克项目”)正式破土动...

03-23 15:53:16

3月23日常州清红硫酸价格暂稳 天天热资讯

3月23日,常州清红化工有限公司工业级硫酸(98%)价格为250元 吨,价格暂稳,实际成交价以协商为主。上...

03-23 14:40:34

丰田凯美瑞将退出日本市场

丰田凯美瑞将退出日本市场盖世汽车讯据外媒报道,丰田汽车计划停止在日本市场销售凯美瑞(Camry)轿车。...

03-23 13:02:20

教育部:2022年九年义务教育巩固率为95.5% 每日热文

全国小学阶段教育56人及以上的大班1 38万个,比上年减少0 72万个,大班占总班数的比例为0 48%,比上...

03-23 11:19:52

六一居士是谁

1、六一居士是欧阳修。2、欧阳修(1007年8月1日-1072年9月22日),字永叔,号醉翁,晚号六一居士,汉族...

03-23 10:56:41

豆粕价格持续下跌 产业链企业冷暖不一 今日快看

豆粕价格持续下跌产业链企业冷暖不一,豆粕,饲料,生猪,巴西,大豆,坚果,蔬菜,产业链,豆制品

03-23 10:12:35

长乐区漳港街道开展“护河爱水、清洁家园”行动_世界热点

为深入推进河长制工作,加强河道综合治理,3月14日,长乐区漳港街道在渡桥村开展“河长日”巡河暨“护河...

03-23 08:48:43

焦点!恒大汽车(00708.HK)公布,“恒驰5”正在持续量产,截至本公告发布之日止,集团已交付超过900辆“恒驰5”

恒大汽车(00708 HK)公布,“恒驰5”正在持续量产,截至本公告发布之日止,集团已交付超过900辆“恒驰5”。

03-23 06:18:47

方形花盆适合种什么花_方形花盆种植哪种花比较好 前沿资讯

解答:1、方形浅花盆储水少,适合种植需水量少的耐旱植物,如向日葵、芦荟、仙人掌、三色堇等植物。此外...

03-23 01:47:21

【播资讯】一二年生花卉是指什么(一二年生花卉是指什么)

1、指从播种-萌发-生长发育-开花结果-死亡在同一年内完成或者两年内完成的草本花卉,一年生花卉是春播,...

03-22 21:56:51

如何开机启动程序?电脑设置程序开机自动运行方法

1、电脑开机后,点击左下角的开始菜单。2、点击后,在开始界面点击所有程序。3、进入所有程序后,找到启...

03-22 21:52:47

网传“女孩将小男孩扔入井中”?警方通报来了

3月22日,网传一段小女孩将小男孩扔进井中的视频,引发关注。今天,发现相关视频后,公安机关立即开展调...

03-22 20:15:18

日媒:地球快步走进“人类世”

参考消息网3月22日报道据《日本经济新闻》近日报道,规模达80亿的人类带来的影响巨大。其活动导致世界充...

03-22 18:11:58

你是我的城池营垒更新时间,你是我的城池营垒什么时候播出

本文目录一览1,你是我的城池营垒什么时候播出2,你是我的城池营垒哪个卫视台播出3,你是我的城池营垒在...

03-22 17:30:12

沙尘“狂飙”北京提醒:停止露天集会减少外出具体是什么情况_每日焦点

市气象台2023年3月22日5时40分升级发布沙尘暴黄色预警信号:目前本市已出现明显沙尘天气,预计当前至22...

03-22 16:54:39

天天报道:市场还需维持震荡

大盘今天强势震荡,收小阳,量能继续萎缩。大盘今天走势和预计的一样,出现了强势震荡的走势,之前的博...

03-22 15:35:54

世界最新:海口发布高温橙色预警信号,最高气温将升至37℃以上

3月22日08时46分海口市气象台发布高温橙色预警信号受西南气流影响,我市大部分地区今天下午13时至17时最...

03-22 13:49:48

万兴科技盘中异动 股价振幅达11.9% 上涨7.52%

2023年03月22日临近11时17分,万兴科技(300624)出现异动,股价大幅拉升7 52%。截至发稿,该股报74 4...

03-22 11:09:39

中国石化首套3G+环管聚丙烯装置开车成功|世界观速讯

3月22日,据中国石化官网消息,近日,海南炼化30万吨 年聚丙烯装置共聚反应器投入运行,产出高性能抗冲...

03-22 10:05:27

conversion table in mm是什么-conversion costs怎么算_天天热议

1、“转换成本”(ConversionCost)最早是由迈克·波特在1980年提出,指的是当消费者从一个产品或服务的...

03-22 07:38:12

二氧化碳制取的化学方程式_二氧化碳制取-环球视讯

今天小编肥嘟来为大家解答以上的问题。二氧化碳制取的化学方程式,二氧化碳制取相信很多小伙伴还不知道,...

03-22 03:13:59

环球要闻:外围突传重磅利好!A股港股大反攻,危机消散

刚刚,外围市场传出超级利好!据彭博社消息,美国官员正在研究如何将联邦存款保险公司(FDIC)的保险范围...

03-21 23:02:48

开播就拿第一 评分8.5 这部新剧的火爆难以阻挡_今头条

2023年开年以来,好的电视剧是一部接着一部,从反黑除恶的《狂飙》开始,一路“狂飙”,此剧火了张颂文...

03-21 20:11:05

天天快看点丨ASKO携手《IDEAT理想家》打造非凡设计大奖,60组入围作品脱颖而出

触探当下生活本质,共叙未来理想世界。秉承斯堪的纳维亚设计理念,百年来ASKO以赋能塔尖消费者美好生活...

03-21 17:51:22

欧宝阿斯特拉已开始在中年更新其紧凑型五门掀背车 全球时快讯

AstraK大约在三年前问世。随着生命周期的缩短,欧宝已经开始在中年更新其紧凑型五门掀背车。吕塞尔海姆...

03-21 16:06:19

鞋底什么材质好

鞋底的材质种类很多,可分为天然类底料和合成类底料两种。天然类底料包括天然底革、竹、木材等。合成类...

03-21 13:58:24

大话西游2023清明任务“何故魂归来”测试,副本玩法略有不同|今头条
ChatGPT出笼,这次要革互联网的命了
每日速递:什么叫一米线它有什么作用
一图秒懂,汽车促消费活动到哪去?|信息
涨价劝退年轻人!卫龙辣条去年少卖了4吨,漯河首富刘卫平也焦虑
提振出行消费 中石化易捷启动第二届出行养车节
动态:衡中衡电子秤怎么调克数_电子秤怎么调克数
天天微头条丨2023ToyotaMirai增加了新技术并附送15000美元的免费燃油
自梳女是什么
与春天有个约“惠”——集美家居定慧桥商场22周年庆踏春而来
环球今日讯!德军棕黄一点都不棕(田宫四号g型)
让非遗品牌焕发时代风采
看完7集《人生之路》,我五味杂陈哑然失笑,魔改毁经典啊|环球时讯
天天关注:600319股吧(淘气天尊股市直播)
手机卡可以换归属地吗_全球速看
朱啸虎:ChatGPT太强大,对创业公司很不友好
当前速看:林淑华_关于林淑华的介绍
全球百事通!《最终幻想16》狼犬伙伴新实机:大街上随时"撸狗"
TV动画《无神世界中的神明活动》追加声优,2023年4月5日开播-今日热议
好利科技(002729):2022年营业收入2.53亿元,与上期同比增加13.67%|世界播报
微信怎么用拍一拍并说话
天天看点:在鸭绿江畔讲好水上安全“第一课”
天天热门:瑞可达:主要客户是中兴通讯、爱立信、诺基亚、三星等全球主要通信设备制造商等客户
全球消息!普陀新文化地标破土开工,区域高质量发展迈向高端化智能化绿色化
3月23日常州清红硫酸价格暂稳 天天热资讯
丰田凯美瑞将退出日本市场
教育部:2022年九年义务教育巩固率为95.5% 每日热文
六一居士是谁
豆粕价格持续下跌 产业链企业冷暖不一 今日快看
长乐区漳港街道开展“护河爱水、清洁家园”行动_世界热点
焦点!恒大汽车(00708.HK)公布,“恒驰5”正在持续量产,截至本公告发布之日止,集团已交付超过900辆“恒驰5”
方形花盆适合种什么花_方形花盆种植哪种花比较好 前沿资讯
【播资讯】一二年生花卉是指什么(一二年生花卉是指什么)
如何开机启动程序?电脑设置程序开机自动运行方法
网传“女孩将小男孩扔入井中”?警方通报来了
日媒:地球快步走进“人类世”
你是我的城池营垒更新时间,你是我的城池营垒什么时候播出
沙尘“狂飙”北京提醒:停止露天集会减少外出具体是什么情况_每日焦点
天天报道:市场还需维持震荡
世界最新:海口发布高温橙色预警信号,最高气温将升至37℃以上
万兴科技盘中异动 股价振幅达11.9% 上涨7.52%
中国石化首套3G+环管聚丙烯装置开车成功|世界观速讯
conversion table in mm是什么-conversion costs怎么算_天天热议
二氧化碳制取的化学方程式_二氧化碳制取-环球视讯
环球要闻:外围突传重磅利好!A股港股大反攻,危机消散
开播就拿第一 评分8.5 这部新剧的火爆难以阻挡_今头条
天天快看点丨ASKO携手《IDEAT理想家》打造非凡设计大奖,60组入围作品脱颖而出
欧宝阿斯特拉已开始在中年更新其紧凑型五门掀背车 全球时快讯
鞋底什么材质好
什么人不能戴黑曜石貔貅_什么人不能戴黑曜石
X 广告
行业动态
X 广告

Copyright ©  2015-2022 时代植物网版权所有  备案号:   联系邮箱: 514 676 113@qq.com