Prometheus源码系列: 启动过程分析

Prometheus 启动过程中,主要包含服务组件初始化,服务组件配置应用及启动各个服务组件三个部分,下面基于版本 v2.7.1,详细分析这三部分内容

1.服务组件初始化

(1) Storage组件初始化

  Prometheus的Storage组件是时序数据库,包含两个:localStorage和remoteStorage.localStorage当前版本指TSDB,用于对metrics的本地存储存储,remoteStorage用于metrics的远程存储,其中fanoutStorage作为localStorage和remoteStorage的读写代理服务器.初始化流程如下

prometheus/cmd/prometheus/main.go

localStorage  = &tsdb.ReadyStorage{} //本地存储
remoteStorage = remote.NewStorage(log.With(logger, "component", "remote"), //远端存储 localStorage.StartTime, time.Duration(cfg.RemoteFlushDeadline))
fanoutStorage = storage.NewFanout(logger, localStorage, remoteStorage) //读写代理服务器

(2) notifier 组件初始化

   notifier组件用于发送告警信息给AlertManager,通过方法notifier.NewManager完成初始化

prometheus/cmd/prometheus/main.go

notifierManager = notifier.NewManager(&cfg.notifier, log.With(logger, "component", "notifier"))

(3) discoveryManagerScrape组件初始化

  discoveryManagerScrape组件用于服务发现,当前版本支持多种服务发现系统,比如kuberneters等,通过方法discovery.NewManager完成初始化,

prometheus/cmd/prometheus/main.go

discoveryManagerScrape  = discovery.NewManager(ctxScrape, log.With(logger, "component", "discovery manager scrape"), discovery.Name("scrape"))

(4) discoveryManagerNotify组件初始化

   discoveryManagerNotify组件用于告警通知服务发现,比如AlertManager服务.也是通过方法discovery.NewManager完成初始化,不同的是,discoveryManagerNotify服务于notify,而discoveryManagerScrape服务与scrape

prometheus/cmd/prometheus/main.go

discoveryManagerNotify  = discovery.NewManager(ctxNotify, log.With(logger, "component", "discovery manager notify"), discovery.Name("notify")

(5) scrapeManager组件初始化

   scrapeManager组件利用discoveryManagerScrape组件发现的targets,抓取对应targets的所有metrics,并将抓取的metrics存储到fanoutStorage中,通过方法scrape.NewManager完成初始化

prometheus/cmd/prometheus/main.go

scrapeManager = scrape.NewManager(log.With(logger, "component", "scrape manager"), fanoutStorage)

(6) queryEngine组件

  queryEngine组件用于rules查询和计算,通过方法promql.NewEngine完成初始化

prometheus/cmd/prometheus/main.go

opts =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值