主頁 >  其他 > 一文讀懂 Prometheus 長期存盤主流方案

一文讀懂 Prometheus 長期存盤主流方案

2022-09-20 08:02:40 其他

嘉賓 | 霍秉杰
整理 | 西京刀客
出品 | CSDN 云原生

Prometheus 作為云原生時代崛起的標志性專案,已經成為可觀測領域的事實標準,Prometheus 是單實體不可擴展的,那么如果用戶需要采集更多的資料并且保存更長時間該選擇怎樣的長期存盤方案呢?

2022 年 8 月 9 日,在 CSDN 云原生系列在線峰會第 15 期“Prometheus 峰會”上,青云科技可觀測與函式計算負責?霍秉杰分享了《Prometheus Long-Term Storage:海納百川,有容乃大》,

Prometheus 簡介及其局限性

file

云原生時代崛起的 Prometheus 已經在可觀測領域得到了廣泛應用,其影響力遠遠超出了云原生的范疇,具有兩個顯著特點,

單實體,不可擴展

Prometheus 的作者及社區核心開發者都秉承一個理念:Prometheus 只聚焦核心的功能,擴展性的功能留給社區解決,所以 Prometheus 自誕生至今都是單實體不可擴展的,

這對于很多從大資料時代走過來的工程師而言有點不可思議,大資料領域的很多開源專案比如 Elasticsearch、HBase、Cassandra 等無一不是多節點多角色的設計,

Prometheus 的核心開發者曾這樣解釋,Prometheus 結合 Go 語言的特性和優勢,使得 Prometheus 能夠以更小的代價抓取并存盤更多資料,而 Elasticsearch 或 Cassandra 等 Java 實作的大資料專案處理同樣的資料量會消耗更多的資源,也就是說,單實體、不可擴展的 Prometheus 已強大到可以滿足大部分用戶的需求,

Pull 模式抓取資料

Prometheus 倡導用 Pull 模式獲取資料,即 Prometheus 主動地去資料源拉取資料,對于不便于 Pull 的資料源,Prometheus 提供了 PushGateway 進行處理,但 PushGateway 在部分應用場景上存在限制,

盡管單實體的 Prometheus 已經足夠強大,但還是存在部分需求是其無法滿足的,如跨集群聚合、更長時間的存盤等,為了擴展 Prometheus,社區給出了多種方案,

file

在 Prometheus 長期存盤出現之前,用戶若需要跨集群聚合計算資料時,社區提供 Federation 方式實作,

在多個 Prometheus 實體的上一層有一個 Global Prometheus,它負責在各個實體中抓取資料并進行計算,以此解決跨集群聚合計算的問題,但如果各個集群的資料量較大,單實體的 GlobalPrometheus 也會遇到瓶頸,

Promretheus 長期存盤方案的崛起

file

2017 年,Prometheus 加? Remote Read/Write API,自此之后社區涌現出大量長期存盤的方案,如 Thanos、Grafana Cortex/Mimir、VictoriaMetrics、Wavefront、Splunk、Sysdig、SignalFx、InfluxDB、Graphite 等,

接下來我們將挑選幾個主流的 Prometheus 長期存盤方案進行對比分析,

M3

file

M3 是 Uber 開源的一個 Prometheus 長期存盤的方案,它的組件主要包括 M3 Coordinate、M3 Queries、M3 Aggregator 及 M3DB,

M3 的作業原理是 Prometheus 將資料通過 M3 Coordinate Remote 寫入至 M3DB 中,M3 Queries 可直接對接 M3DB 進行查詢,M3Aggregator 對接收資料進行實時聚合,降采樣后存入 M3DB,

M3 是 Uber 為了滿足自身海量資料需求所開發的 Prometheus 長期存盤的方案,其缺點是部署麻煩,且社區也不活躍、檔案欠佳,

VictoriaMetrics

VictoriaMetrics 是一個開源的 Prometheus 長期存盤專案,除開源專案外,還有商業化的產品和服務,VictoriaMetrics 的采用者包括知乎、Grammarly、fly.io、CERN 等,

file

VictoriaMetrics 主要由三個組件構成:接入資料的 vminsert、存盤資料的 vmstorage 以及查詢資料的 vmselect,

vminsert 和 vmselect 都是無狀態的,可以通過增加副本的方式進行擴展,

vmstorage 雖然是有狀態的,但也可以擴展,當資料量超過一個副本的存盤量時,可以通過增加另外一個副本對其進行擴展,

file

VictoriaMetrics 的 Agent 功能較為強大,主要體現在以下幾方面:

  • 可以代替 Prometheus 抓取資料,還可以接收 Prometheus 之外的資料源 Push 過來的資料,如 Graphite、InfluxDB、OpenTSDB 等;
  • 可以把抓取的資料 Remote Write 到多個 Long-Term Storage;
  • 可以將數量眾多的抓取目標在 vmagent 實體之間進行分配,

file

VictoriaMetrics 還有一個單獨的用于告警的組件——VictoriaMetrics Alert,它具備兩個功能:

  • 通過查詢 vmselect 決定是否需要告警,如果需要就將告警發到 alertmanager 中;
  • 通過查詢 vmselect 計算 Recording Rule,并把計算結果通過 vminsert 寫入存盤,

file

另一個組件是 VictoriaMetrics Gateway,它主要有兩個功能:

  • 限速,在租戶讀寫時,會將部分資料寫入至另外一個 VictoriaMetrics 的實體中來記錄用量,超量的時候會做出一定的限制;
  • 訪問控制,訪問控制指在讀或者寫之前,必須先得獲取一個 Token,

VictoriaMetrics 還有其他的組件比如 vmauth、vmbackup/vmrestore、vmbackupmanager、vmanomaly 等,

值得一提的是,VictoriaMetrics 并不是所有功能都是開源的,未開源的企業版功能包括:

  • Downsampling 降采樣;
  • vmgateway 的 SSO、LDAP、JWT Token Authentication&Access Control;
  • 租戶級別的讀寫限速;
  • vmagent 讀寫 Kafka;
  • 多租戶告警與統計;
  • BackupManager;
  • 基于機器學習的例外監測 vmanomaly,

Thanos

Thanos 由 Improbable 開源,是社區最先出現的 Prometheus 長期存盤方案,采用者包括 Adobe、位元組、eBay、騰訊等,

Thanos 在架構上較為創新,具有諸多較為獨特的功能:

  • 能夠提供 Prometheus 實體的全域查詢視圖,可以跨越多個 Prometheus 實體對資料進行查詢和聚合;
  • 可以把資料通過 Sidecar 上傳至物件存盤以便長時間保存;
  • 提供壓縮與降采樣功能,通過壓縮可以減小物件存盤上保存的 Block 的大小,通過降采樣可以加快長時間范圍資料的查詢與聚合速度,

Thanos 有兩種模式,Sidecar 模式和 Receive 模式,

Thanos Sidecar 模式

file

ThanosSidecar 模式是 Thanos 最早支持的模式,其原理是:

  • 每個 Prometheus Pod 中都有一個 Sidecar,這個 Sidecar 通過 Store API 與外界互動;
  • Thanos Query 通過 Store API 與 Thanos Sidecar 互動,經由 Thanos Sidecar 查詢到各 Prometheus 實體上的資料后進行聚合,去重后提供給用戶一個跨多個 Prometheus 實體的全域視圖;
  • Thanos Sidecar 中的 Shipper 會把本地 Prometheus 實體落盤的 Block 上傳到物件存盤,之后由 Thanos Compact 對上傳到物件存盤的 Block 進行壓縮、降采樣和過期洗掉;
  • 存盤在物件存盤里的 Block 可由 Store Gateway 通過 Store API 向 Thanos Query 提供查詢服務,Store Gateway 會快取物件存盤里 Block 的 index 以加快查詢速度;
  • 此外,Thanos Query 前面還有 Thanos Query Frontend 用于快取查詢結果以加快查詢速度;
  • Thanos Ruler 用于通過查詢 Thanos Query 計算 Recording 或 Alerting Rules,

Thanos Receive 模式

file

Thanos Receive 模式是 Thanos 回應社區用戶 Remote Write 的需求新增的模式,其原理是:

  • Prometheus 或 Prometheus Agent 通過 Remote Write 將監控資料發送到 Thanos Receive Router;
  • Thanos Receive Router 根據租戶資訊將資料發送給回應的 Thanos Receive Ingestor,其中 Router 是無狀態的,Ingestor 是有狀態的;
  • Thanos Receive Ingestor 相當于在一個沒有資料抓取能力和告警能力的 Prometheus 之上增加了 Store API 的支持用于和 Thanos Query/Thanos Ruler 互動,增加了 Shipper 組件將落盤 Block 上傳物件存盤;
  • Thanos Query 可以統一查詢 Thanos Ingestor、Thanos Store Gateway;
  • 其他組件作用和 Thanos Sidecar 模式類似,

Cortex

Cortex 由 Grafana 開源,Loki、Tempo、Grafana Cloud 等產品或專案都采用了 Cortex 的技術,采用者包括 AWS、Digital Ocean、Grafana Labs、MayaData、Weaveworks 等,

Cortex 最初是基于 Chunk Storage 的版本,因部署運維起來較為復雜且依賴 Cassandra 或 DynamoDB 存盤元資料,已經確定被棄用,改為基于 Block Storage 的版本,

file

受 Thanos 的啟發,Cortex 新架構采用 Block Storage,我們可以看到,Cortex 新架構的 distributor、ingester、querier、ruler、store-gateway、compactor 都與 Thanos 類似,其中 ruler、store-gateway、compactor 都借鑒自 Thanos,

file

Grafana Mimir

Grafana Mimir 是 Grafana Lab 于 2022 年 3 月底以 AGPL v3 協議新發布的開源專案,

從 Mimir 發布的 Blog Announcing Grafana Mimir 可以看出,Grafana Mimir 在 Fork 了 Cortex 專案之后增加了許多企業級功能,被用于 Grafana Cloud 及服務 Grafana 的企業客戶的產品 Grafana Enterprise Metrics(GEM),這么做的主要原因是 Grafana Lab 認為 Cortex 被一些 ISV 或云廠商用于給自己的客戶提供服務,卻沒有像 Grafana Lab 一樣貢獻代碼,于是將越來越多的功能放到了 Cortex 的 Fork Mimir 中,

作為 Cortex 的增強版,之前很長一段時間 Mimir 是未開源的狀態,但這與 Grafana Lab 的開源文化相悖,于是為了兼顧開源和自己的商業利益,Grafana Lab 將 Mimir 在 AGPL v3 下開源,

file

由于 Grafana Mimir Fork 了 Cortex,所以其架構和 Cortex 及 Thanos 非常相似,

雖然 Grafana Mimir 同樣借鑒了 Thanos 的 store-gateway、compactor 和 ruler,但與 Cortex 不同之處在于 querier 和 query frontend 之間加了一個額外的組件 query scheduler,更好地滿足了查詢組件的可擴展性,

Mimir 各組件(包括 compactor、store-gateway、query、ruler 等)的水平可擴展性較好,值得一提的是 Mimir 對 Alertmanage 做了多租戶和水平擴展的支持,

file
file

Prometheus 長期存盤方案對比

file

我們可以基于多維度對上述介紹的 Prometheus 長期存盤方案進行橫向對比:

  • Thanos 和 Cortex 已捐給 CNCF 基金會并處于范訓階段,有著更好的中立性,而 Mimir 的 AGPL v3 許可證不夠友好;
  • 從一些開源專案的指標看,Thanos 更受歡迎,其采用者也比較多;
  • Mimir 是 Grafana Lab 商業產品的開源版本,具有更好的水平可擴展性;
  • Mimir 與 VictoriaMetrics 有著更好的檔案;
  • 在涉及多租戶、權限控制、接入資料源的多樣性等企業級功能方面,Mimir 和 VictoriaMetrics 更優;
  • M3 在各個維度上都不占優,

總結

綜上,我們可以得出以下結論,

  • 資料持久化到硬碟的方案里,VictoriaMetrics 是更好的選擇,但需要注意的是 VictoriaMetrics 并沒有開源 Downsampling 降采樣功能,如需跨較長時間范圍進行聚合及查詢,耗時會比較久,
  • 資料持久化到物件存盤的方案中,Thanos 更受歡迎,Grafana Mimir 更有潛力,
  • Thanos 可以不使用物件存盤,用本地盤存資料(Cortex/Mimir 待驗證),
  • Grafana Fork 了 Cortex,創建了 Mimir 并修改 License 為 AGPL-3.0,后續 Grafana 及社區的投?程度成疑,不建議繼續采用 Cortex,
  • Thanos/Cortex/Mimir 互相借鑒,架構類似,Cortex/Mimir 借鑒了 Thanos 的物件存盤訪問及持久化,Thanos 借鑒了 Cortex 的 QueryFrontend,Mimir 作為 Grafana Cloud 的開源版本,其基于 Thanos 和 Cortex 的架構做了更多的優化,
  • 總體來說,在不介意許可證的情況下,可以采? Mimir,若在意更寬松許可證,CNCF 范訓專案的 Thanos 是更好的選擇,
  • 沒有物件存盤,推薦使用 VictoriaMetrics(有些重要功能沒開源),有物件存盤盡量用 Thanos 或 Mimir,
  • 沒有特殊原因盡量不要采用 M3,

本文由博客一文多發平臺 OpenWrite 發布!

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

標籤:其他

上一篇:NebulaGraph 的云產品交付實踐

下一篇:ACL原理與配置及NAT

標籤雲
其他(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