主頁 >  其他 > 普羅米修斯?古希臘泰坦之神?異形?不,新一代企業級監控組件—Prometheus!

普羅米修斯?古希臘泰坦之神?異形?不,新一代企業級監控組件—Prometheus!

2021-06-09 21:33:35 其他

文章目錄

    • Prometheus + Grafana 監控效果圖
    • 一、Prometheus 簡介
      • Prometheus成長歷程
        • Prometheus誕生背景
          • 云時代的到來
      • Prometheus 監控特點
    • 二、Prometheus 架構模型
      • Prometheus 核心組件
    • 三、Prometheus 指標設計
      • 指標設計規范的誕生
    • 四、Prometheus 存盤模型
      • LSM 結構模型
        • LSM 模型—寫操作
        • LSM 模型—讀操作
      • LevelDb 結構模型
        • LevelDb模型—寫操作
        • LevelDb模型—讀操作
      • Prometheus 存盤引擎
        • 時間分片策略
        • 時間分片策略優勢
        • 磁盤檔案結構
          • block
          • meta.json
          • chunks
            • Cut切分策略
          • Index
            • 索引生效程序
          • tombstones
        • 資料壓縮「Data Compress」
          • Chunk Compress
            • 雙增量策略「delta-of-delta」
            • XOR策略
    • 五、Prometheus集群部署
      • 單小集群解決方案
        • 部署架構
      • 多集群部署解決方案
        • 聯邦策略
        • Thanos 高可用解決方案
        • 部署架構
      • 大集群場景解決方案
          • 分片策略
    • Q&A
    • 附錄

?? 普羅米修斯?古希臘泰坦之神?異形? 都不是,Prometheus是新一代企業級實時監控組件,大小廠牌都在用,監控屆扛把子的存在,
??掌握了這個——普羅米修斯,大小廠牌作業任你挑選,升職加薪如絲般順滑,
??下面給大家**全方位刨析一下 Prometheus **,

注:本文對初級同學相對存在門檻,可以收藏關注,在成長中積累….

Prometheus + Grafana 監控效果圖

??這里先放個 Prometheus + Grafana 集成效果圖,讓剛認識 Prometheus 監控系統的同學腦海中有個基本概念,
圖一
對,這樣式的就是企業級實時監控可視化面板,下面還有…


在這里插入圖片描述
感覺怎么樣?看著還行吧,哈哈哈,下面進入正題,刨析一下 Prometheus …細品,品…


一、Prometheus 簡介

??Prometheus 作為新一代的開源實時監控系統,提供了 Kubernetes ,資料庫,訊息佇列,基礎架構等各類技術組件的監控能力,實時洞察在線服務各個指標動態變化,幫助快速資料分析及問題定位,
??在全面擁抱云原生時代中,為云原生架構提供安全保障,形成市場競爭中真正的敏捷力量!

Prometheus成長歷程

  • 2012年
    SoundCloud 啟動 Prometheus范訓專案,
  • 2015年
    Prometheus在GitHub 完全開源后,STAR數直逼9K,同時被很多公司作為監控方案采用,
  • 2016年
    Prometheus 加入 CNCF(Cloud Native Computing Foundation),繼 Kubernetes 加入后的第二個專案成員,
  • 2017年
    Prometheus 2.0 發布,這是Prometheus的一個重要的里程碑,在集成TSDB后的Prometheus 2.0,與Prometheus 1.8相比,CPU使用率降低到20%-40%,磁盤I/O、磁盤空間使用率降低到33%-50%,查詢負載通常平均<1%, 可以支持單機每秒1000w個指標的收集,
  • 2020年
    現在 Prometheus STAR數已超40K,已經是云原生架構中不可分割的重要一部分……

Prometheus誕生背景

Prometheus 順應云時代浪潮滾滾而來,推動技術架構走向敏捷,面向未來…

云時代的到來

軟體正在吞噬世界, ???????? ——Mark Andreessen

??正如 Mark 所說“軟體正在吞噬這個世界“,21世紀軟體服務已經滲透到了世界的各個角落,云服務也是其中的一個,悄無聲息地蔓延開來….
??隨著云基礎設施「包含公有云、私有云、混合云」的蓬勃發展,應用服務上云的浪潮來勢洶洶……

??基于云原生的架構,云可以提供彈性、自主的提供和釋放計算、網路、存盤等資源;同時服務的部署更加安全、迅速,軟體交付、持續服務、用戶體驗能力無限提升;使公司在市場競爭中擁有最敏捷的力量優勢

??服務上云已經勢不可擋! 上云,伴隨而來的是需要大量新的技術組件提供云特性支持,而 Prometheus 就是其中一員,

??Prometheus 擁抱云原生,作為 CNCF 第二大專案,對云基礎設施提供全面的兼容服務,實時動態監測服務節點及容器各項指標,是云原生架構中安全及業務性能強有力的保障,是其不可或缺的一部分,

Prometheus 監控特點

??Prometheus 順應云原生而誕生,對云原生提倡的 容器化、容器編排、服務代理、發現和治理…等方案都做了兼容,這也是其最突出的特色,

  • 1、具有 Metrics 名稱和 key/value 對標識的時間序列資料的多維資料模型
  • 2、利用資料模型進行有效的警報和圖形展示的查詢語言
  • 3、支持本地存盤,不依賴分布式存盤檔案系統
  • 4、通過 HTTP WEB 互動方式獲取時間序列資料
  • 5、可配置推送的方式進行時間序列資料采集
  • 6、支持 Client 通過服務發現和靜態配置發現
  • 7、兼容多種視圖模式
  • 8、Docker、Kubernetes 原生支持
  • 9、…

??那么,是什么樣的設計滿足這些特色能力呢?好奇感十足,下面拋出具體的架構圖,來分析分析,它咋那么牛!!!


二、Prometheus 架構模型

在這里插入圖片描述
??Prometheus 組件可分為資料采集、資料聚合、資料展示、告警四部分,

  • 資料采集可采用 “侵入式” 或 “ Explore 格式轉換「非侵入式」” 的方式收集,按照配置的刮擦粒度以 “ API ” 的形式與資料聚合模塊互動
  • 資料分析將采集到的指標資料進行存盤,本地存盤使用類 LeveDB 結構模型
  • 資料展示通過使用 PromQL 過濾資料,渲染可視化面板、視圖
  • 資料告警把符合配置閾值條件的資料推送給用戶,進行告警調度

Prometheus 核心組件

??Prometheus 擁有四大核心組件,分別為 Prometheus Server、Pushgateway、Alertmanager、Exporter 完成主要監控任務,

  • Prometheus Server:用于刮擦目標 Job Metric、存盤本地TSDB資料
  • Pushgateway:推送網關,以 Push 模式將本地 Metrics 資料推送到PushGateway
  • Alertmanager:警報組件,配置分組、警報發送源
  • Exporter:暴露本地 Metrics 給 Prometheus ,讓Prometheus 通過 Pull 模式刮擦目標Job指標資料

這里講了架構和核心組件,大概曉得了基本配置,可具體用的時候呢?起步姿勢是啥呢?來來來,下面來聊下,先從監控資料設計入手…


三、Prometheus 指標設計

??Prometheus 指標由兩部分組成,可簡單概括為

K『 k「metricName」+ v「key/val」+ T「 timestamp 」』—— V『sample』

  • K:— k「metricName」-v「key/val」+T「 timestamp 」
  • V:— sample

在這里插入圖片描述
??內層k/v對代表了資料維度,每個 metricName 標識了監控指標的唯一身份,T為時間戳,Sample 則是當前指標的數值,
??外層Key包含 Metric Name、Labels、Timestamp;Value 包含 Sample ,

指標設計規范的誕生

??為什么這樣式約束監控指標呢/?令人深思的問題!Why?
??仔細品品之后,發現!!!

在實時監控系統中,需要實時監聽個目標Job的各項資料,統計實時資料及勾勒時間為軸的各類可視化面板,

  • 從資料屬性來看,自帶時間屬性,天然時序資料,
    在這里插入圖片描述
  • 從資料讀寫來看,是垂直寫,水平讀的場景,讀寫比例占比很大,

??綜合上述,選擇了K-V資料模型有了充分的理由,沒毛病!!

資料已經有了,那么怎么進行資料聚合存盤呢?不慌,下面就刨析存盤模型!!


四、Prometheus 存盤模型

資料模型建立在存盤模型之上,??——《 Data Structure Design 》

??首先在基于云服務的實時監控場景中,存盤模型它需要滿足這幾個條件:

在自動彈性伸縮的云原生環境中, 實體的產生和消亡更加頻繁,即系統中將會存在大量時序資料指標,但其中只有部分處于活躍狀態,這會在很多方面帶來挑戰:

  • 1、有限的本地存盤,如何存盤大量時序避免資源浪費?
  • 2、海量資料中,如何定位被查詢的少數幾個時序?

??圍繞這幾個條件,Prometheus 本地存盤存盤模型選擇了,基于 LSM 結構的類 LevelDB 組件,但是,為什么呢?下面來說道說道!!!

LSM 結構模型

??LSM 思想模型中將資料讀寫進行分層,提升讀寫性能,主要針對的場景是寫密集、少量查詢的場景,
??主要在 key-value 存盤系統中應用,如 LevelDB,RocksDB,還有分布式行式存盤資料庫 Cassandra 也用了基于 LSM-tree 的存盤模型,

??在實際生產環境中,日常的日志存盤,一般都是先把日志在記憶體快取,批量以追加的形式寫入磁盤,
??LSM ,顧名思義,Log Structured「日志結構」、Merge「合并」是像寫日志一樣的思想模型,資料模型如下:
在這里插入圖片描述

??LSM 模型是一個多層結構,就像一個樹一樣,上小下大,
??首先是記憶體的 C0 層,保存了所有最近寫入的 (k,v),這個記憶體結構是有序的,并且可以隨時原地更新,同時支持隨時查詢,剩下的 C1 到 Ck 層都在磁盤上,每一層都是一個在 key 上有序的結構,

LSM 模型—寫操作

1、首先寫入資料到 memory 中 C0 層,
當 C0 層的資料達到一定大小,就把 C0 層 和 C1 層合并,類似歸并排序,這個程序就是 Compaction(合并),
2、合并出來的新的 new-C1 會順序寫磁盤,替換掉原來的 old-C1,當 C1 層達到一定大小,會繼續和下層合并,合并之后所有舊檔案都可以刪掉,留下新的,

  • 「注意資料的寫入可能重復,新版本需要覆寫老版本,什么叫新版本,我先寫(a=1),再寫(a=233),233 就是新版本了,假如 a 老版本已經到 Ck 層了,這時候 C0 層來了個新版本,這個時候不會去管底下的檔案有沒有老版本,老版本的清理是在合并的時候做的,」
  • 「寫入程序基本只用到了記憶體結構,Compaction 可以后臺異步完成,不阻塞寫入,」

LSM 模型—讀操作

最新的資料在 C0 層,最老的資料在 Ck 層,所以查詢也是先查 C0 層,如果沒有要查的 k,再查 C1,逐層查,

LSM 盤的差不多了,不過 Prometheus 只是借鑒了模型,離實際實作還有一步——看看 LevelDB…


LevelDb 結構模型

??Prometheus 本地是基于 LevelDb 完成監控指標的存盤,LevelDb 是一款基于K-V的時序資料庫,
??其設計基于 LSM ,但又不同于 LSM ,在讀寫性能上繼承 LSM 優異的水平,在結構上更加嚴謹,更具實操意義
??LeveDb 結構圖大體類似 LSM ,有細節不同:
在這里插入圖片描述
??LSM-tree 被分成三種檔案,第一種是記憶體中的兩個 memtable,一個是正常的接收寫入請求的 memtable ,一個是不可修改的 immutable memtable ,另外一部分是磁盤上的 SStable (Sorted String Table),有序字串表,這個有序的字串就是資料的 key ,SStable 一共有七層(L0 到 L6),下一層的總大小限制是上一層的 10 倍,

加入了WAL機制,提高生產環境中的容災能力;
在資料層級中,做了層級限制,以提升有限資源利用率;
……

LevelDb模型—寫操作

1、首先將寫入操作寫 WAL 日志中,接下來把資料寫到 memtable中,當 memtable 滿了,就將這個 memtable 切換為不可更改的 immutable memtable,并新開一個 memtable 接收新的寫入請求,而這個 immutable memtable 就可以刷磁盤了,這里刷磁盤是直接刷成 L0 層的 SSTable 檔案,并不直接跟 L0 層的檔案合并,
2、每一層的所有檔案總大小是有限制的,每下一層大十倍,一旦某一層的總大小超過閾值了,就選擇一個檔案和下一層的檔案合并,

  • 「資料重復場景:L0 層的多個檔案在同一層,有先后關系的,后面的同個 key 的資料也會覆寫前面的,會為每個 key-value 加個版本號,在 Compaction 時候應該只會留下最新的版本」

LevelDb模型—讀操作

先查 memtable,再查 immutable memtable ,然后查 L0 層的所有檔案,最后一層一層往下查,

LevelDb 存盤模型就是這樣,大的框架流程,我們已經了解了,下面結合業務資料走進Prometheus 存盤引擎吧!!!


Prometheus 存盤引擎

??Prometheus 存盤引擎基于 LevelDb,結合自身業務特點,設計實作自身的存盤引擎,

時間分片策略

??Prometheus 存盤引擎將所有時序資料按時間分片,在時間維度上將資料劃分成互不重疊的 blocks,如圖:
在這里插入圖片描述
??那么為什么要以時間分片這種形式存盤呢?一個監控指標一個檔案是不是也可以?

時間分片策略優勢

??以時間分片這種形式是經過 Prometheus1.0、2.0、3.0版本之后,最終確定的版本,也是最優的、最適合這種場景的方式,它具有以下幾個優勢:

1、當查詢某個時間范圍內的資料,通過時序直接定位至目標 blocks,加快查詢速度
2、寫完一個 block 后,我們可以將輕易地其持久化到磁盤中,只涉及到少量幾個檔案的寫入,減輕磁盤IO壓力
3、新的資料,也是最常被查詢的資料會處在記憶體中,提高查詢效率
4、每個 chunk 大小不固定,我們可以選擇任意合適的大小,選擇合適的壓縮方式,提升資源利用率
5、洗掉超過留存時間的資料變得例外簡單,直接洗掉整個檔案夾即可

磁盤檔案結構

??引擎存盤在磁盤中的檔案結構如下圖:
在這里插入圖片描述??為了防止資料丟失,所有新采集的資料都會被寫入到 WAL 日志中,在系統恢復時能快速地將其中的資料恢復到記憶體中,

block

??每個 block 內部存盤著該時間視窗內的所有時序資料,它同時擁有自己的 index 和 chunks ,除了最新的、正在接收新鮮資料的 block 之外,其它 blocks 都是不可變的,

??block 結構形式如下圖:
在這里插入圖片描述

??block 的實質就是將一段時間里的記憶體資料組織成檔案形式保存下來,

meta.json

??meta.json 存盤當前 block 的一些元資訊,

{
    "ulid":"01EPVA7WJ5DXTV6FR06VJ0CT40",
    "minTime":1605081600,
    "maxTime":1605085200,
    "stats":{
        "numSamples":1359295562,
        "numSeries":441979,
        "numChunks":11207472
    },
    "compaction":{
        "level":1,
        "sources":[
            "01EPVA7WJ5DXTV6FR06VJ0CT40"
        ]
    },
    "version":2,
    "numChunkFile":3
}

從中我們可以看出:
??該 Block 是由1個含有3個 chunk 的原始 Block 「01EPVA7WJ5DXTV6FR06VJ0CT40壓縮生成」;
??時序資料指標的范圍是<1605081600,1605085200>;
??總共擁有samples個數為:1359295562;
??資料指標個數:441979;
??chunks個數:11207472;
??…

chunks

?? chunk 結構圖如下:
如圖:

??series ref 是用于訪問記憶體中資料列的 ID , mint 和 maxt 是在 chunk sample 中看到的最小和最大時間戳,encoding 是用于壓縮塊的編碼, len 是此后的位元組數,data 是壓縮塊的實際位元組數,CRC32 是上述chunk內容的校驗和,用于檢查資料的完整性,

Cut切分策略

??當寫入磁盤單個檔案超過512M的時候,就會自動切分一個新的檔案,

Index

??這個檔案就是 Prometheus 最復雜的索引結構,索引就是為了讓我們快速的找到想要的內容,為了便于理解,就通過一次資料的尋址來探究一下Prometheus的磁盤索引結構,

索引生效程序

??假設我們要檢索擁有系列三個標簽的所有序列資料,

({__name__:http_request}{api:api-server})且時間為 start\end 

1、根據檢索時間范圍定位 block 位置
從選擇 block開始,遍歷所有 block的 meta.json ,找到具體的 block ,
2、Label 過濾
找到目標 block 之后,需要通過 label 過濾檢索,那么問題來了!

  • 前文說了,通過 Labels 找資料是通過倒排索引,我們的倒排索引是保存在 index 檔案里面的,那么怎么在這個單一檔案里找到倒排索引的位置呢?這就引入了 TOC(Table Of Content) ,
    ?? - TOC結構,如下圖:
    在這里插入圖片描述
    ?? - 首先我們訪問的是 Posting offset table ,如下所示:
    在這里插入圖片描述
    ?? - 由于倒排索引按照不同的 LabelPair(key/value) 會有非常多的條目,所以 Posing offset table 就是決定到底訪問哪一條 Posting 索引,offset 就是指的這一 Posting 條目在檔案中的偏移,Postings 如下所示:
    在這里插入圖片描述
    ?? - 假設我們通過三條 Postings 倒排索引索引取交集得出
    {series1,Series2,Series3}∩{series1,Series2}∩{Series1}={Series1} 中的資料,而 Posting 中的 Ref(Series1) 即為這 Series 在 index 檔案中的偏移,Series結構如下所示:
    在這里插入圖片描述
    ?? - Series 以 Delta 的形式記錄了 chunkId 以及該 chunk 包含的時間范圍,這樣就可以很容易過濾出我們需要的 chunk ,然后再按照 chunk 檔案的訪問,即可找到最終的原始資料,
tombstones

?? 由于 Prometheus block 的資料一般在寫完后就不會變動,如果要洗掉部分資料,就只能記錄一下洗掉資料的范圍,由下一次 compactor 組成新 block 的時候洗掉,而記錄這些資訊的檔案即是 tomstones,

Prometheus核心的索引結構及生效程序聊完了,除了索引結構,其提供的資料超級壓縮策略也是其在海量資料中,依舊堅挺的原因之一,下面來聊聊壓縮策略…


資料壓縮「Data Compress」

?? 假設我們以平均每秒采集 20w+ 個資料指標寫入資料,chunk 平均1KB,block 平均4KB ,每秒對磁盤的 IO 壓力還是挺大…
?? 假如我們需要查詢一周的資料,那么這個查詢將涉及到 80 多個 blocks ,資料也需要進行大量的磁盤 IO 到記憶體中聚合最終結果……

?? 為了減輕磁盤 IO 壓力,就需要充分利用記憶體,而記憶體的資源十分寶貴,為了達到在有限都記憶體資源中存盤更多的資料指標的目標, Prometheus 提出了資料壓縮「Data Compress」,

Chunk Compress

?? 目前, prometheus.v3 具備將每個指標壓縮至 1.28 bytes/sample 的壓縮能力,
?? 假設指標只含有 float64 型別的 Sample\TimeStamp ,不做壓縮已經占用16byte ,加上變長的指標維度變數、名稱后壓縮至 1.28bytes ,可以說壓縮比是 8% ,非常驚人,那么下面聊聊這樣的壓縮比下,隱藏了哪些不為人知的壓縮策略…

雙增量策略「delta-of-delta」

?? 由于監控業務特性,使 timestamp、value/sample 天生具有連貫性、遞增性,且連續 sample 相差幅度極小,故在統計存盤時,無須完整記一值,只需記錄其相對增量就可以達到壓縮的目的,
如圖:todo

??如圖,在每個 chunk 中,只存盤一個完整的 value + Timestamp 作為基準,后續資料指標基于資料增長趨勢「斜率」值的差額即可,有效的縮短了數值長度,
??此策略也是 Prometheus 默認壓縮編碼策略,

XOR策略

??大家都知道浮點數在計算機中存盤結構是這樣的:
在這里插入圖片描述
??由于相鄰的 sample 點的資料值差異很小,也可以采用 XOR 策略,
通過連續兩個值做異或操作,不同的 bits 只有2位,頭部( leading )和尾部( trailing )都有大量連續的位是 ’ 0 ‘ , 根據這種情況,對 leading 和 trailing 的’ 0 ’進行壓縮存盤就能節約大量空間,

??XOR結構圖如下:
在這里插入圖片描述

上面跟大家嘮了那么多存盤,都是基于本地存盤,當我們線上生產環境需要集群部署的時候,可咋辦呢?不慌,繼續嘮…
<有點喝了,歡迎關注收藏,歇歇下次繼續看…>


五、Prometheus集群部署

??云設施的完善和發展,使服務上云的節奏不斷加快,推動著主流的產品技術走向未來,
??在基于云的部署中,常見物理機、虛擬機逐漸將會被容器化技術代替,基于容器的 k8s ,慢慢的走向大眾視野….

??那么 Prometheus 在生產環境中部署該如何做呢?

注:下面的集群部署方案部分基于 Kubernetes ,

單小集群解決方案

??單個集群中,利用 Kubernetes 提供的 kube-state-metrics、node-exporter、apiserver,controller-manager,scheduler,kubelet 等組件,提供每個組件核心功能相關的資料,比如 QPS、容器 CPU 使用率、記憶體使用率、Pod 的基本資訊等…
??通過 Prometheus 提供的 Explore 機制將相關指標轉化為 Prometheus 格式即可,

名詞小課堂:

  • Kube-state-metrics:這個組件用于監控Kubernetes資源的狀態,比如Pod的狀態,原理是將Kubernetes中的資源,轉換成Prometheus的指標,讓Prometheus來采集,比如Pod的基本資訊,Serivce的基本資訊,
  • Node-exporter:用于監控Kubernetes節點的基本狀態,這個組件以DeamonSet的方式部署,每個節點一個,用于提供節點相關的指標,比如節點的cpu使用率,記憶體使用率等等,
    ……

部署架構

??使用這種方式,就可以將集群的節點,組件,資源狀態,容器運行時狀態都給監控起來,
Todo,轉化為自己的圖

多集群部署解決方案

??當我們擁有多個集群需要監控,需要將他們的監控資料存盤在一起進行聚合處理,利用單機群的架構就存在兩個問題:

1、網路問題
多個集群之間網路可能是不通的,也就意味著通過API無法拉取資料,
2、服務發現問題
Prometheus無法對集群外的集群做服務發現,無法跨集群操作,

??針對這種情況,Prometheus 提供了聯邦策略,

聯邦策略

??Prometheus 支持拉取其他 Prometheus 的資料到本地,稱為聯邦機制,
如圖:todo
??通過對每個集群單獨部署 Prometheus 服務,在他們上層部署一個 Top Prometheus ,用于拉取各個集群內部的 Prometheus 資料進行匯總,
??在集群規模普遍較小,整體資料量不大的情況下,聯邦的方案部署簡單,理解成本低,沒有其他組件的引入,是一個很不錯的選擇,

??1、當資料規模龐大的時候,資料存盤壓力全在 Top Prometheus ,會出現無法承載的問題,
??2、另外一點是,如果最底層 Prometheus 沒有關閉本地存盤的話,還會存在資料冗余的問題(Prometheus2.x 版本一下不支持關閉本地存盤),

Thanos 高可用解決方案

??Thanos 是一款開源的 Prometheus 高可用解決方案,其支持從多個Prometheus 中查詢資料并進行匯總和去重,并支持將 Prometheus 本地資料傳送到云上物件存盤進行長期存盤,

部署架構

??Thanos 頂層替換掉 Top Prometheus ,底層集群添加 Sidecar 組件進行資料采集上傳到物件存盤,資料通過 Query 組件去重匯總處理進行外顯,
如圖todo,轉位自己的 圖
??如上圖所示,包含以下幾個基本組件,

  • Query:Query代理Prometheus作為查詢入口,它會去所有Prometheus,Store以及Ruler查詢資料,匯總并去重,
  • Sidecar:將資料上傳到物件存盤,也負責接收Thanos Query的查詢請求,
  • Ruler:進行資料的預聚合及告警,
  • Store: 負責從物件存盤中查詢資料,

??Thanos 相對聯邦機制有以下幾個優勢:
????1、資料不再存盤在單個 Prometheus 中,所以整體能承載的資料規模比聯邦大,
????2、Thanos Query 組件有去重能力,每個集群中可以部署2+個Prometheus來做資料多副本,
????3、監控資料可傳送到云上物件存盤,能支持更長久的存盤,

大集群場景解決方案

??大集群場景的特點是資料規模大,無論是節點的規模,還是資料量,都是一個 Prometheus 無法采集的,

分片策略

??Prometheus 支持在組態檔中加入 hashmod ,通過某個 label 的值來進行 hash ,讓每個 Prometheus 只采集部分節點,
??例如按節點的地址進行 hashmod ,讓節點采集任務分散到3個 Prometheus 中,這樣每個 Prometheus 就只會采集部分節點,從而達到分片效果,由于每個分片的 hashmod 取值不一樣,所以每個分片需要使用單獨的組態檔,

??雖然使用 hashmod 的方式在一定程度上可以將負載分散到多個 Prometheus 中,但是其至少存在以下問題:

1、配置管理復雜:由于每個分片都要有單獨的組態檔,需要維護多份組態檔,
2、配置項有侵入:需要為每個 Job 考慮 hashmod 的方式,而且需要清楚所采集資料根據那個 label 來 hash 才可能平均,對使用者相當不友好,
3、可能出現熱點:hashmod 是不保證負載一定均衡的,因為如果多個資料規模較大的節點被 hashmod 到一個分片,這個分片就有可能 OOM ,

??Thanos 支持 Prometheus 的分片策略解決大集群部署問題,但針對上述存在的問題,暫時沒有較好的解決方案,

Q&A

1、文中開始的效果圖是 Prometheus + Grafana ,Prometheus 生產資料源之后怎么和Grafana 互動可以講解下嗎?

具體詳情請關注后續博文

2、文中提出云原生,云原生架構具體是指什么呢?

具體詳情請關注后續博文

3、Prometheus 誕生于云時代的到來,這里云是指哪些?

文中的云基礎設施包含公有云、私有云、混合云,

4、Prometheus 和其他監控組件有什么區別?面對監控場景該如何選型呢?

細品 Prometheus 特點,擁抱云原生! 具體詳情請關注后續博文

5、Prometheus 自身節點資料如何監控呢?

需要根據實際情況去搭建一個,最好依托手邊現有的基礎設施監控,將Prometheus部署在上面即可,
具體詳情請關注后續博文

6、倒排索引具體策略是什么呢?

請關注后續博文,或移步Es「https://blog.csdn.net/qq_34417408/article/details/117196166?spm=1001.2014.3001.5502」

8、云時代中,容器化、云原生化是每個系統都會逐步發展的目標或是終點嗎/?

首先,微服務、容器和云原生架構并不是適合每個專案;
隨著VR\loT等技術的發展,系統或架構的演進或許沒有終點…
具體詳情請關注后續博文

附錄

通過刨析 Prometheus 內部策略及各種結構「細品」,希望對以后架構設計有所幫助!

一天一個小技巧,偷偷超越隔壁老大哥!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286251.html

標籤:其他

上一篇:[新星計劃]通過擴展 Spark SQL ,打造自己的大資料分析引擎

下一篇:Flink寫500億/天資料到遠端Kafka排錯、Flink優化記錄。

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more