本發(fā)明涉及云計(jì)算,特別涉及一種基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法及裝置。
背景技術(shù):
1、云原生是一個(gè)現(xiàn)代軟件開發(fā)和運(yùn)維的方法論,它鼓勵(lì)利用云計(jì)算的優(yōu)勢(shì)來(lái)構(gòu)建和運(yùn)行可擴(kuò)展、可靠且易于管理的應(yīng)用程序。kubernetes已成為云原生應(yīng)用管理的事實(shí)標(biāo)準(zhǔn),它提供了一個(gè)強(qiáng)大且高度自動(dòng)化的平臺(tái),用于在云原生環(huán)境中部署、管理和擴(kuò)展應(yīng)用程序。prometheus作為一個(gè)開源的監(jiān)控框架,為kubernetes容器編排平臺(tái)提供了開箱即用的監(jiān)控功能。對(duì)于跨數(shù)據(jù)中心的多個(gè)kubernetes集群環(huán)境,prometheus提供聯(lián)邦集群的架構(gòu)實(shí)現(xiàn)。但是對(duì)于實(shí)際生產(chǎn)環(huán)境,聯(lián)邦集群未實(shí)現(xiàn)允許單個(gè)prometheus故障的監(jiān)控系統(tǒng)高可用,比如prometheus故障后難以發(fā)現(xiàn)。
技術(shù)實(shí)現(xiàn)思路
1、為了解決上述技術(shù)問(wèn)題,提出了本發(fā)明。本發(fā)明的實(shí)施例提供了一種基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法及裝置,可以解決promtheus故障難以發(fā)現(xiàn)的問(wèn)題。
2、根據(jù)本發(fā)明的一個(gè)方面,提供了一種基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法,包括:基于prometheus聯(lián)邦集群方案劃分多個(gè)kubenetes集群,并選擇一個(gè)集群作為主集群,其他集群為普通集群;在每個(gè)普通集群中,使用單個(gè)pod部署子prometheus;其中,所述子prometheus不掛載存儲(chǔ),所述子prometheus用于開啟對(duì)應(yīng)普通集群的自監(jiān)控,采集對(duì)應(yīng)普通集群的監(jiān)控?cái)?shù)據(jù);在主集群中部署中心prometheus;其中,所述中心prometheus掛載存儲(chǔ),所述中心prometheus用于拉取普通集群中的子prometheus的監(jiān)控?cái)?shù)據(jù);在主集群中配置全局告警通知,當(dāng)中心prometheus的監(jiān)控?cái)?shù)據(jù)或子prometheus的監(jiān)控?cái)?shù)據(jù)滿足告警條件時(shí),主集群生成告警通知。
3、在一實(shí)施例中,在每個(gè)普通集群中,使用單個(gè)pod部署子prometheus,還包括:每個(gè)普通集群使用deployment管理單個(gè)pod部署子prometheus,并配置對(duì)應(yīng)普通集群的監(jiān)控配置;修改子prometheus的啟動(dòng)方式,由默認(rèn)服務(wù)直接啟動(dòng)修改為先刪除wal目錄再啟動(dòng)服務(wù);修改子prometheus的默認(rèn)配置,將時(shí)序數(shù)據(jù)庫(kù)存儲(chǔ)保留時(shí)間配置為預(yù)設(shè)最小值,將時(shí)序數(shù)據(jù)庫(kù)存儲(chǔ)保留大小配置為預(yù)設(shè)最小值。
4、在一實(shí)施例中,在主集群中存儲(chǔ)部署中心prometheus,包括:在主集群中使用statefulset配置兩個(gè)pod部署兩個(gè)中心prometheus;兩個(gè)中心prometheus均掛載存儲(chǔ);為兩個(gè)中心prometheus配置federation拉取普通集群中子prometheus的監(jiān)控?cái)?shù)據(jù)。
5、在一實(shí)施例中,基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法還包括:兩個(gè)中心prometheus的pod均增加sync容器實(shí)時(shí)記錄自身存儲(chǔ)監(jiān)控?cái)?shù)據(jù)的最新時(shí)間;為sync容器配置讀取對(duì)端中心prometheus的地址信息;當(dāng)兩個(gè)中心prometheus中任意一個(gè)中心prometheus發(fā)生故障時(shí),讀取另一個(gè)中心prometheus的監(jiān)控?cái)?shù)據(jù),以恢復(fù)自身監(jiān)控?cái)?shù)據(jù)。
6、在一實(shí)施例中,云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法還包括:當(dāng)中心prometheus的pod重啟時(shí),sync容器比較自身寫入時(shí)間與pod當(dāng)前時(shí)間是否一致;如果自身寫入時(shí)間與pod當(dāng)前時(shí)間不一致則認(rèn)為對(duì)應(yīng)的中心prometheus發(fā)生過(guò)故障。
7、在一實(shí)施例中,當(dāng)兩個(gè)中心prometheus中任意一個(gè)中心prometheus發(fā)生故障時(shí),讀取另一個(gè)中心prometheus的監(jiān)控?cái)?shù)據(jù),以恢復(fù)自身監(jiān)控?cái)?shù)據(jù),包括:當(dāng)任意一個(gè)中心prometheus的自身寫入時(shí)間與pod當(dāng)前時(shí)間不一致時(shí),確定時(shí)間不一致的中心prometheus為故障中心prometheus;確定自身寫入時(shí)間與pod當(dāng)前時(shí)間一致的中心prometheus為正常中心prometheus;故障中心prometheus讀取正常中心prometheus從所述自身寫入時(shí)間到pod當(dāng)前時(shí)間之間的遺漏監(jiān)控?cái)?shù)據(jù);將遺漏監(jiān)控?cái)?shù)據(jù)寫入故障中心prometheus中,以恢復(fù)故障中心prometheus的監(jiān)控?cái)?shù)據(jù)。
8、在一實(shí)施例中,基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法,還包括:在主集群中配置一個(gè)子prometheus;其中,主集群中的子prometheus用于監(jiān)控中心prometheus;主集群中的子prometheus配置中心prometheus的故障告警規(guī)則;其中,當(dāng)中心prometheus的監(jiān)控?cái)?shù)據(jù)或子prometheus的監(jiān)控?cái)?shù)據(jù)滿足告警條件時(shí),主集群生成告警通知,包括:當(dāng)中心prometheus的監(jiān)控?cái)?shù)據(jù)滿足第一告警條件時(shí),主集群中的子prometheus產(chǎn)生告警并發(fā)送全局告警通知。
9、在一實(shí)施例中,基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法,還包括:主集群中的子prometheus關(guān)聯(lián)中心prometheus自帶的metrics接口;主集群中的子prometheus拉取metrics接口提供的默認(rèn)指標(biāo);其中,所述默認(rèn)指標(biāo)用于排查中心prometheus服務(wù)問(wèn)題,以及作為中心prometheus是否可用的標(biāo)志。
10、在一實(shí)施例中,在主集群中配置全局告警通知,當(dāng)中心prometheus的監(jiān)控?cái)?shù)據(jù)或子prometheus的監(jiān)控?cái)?shù)據(jù)滿足告警條件時(shí),主集群生成告警通知,還包括:在主集群的中心prometheus中配置子prometheus故障告警的告警規(guī)則;當(dāng)中心prometheus拉取到的任意子prometheus的監(jiān)控?cái)?shù)據(jù)滿足第二告警條件時(shí),中心prometheus產(chǎn)生告警并發(fā)送全局告警通知。
11、根據(jù)本發(fā)明的另一個(gè)方面,提供了一種基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用裝置,包括:劃分模塊,用于基于prometheus聯(lián)邦集群方案劃分多個(gè)kubenetes集群,并選擇一個(gè)集群作為主集群,其他集群為普通集群;第一部署模塊,用于在每個(gè)普通集群中,使用單個(gè)pod部署子prometheus;其中,所述子prometheus不掛載存儲(chǔ),所述子prometheus用于開啟對(duì)應(yīng)普通集群的自監(jiān)控,采集對(duì)應(yīng)普通集群的監(jiān)控?cái)?shù)據(jù);第二部署模塊,用于在主集群中部署中心prometheus;其中,所述中心prometheus掛載存儲(chǔ),所述中心prometheus用于拉取普通集群中的子prometheus的監(jiān)控?cái)?shù)據(jù);告警模塊,用于在主集群中配置全局告警通知,當(dāng)中心prometheus的監(jiān)控?cái)?shù)據(jù)或子prometheus的監(jiān)控?cái)?shù)據(jù)滿足告警條件時(shí),主集群生成告警通知。
12、本發(fā)明提供的基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法及裝置,由主集群進(jìn)行統(tǒng)一告警,這樣無(wú)論是發(fā)生某個(gè)集群的子prometheus故障,還是主集群的中心prometheus故障,運(yùn)維人員可以通過(guò)接收告警通知從而及時(shí)獲悉環(huán)境存在prometheus故障。
1.一種基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法,其特征在于,在每個(gè)普通集群中,使用單個(gè)pod部署子prometheus,還包括:
3.根據(jù)權(quán)利要求1所述的基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法,其特征在于,在主集群中部署中心prometheus,包括:
4.根據(jù)權(quán)利要求3所述的基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法,其特征在于,基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法還包括:
5.根據(jù)權(quán)利要求4所述的基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法,其特征在于,云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法還包括:
6.根據(jù)權(quán)利要求5所述的基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法,其特征在于,當(dāng)兩個(gè)中心prometheus中任意一個(gè)中心prometheus發(fā)生故障時(shí),讀取另一個(gè)中心prometheus的監(jiān)控?cái)?shù)據(jù),以恢復(fù)自身監(jiān)控?cái)?shù)據(jù),包括:
7.根據(jù)權(quán)利要求1所述的基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法,其特征在于,基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法,還包括:
8.根據(jù)權(quán)利要求7所述的基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法,其特征在于,基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法,還包括:
9.根據(jù)權(quán)利要求1所述的基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用方法,其特征在于,在主集群中配置全局告警通知,當(dāng)中心prometheus的監(jiān)控?cái)?shù)據(jù)或子prometheus的監(jiān)控?cái)?shù)據(jù)滿足告警條件時(shí),主集群生成告警通知,還包括:
10.一種基于云原生環(huán)境實(shí)現(xiàn)promtheus高可用裝置,其特征在于,包括: