0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Thanos+Prometheus+Grafana構(gòu)建監(jiān)控系統(tǒng)

馬哥Linux運(yùn)維 ? 來源:luizrojo.medium ? 作者:Luiz Rojo ? 2022-05-05 21:14 ? 次閱讀

對于彈性伸縮和高可用的系統(tǒng)來說,一般有大量的指標(biāo)數(shù)據(jù)需要收集和存儲,如何為這樣的系統(tǒng)打造一個監(jiān)控方案呢?本文介紹了如何使用 Thanos+Prometheus+Grafana 構(gòu)建監(jiān)控系統(tǒng)。

4b3d2ff8-ca1e-11ec-bce3-dac502259ad0.png

集群容量概覽

直到今年 1 月,我一直在使用一款企業(yè)級監(jiān)控解決方案來監(jiān)控 Kubernetes 集群,這款監(jiān)控方案還用于 APM。它用起來很自然,與 Kubernetes 的集成非常容易,只需要進(jìn)行一些細(xì)微的調(diào)整,并且可以集成 APM 和基礎(chǔ)設(shè)施指標(biāo)。

盡管這款監(jiān)控方案可以很容易地收集和存儲數(shù)據(jù),但使用指標(biāo)創(chuàng)建警報(bào)卻有很大的查詢限制。經(jīng)常我們收到的告警和儀表盤上顯示的內(nèi)容會不一樣。更不用說我們有 6 個集群,收集和存儲的指標(biāo)數(shù)量非常多,這在很大程度上增加了我們的經(jīng)濟(jì)成本。

經(jīng)過一番考慮,我們認(rèn)識到繼續(xù)使用這款監(jiān)控方案弊大于利。是時候替換我們的監(jiān)控方案了!但是,該使用什么產(chǎn)品或者工具呢?Grafana 是可視化工具的最佳選項(xiàng),但我們的“后端”需要具備彈性伸縮和高可用能力,該使用什么工具呢?

純粹使用 OpenTSDB 的話,安裝需要太多的工作和精力;單機(jī) Prometheus 不提供復(fù)制能力,還需要為其配備多個數(shù)據(jù)庫;TimeScaleDB 看起來不錯,但我不太會使用 PostgreSQL。

在對以上這些方案進(jìn)行了一些實(shí)驗(yàn)后,我查看了 CNCF 網(wǎng)站,最后找到了 Thanos!它滿足我們所有的需求:可長期保留數(shù)據(jù)、可復(fù)制、高可用、適合微服務(wù)、對使用相同數(shù)據(jù)庫的所有集群有一個 global view!

架構(gòu)

我們的集群上沒有可用的持久化存儲(所有服務(wù)都保持無狀態(tài)),所以默認(rèn)的 Prometheus + Thanos sidecar 方法不可用,metric 存儲必須置于集群之外。此外,集群之間相互隔離,將 Thanos 組件綁定到一組特定的集群是不可能的,必須從“外部”監(jiān)控集群。

綜上所述,考慮到高可用性以及 Thanos 在虛擬機(jī)上運(yùn)行的可能性,我們最終的架構(gòu)是這樣的:

4b55303a-ca1e-11ec-bce3-dac502259ad0.png

如圖所示,我們是多數(shù)據(jù)中心的架構(gòu)。其中每個中心都有一組 Grafana + Query 服務(wù)器,一組存儲服務(wù)器和三個 Receive 服務(wù)器(集群數(shù)量的一半)。

Grafana 使用的數(shù)據(jù)庫還有一個 AWS RDS。這個數(shù)據(jù)庫不必很龐大(降低成本),我們團(tuán)隊(duì)也不需要管理 MySQL。

在 Thanos 提供的所有組件中,我們實(shí)現(xiàn)了其中的 4 個:

Receive:負(fù)責(zé) TSDB,還管理所有運(yùn)行 receive 的服務(wù)器和 TSBD 塊上傳到 S3 之間的復(fù)制。

Query:負(fù)責(zé)查詢 receive 數(shù)據(jù)庫。

Store:讀取 S3 以獲取不再存儲在 receive 中的長期 metrics。

Compactor:管理存儲在 S3 中的 TSDB 塊的數(shù)據(jù)下采樣和壓縮。

Data Ingestion

所有集群的 data ingestion 都由集群內(nèi)運(yùn)行的專用 Prometheus Pod 管理。它從 control plate(API 服務(wù)器、控制器和調(diào)度程序)、etcd 集群以及集群內(nèi)的 Pod 收集指標(biāo),這些集群內(nèi)具有與基礎(chǔ)設(shè)施和 Kubernetes 本身相關(guān)的指標(biāo)(Kube-proxy、Kubelet、Node Exporter、State Metrics 、Metrics Server 和其他具有 scraping annotation 的 Pod)。

Prometheus Pod 然后將信息發(fā)送到使用遠(yuǎn)程存儲配置管理 TSDB 的 receive 服務(wù)器之一。

4b932638-ca1e-11ec-bce3-dac502259ad0.png

data ingestion

所有數(shù)據(jù)都發(fā)送到單個服務(wù)器,然后復(fù)制到其他服務(wù)器。Prometheus 使用的 DNS 地址是一個 DNS GSLB,它探測每個 receive 服務(wù)器并平衡健康的服務(wù)器之間的 DNS 解析,在所有服務(wù)器之間分擔(dān)負(fù)載,因?yàn)?DNS 解析只為每個 DNS 查詢提供一個 IP。

需要強(qiáng)調(diào)一下,數(shù)據(jù)必須發(fā)送到單個 receive 實(shí)例并讓它管理復(fù)制,發(fā)送相同的 metric 會導(dǎo)致復(fù)制失敗和行為異常。

在這個層面上,metrics 也會上傳到 S3 存儲桶進(jìn)行長期留存。Receive 每 2 小時(當(dāng)每個 TSDB 塊關(guān)閉時)上傳一次 block,這些 metric 可用于使用 Store 組件進(jìn)行查詢。

還可以設(shè)置本地?cái)?shù)據(jù)的保留時間。在這種情況下,所有本地?cái)?shù)據(jù)都會保留 30 天以供日常使用和故障排除,這樣可以加快查詢速度。

超過 30 天的數(shù)據(jù)僅在 S3 上可用,最長可保留 1 年,用于長期評估和比較。

數(shù)據(jù)查詢

數(shù)據(jù)被收集并存儲在 receiver 中以供查詢。這部分也設(shè)置為多數(shù)據(jù)中心可用。

每臺服務(wù)器都運(yùn)行 Grafana 和 Query,如果其中一臺(或兩臺)出現(xiàn)故障,我們可以更輕松地從負(fù)載均衡器中識別并刪除。在 Grafana 中,數(shù)據(jù)源配置為 localhost,因此它始終使用本地 Query 來獲取數(shù)據(jù)。

對于查詢配置,它必須知道所有存儲了 metrics 的服務(wù)器(Receiver 和 Store)。query 組件知道哪個服務(wù)器在線并且能夠從它們收集 metrics。

4baaeebc-ca1e-11ec-bce3-dac502259ad0.png

數(shù)據(jù)查詢

它還管理重復(fù)數(shù)據(jù)刪除,因?yàn)樗樵兯蟹?wù)器并配置了 replication,所有 metrics 都有多個副本??梢允褂梅峙浣o metrics 的標(biāo)簽和查詢參數(shù) (--query.replica-label=QUERY.REPLICA-LABEL) 來完成。通過這些配置,query 組件知道從 Receiver 和 Store 收集的 metrics 是否重復(fù)并僅使用一個數(shù)據(jù)點(diǎn)。

長期數(shù)據(jù)

如前所述,數(shù)據(jù)在本地最多保留 30 天,其他所有內(nèi)容都存儲在 S3 上。這樣可以減少 Receiver 上所需的空間量并降低成本,因?yàn)閴K存儲比對象存儲更貴。更何況查詢超過 30 天的數(shù)據(jù)不是很常見,主要用于資源使用歷史和預(yù)測。

4bd1a41c-ca1e-11ec-bce3-dac502259ad0.png

遠(yuǎn)程數(shù)據(jù)查詢

該 Store 還保留存儲在 S3 存儲桶上的每個 TSDB 塊的索引的本地副本,因此如果需要查詢超過 30 天的數(shù)據(jù),它知道要下載和使用哪些塊來提供數(shù)據(jù)。

數(shù)據(jù)情況

考慮到所有集群,該監(jiān)控方案:

監(jiān)控了 6 個 Kubernetes 集群;

收集了 670 個服務(wù)的 metrics;

使用 Node Exporter 監(jiān)控了 246 個服務(wù)器;

每分鐘收集約 27w 個指標(biāo);

每天 ingest 約 7.3 GB 的數(shù)據(jù),或每月 ingest 約 226.3 GB 的數(shù)據(jù);

為 Kubernetes 組件創(chuàng)建了 40 個專用儀表盤;

在 Grafana 上創(chuàng)建了 116 個警報(bào)。

對于每月費(fèi)用,由于大部分組件在本地運(yùn)行,成本降低了 90.61%,從每月 38,421.25 美元降至 3,608.99 美元,其中包括 AWS 服務(wù)成本。

總結(jié)

配置和設(shè)置上述架構(gòu)大約需要一個月左右的時間,包括測試其他一些解決方案、驗(yàn)證架構(gòu)、實(shí)現(xiàn)、在集群上開啟收集以及創(chuàng)建所有儀表盤。

在第一周,好處是顯而易見的。監(jiān)控集群變得更加容易,儀表盤可以快速構(gòu)建和定制,收集 metrics 幾乎是即插即用的,大多數(shù)應(yīng)用程序以 Prometheus 格式導(dǎo)出 metrics,并根據(jù) annotations 自動收集。

此外,通過集成 Grafana 的 LDAP 可以達(dá)到更精細(xì)的團(tuán)隊(duì)權(quán)限控制。開發(fā)人員和 SRE 可以訪問大量儀表盤,其中包含有關(guān)其命名空間、ingress 等的相關(guān) metrics。

原文標(biāo)題:使用 Thanos 和 Prometheus 打造一個高可用的 Kubernetes 監(jiān)控系統(tǒng)

文章出處:【微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 監(jiān)控系統(tǒng)

    關(guān)注

    21

    文章

    3843

    瀏覽量

    173418
  • kubernetes
    +關(guān)注

    關(guān)注

    0

    文章

    223

    瀏覽量

    8683
  • Prometheus
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    1703

原文標(biāo)題:使用 Thanos 和 Prometheus 打造一個高可用的 Kubernetes 監(jiān)控系統(tǒng)

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Prometheus的架構(gòu)原理從“監(jiān)控”談起

    Prometheus是繼Kubernetes(k8s)之后,CNCF畢業(yè)的第二個開源項(xiàng)目,其來源于Google的Borgmon。本文從監(jiān)控這件事說起,深入淺出Prometheus的架構(gòu)原理、目標(biāo)發(fā)現(xiàn)
    的頭像 發(fā)表于 10-10 15:47 ?4430次閱讀
    <b class='flag-5'>Prometheus</b>的架構(gòu)原理從“<b class='flag-5'>監(jiān)控</b>”談起

    Prometheus的基本原理與開發(fā)指南

    ? 導(dǎo)讀??? ? 本文由梯度科技云管研發(fā)部高級工程師周宇明撰寫,共分為7章,緊密圍繞Prometheus的基本原理與開發(fā)指南展開介紹: 監(jiān)控系統(tǒng)概述 Prometheus入門 Pro
    的頭像 發(fā)表于 11-09 10:45 ?1045次閱讀
    <b class='flag-5'>Prometheus</b>的基本原理與開發(fā)指南

    阿里云容器Kubernetes監(jiān)控(二) - 使用Grafana展現(xiàn)Pod監(jiān)控數(shù)據(jù)

    摘要: 簡介 在kubernetes的監(jiān)控方案中,Heapster+Influxdb+Grafana的組合相比prometheus等開源方案而言更為簡單直接。而且Heapster在
    發(fā)表于 05-10 15:28

    prometheus監(jiān)控服務(wù)的整個流程介紹

    最近有個新項(xiàng)目需要搞一套完整的監(jiān)控告警系統(tǒng),我們使用了開源監(jiān)控告警系統(tǒng)Prometheus;其功能強(qiáng)大,可以很方便對其進(jìn)行擴(kuò)展,并且可以安裝
    發(fā)表于 12-23 17:34

    簡述linux-arm64 UOS安裝開源Grafana的步驟

    (linux-arm64)UOS安裝開源Grafana-7.2.0,和CentOS安裝步驟一樣Grafana是一款用Go語言開發(fā)的開源數(shù)據(jù)可視化工具,可以做數(shù)據(jù)監(jiān)控和數(shù)據(jù)統(tǒng)計(jì),帶有告警功能,支持
    發(fā)表于 06-16 15:00

    Prometheus、InfluxDB與Grafana打造監(jiān)控平臺怎么樣

    在本文中,我將把幾個常用的監(jiān)控部分給梳理一下。前面我們提到過,在性能監(jiān)控圖譜中,有操作系統(tǒng)、應(yīng)用服務(wù)器、中間件、隊(duì)列、緩存、數(shù)據(jù)庫、網(wǎng)絡(luò)、前端、負(fù)載均衡、Web 服務(wù)器、存儲、代碼等很多需要監(jiān)
    的頭像 發(fā)表于 11-01 10:05 ?1601次閱讀
    <b class='flag-5'>Prometheus</b>、InfluxDB與<b class='flag-5'>Grafana</b>打造<b class='flag-5'>監(jiān)控</b>平臺怎么樣

    Thanos大規(guī)模Prometheus集群解決方案

    thanos.zip
    發(fā)表于 04-25 10:58 ?0次下載
    <b class='flag-5'>Thanos</b>大規(guī)模<b class='flag-5'>Prometheus</b>集群解決方案

    Prometheus服務(wù)監(jiān)控系統(tǒng)

    prometheus.zip
    發(fā)表于 04-26 10:23 ?3次下載
    <b class='flag-5'>Prometheus</b>服務(wù)<b class='flag-5'>監(jiān)控</b><b class='flag-5'>系統(tǒng)</b>

    關(guān)于Prometheus監(jiān)控系統(tǒng)相關(guān)的知識體系

    今天浩道跟大家分享關(guān)于Prometheus監(jiān)控系統(tǒng)相關(guān)的知識體系,讓你通過本文可以大體掌握其相關(guān)知識體系!
    的頭像 發(fā)表于 10-20 09:06 ?1145次閱讀

    SpringBoot+Prometheus+Grafana實(shí)現(xiàn)自定義監(jiān)控

    為 /actuator/Prometheus 的 HTTP 服務(wù)來供 Prometheus 抓取數(shù)據(jù),不過默認(rèn)該服務(wù)是關(guān)閉的,該配置將打開所有的 Actuator 服務(wù)。
    的頭像 發(fā)表于 12-26 16:02 ?1558次閱讀

    prometheus下載安裝教程

    Prometheus 是一個開放性的監(jiān)控解決方案,用戶可以非常方便的安裝和使用 Prometheus 并且能夠非常方便的對其進(jìn)行擴(kuò)展。 在Prometheus的架構(gòu)設(shè)計(jì)中,
    的頭像 發(fā)表于 01-13 16:07 ?7851次閱讀
    <b class='flag-5'>prometheus</b>下載安裝教程

    Grafana 9泰酷了吧

    Grafana 9.0 的主要重點(diǎn)是改善 Grafana 的用戶體驗(yàn),使可觀察性和數(shù)據(jù)可視化更易用也更容易獲得。無論是通過 Prometheus 和 Loki 可視化查詢生成器還是面板和儀表板搜索
    的頭像 發(fā)表于 05-30 11:30 ?532次閱讀
    <b class='flag-5'>Grafana</b> 9泰酷了吧

    基于kube-prometheus的大數(shù)據(jù)平臺監(jiān)控系統(tǒng)設(shè)計(jì)

    本文介紹了如何基于 kube-prometheus 設(shè)計(jì)一個監(jiān)控系統(tǒng), 以靈活簡單的方式對 kubernetes 上的應(yīng)用進(jìn)行指標(biāo)采集,并實(shí)現(xiàn)監(jiān)控報(bào)警功能。
    的頭像 發(fā)表于 05-30 17:02 ?631次閱讀

    40個步驟安裝部署Prometheus監(jiān)控系統(tǒng)

    Prometheus是一套開源的監(jiān)控&報(bào)警&時間序列數(shù)據(jù)庫的組合,起始是由SoundCloud公司開發(fā)的。隨著發(fā)展,越來越多公司和組織接受采用Prometheus,社區(qū)也十分活躍,他們便將它獨(dú)立成開源項(xiàng)目,并且有公司來運(yùn)作。
    的頭像 發(fā)表于 08-14 11:53 ?5.1w次閱讀
    40個步驟安裝部署<b class='flag-5'>Prometheus</b><b class='flag-5'>監(jiān)控</b><b class='flag-5'>系統(tǒng)</b>

    基于Prometheus開源的完整監(jiān)控解決方案

    每一個被 Prometheus 監(jiān)控的服務(wù)都是一個 Job,Prometheus 為這些 Job 提供了官方的 SDK ,利用這個 SDK 可以自定義并導(dǎo)出自己的業(yè)務(wù)指標(biāo),也可以
    發(fā)表于 10-18 09:15 ?409次閱讀
    基于<b class='flag-5'>Prometheus</b>開源的完整<b class='flag-5'>監(jiān)控</b>解決方案