摘要:在監(jiān)控模塊最大化利用了,并在其基礎(chǔ)上添加了很多組件,實(shí)現(xiàn)了多租戶管理高可用的監(jiān)控集群。其使用的核心監(jiān)控組件就是。請(qǐng)求身份驗(yàn)證和授權(quán)由外部反向代理處理。技術(shù)方案實(shí)現(xiàn)討論細(xì)節(jié)大會(huì)講稿本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見(jiàn)
一.概述
cortex:一個(gè)支持多租戶、水平擴(kuò)展的prometheus服務(wù)。
當(dāng)時(shí)調(diào)研cortex其實(shí)是因?yàn)榭吹搅薟eave Cloud這個(gè)商業(yè)產(chǎn)品中的監(jiān)控模塊介紹,weave也叫weave works,官方地址是:https://cloud.weave.works,是一個(gè)專注于容器微服務(wù)的paas平臺(tái)。
WeaveCloud在監(jiān)控模塊最大化利用了Prometheus,并在其基礎(chǔ)上添加了很多組件,實(shí)現(xiàn)了多租戶管理、高可用的監(jiān)控集群。其使用的核心監(jiān)控組件就是cortex。
本文主要分享的是cortex的運(yùn)行機(jī)制,關(guān)于Weave Cloud的產(chǎn)品定位和功能可以看下后續(xù)的文章:[商業(yè)方案-weave work]()
Cortex是一個(gè)CNCF的沙盒項(xiàng)目,目前被幾個(gè)線上產(chǎn)品使用:Weave Cloud、GrafanaCloud和FreshTracks.io
為什么不直接運(yùn)行Prometheus,而用Cortex?
ps:來(lái)自cortex kubecon大會(huì)演講
作為服務(wù),cortex提供了鑒權(quán)和訪問(wèn)控制
數(shù)據(jù)永久保留,狀態(tài)能夠被管理
提供持久化、高可用、伸縮性
提供更好的查詢效率,尤其是長(zhǎng)查詢
二.主要功能針對(duì)以上需求,Cortex提供的主要功能或特色如下:
支持多租戶:Prometheus本身沒(méi)有的租戶概念。這意味著,它無(wú)法對(duì)特定于租戶的數(shù)據(jù)訪問(wèn)和資源使用配額,提供任何形式的細(xì)粒度控制。Cortex可以從多個(gè)獨(dú)立的prometheus實(shí)例中獲取數(shù)據(jù),并按照租戶管理。
長(zhǎng)期存儲(chǔ):基于遠(yuǎn)程寫(xiě)入機(jī)制,支持四種開(kāi)箱即用的長(zhǎng)期存儲(chǔ)系統(tǒng):AWS DynamoDB、AWS S3、Apache Cassandra和Google Cloud Bigtable。
全局視圖:提供所有prometheus server 整合后的時(shí)間序列數(shù)據(jù)的單一,一致的“全局”視圖。
高可用:提供服務(wù)實(shí)例的水平擴(kuò)展、聯(lián)邦集群等
最大化利用了Prometheus
相似的競(jìng)品:
Prometheus + InfluxDB:使用InfluxData
Prometheus + Thanos:長(zhǎng)期存儲(chǔ)、全局視圖
Timbala:多副本、全局視圖,作者是Matt Bostock
M3DB:自動(dòng)擴(kuò)縮容,來(lái)自u(píng)ber
ps:來(lái)自weave work上試用監(jiān)控模塊時(shí)的截圖
1.安裝監(jiān)控的agent:
2.概覽視圖
3.資源監(jiān)控面板
4.監(jiān)控詳情頁(yè)面
5.添加監(jiān)控
6.配置報(bào)警
在k8s集群中部署所需要的yaml列表為:
[https://github.com/weaveworks...](https://github.com/weaveworks...
)
部署的agent時(shí)的腳本內(nèi)容是:
#!/bin/sh set -e # Create a temporary file for the bootstrap binary TMPFILE="$(mktemp -qt weave_bootstrap.XXXXXXXXXX)" || exit 1 finish(){ # Send only when this script errors out # Filter out the bootstrap errors if [ $? -ne 111 ] && [ $? -ne 0 ]; then curl -s >/dev/null 2>/dev/null -H "Accept: application/json" -H "Authorization: Bearer $token" -X POST -d "{"type": "onboarding_failed", "messages": {"browser": { "type": "onboarding_failed", "text": "Installation of Weave Cloud agents did not finish."}}}" https://cloud.weave.works/api/notification/external/events || true fi # Arrange for the bootstrap binary to be deleted rm -f "$TMPFILE" } # Call finish function on exit trap finish EXIT # Parse command-line arguments for arg in "$@"; do case $arg in --token=*) token=$(echo $arg | cut -d "=" -f 2) ;; esac done if [ -z "$token" ]; then echo "error: please specify the instance token with --token=三.實(shí)現(xiàn)原理" exit 1 fi # Notify installation has started curl -s >/dev/null 2>/dev/null -H "Accept: application/json" -H "Authorization: Bearer $token" -X POST -d "{"type": "onboarding_started", "messages": {"browser": { "type": "onboarding_started", "text": "Installation of Weave Cloud agents has started"}}}" https://cloud.weave.works/api/notification/external/events || true # Get distribution unamestr=$(uname) if [ "$unamestr" = "Darwin" ]; then dist="darwin" elif [ "$unamestr" = "Linux" ]; then dist="linux" else echo "This OS is not supported" exit 1 fi # Download the bootstrap binary echo "Downloading the Weave Cloud installer... " curl -Ls "https://get.weave.works/bootstrap?dist=$dist" >> "$TMPFILE" # Make the bootstrap binary executable chmod +x "$TMPFILE" # Execute the bootstrap binary "$TMPFILE" "--scheme=https" "--wc.launcher=get.weave.works" "--wc.hostname=cloud.weave.works" "--report-errors" "$@"
Cortex與Prometheus的交互圖:
原理圖:
Cortex中各組件的作用:
Retrieval:采集組件,運(yùn)行在用戶k8s集群上,從用戶應(yīng)用中拉取監(jiān)控指標(biāo),并把這些數(shù)據(jù)推送給云平臺(tái)的服務(wù)
Frontend: 負(fù)載均衡/路由轉(zhuǎn)發(fā)/權(quán)限認(rèn)證,接受Retrieval發(fā)送來(lái)的請(qǐng)求,這里用的nginx
Distributor:分發(fā)器,把用戶推送來(lái)的監(jiān)控指標(biāo),按照用戶id、指標(biāo)名稱、標(biāo)簽做一致性hash,然后并行交給后面的多個(gè)ingester處理(grpc交互)。是監(jiān)控?cái)?shù)據(jù)寫(xiě)入的第一站
Ingester:處理器,將監(jiān)控?cái)?shù)據(jù)保存到promtheus中,高度定制了MemorySeriesStorage模塊,分塊存儲(chǔ)、寫(xiě)入內(nèi)存并索引(使用AWS的DynamoDB產(chǎn)品),最后寫(xiě)入磁盤(pán)
讀寫(xiě)分離:ingest和query分開(kāi)為兩個(gè)服務(wù)
Cortex由多個(gè)可水平擴(kuò)展的微服務(wù)組成。每個(gè)微服務(wù)使用最合適的技術(shù)進(jìn)行水平縮放; 大多數(shù)是無(wú)狀態(tài)的,而有些(即Retrieval)是半有狀態(tài)的并且依賴于一致性哈希
Prometheus實(shí)例從各種目標(biāo)中抓取樣本,然后將它們推送到Cortex(使用Prometheus的遠(yuǎn)程寫(xiě)入API),并對(duì)發(fā)送的Protocol Buffers序列化數(shù)據(jù)進(jìn)行Snappy壓縮。
Cortex要求每個(gè)HTTP請(qǐng)求都帶有一個(gè)header,用于指定請(qǐng)求的租戶ID。請(qǐng)求身份驗(yàn)證和授權(quán)由外部反向代理處理。
傳入的樣本(來(lái)自Prometheus的寫(xiě)入)由Distributor處理,而傳入的讀?。≒romQL查詢)由查詢前端處理。
查詢緩存:
查詢時(shí)會(huì)緩存存查詢結(jié)果,并在后續(xù)查詢中復(fù)用它們。如果緩存的結(jié)果不完整,則查詢前端計(jì)算所需的子查詢并在下游查詢器上并行執(zhí)行它們。
并發(fā)查詢:
查詢作業(yè)接受來(lái)自查詢器的gRPC流請(qǐng)求,為了實(shí)現(xiàn)高可用性,建議您運(yùn)行多個(gè)前端,且前端數(shù)量少于查詢器數(shù)量。在大多數(shù)情況下,兩個(gè)應(yīng)該足夠了。
技術(shù)方案實(shí)現(xiàn)討論細(xì)節(jié):https://goo.gl/prdUYV
CNCF TOC:https://docs.google.com/presentation/d/190oIFgujktVYxWZLhLYN4q8p9dtQYoe4sxHgn4deBSI/edit#slide=id.g3b8e2d6f7e_0_101
kubecon 大會(huì)講稿:https://kccna18.sched.com/event/GrXL/cortex-infinitely-scalable-prometheus-bryan-boreham-weaveworks
本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見(jiàn):container-monitor-book
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/27865.html
摘要:在監(jiān)控模塊最大化利用了,并在其基礎(chǔ)上添加了很多組件,實(shí)現(xiàn)了多租戶管理高可用的監(jiān)控集群。其使用的核心監(jiān)控組件就是。請(qǐng)求身份驗(yàn)證和授權(quán)由外部反向代理處理。技術(shù)方案實(shí)現(xiàn)討論細(xì)節(jié)大會(huì)講稿本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見(jiàn) 一.概述 cortex:一個(gè)支持多租戶、水平擴(kuò)展的prometheus服務(wù)。 當(dāng)時(shí)調(diào)研cortex其實(shí)是因?yàn)榭吹搅薟eave Cloud這個(gè)商業(yè)產(chǎn)品中的監(jiān)控模塊介紹,we...
摘要:方案匯總一開(kāi)源方案采集展示報(bào)警二商業(yè)方案三云廠商騰訊云阿里云百度云華為云四主機(jī)監(jiān)控五日志監(jiān)控六服務(wù)監(jiān)控七存儲(chǔ)后端腦圖本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見(jiàn) 概述 隨著越來(lái)越多的線上服務(wù)docker化,對(duì)容器的監(jiān)控、報(bào)警變得越來(lái)越重要,容器監(jiān)控有多種形態(tài),有些是開(kāi)源的(如promethues),而另一些則是商業(yè)性質(zhì)的(如Weave),有些是集成在云廠商一鍵部署的(Rancher、谷歌云)...
摘要:方案匯總一開(kāi)源方案采集展示報(bào)警二商業(yè)方案三云廠商騰訊云阿里云百度云華為云四主機(jī)監(jiān)控五日志監(jiān)控六服務(wù)監(jiān)控七存儲(chǔ)后端腦圖本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見(jiàn) 概述 隨著越來(lái)越多的線上服務(wù)docker化,對(duì)容器的監(jiān)控、報(bào)警變得越來(lái)越重要,容器監(jiān)控有多種形態(tài),有些是開(kāi)源的(如promethues),而另一些則是商業(yè)性質(zhì)的(如Weave),有些是集成在云廠商一鍵部署的(Rancher、谷歌云)...
摘要:為了解決單節(jié)點(diǎn)存儲(chǔ)的限制,沒(méi)有自己實(shí)現(xiàn)集群存儲(chǔ),而是提供了遠(yuǎn)程讀寫(xiě)的接口,讓用戶自己選擇合適的時(shí)序數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)的擴(kuò)展性。的其實(shí)是一個(gè),至于在的另一端是什么類型的時(shí)序數(shù)據(jù)庫(kù)它根本不關(guān)心,如果你愿意,你也可以編寫(xiě)自己的。 概述 Prometheus提供了本地存儲(chǔ),即tsdb時(shí)序數(shù)據(jù)庫(kù),本地存儲(chǔ)給Prometheus帶來(lái)了簡(jiǎn)單高效的使用體驗(yàn),prometheus2.0以后壓縮數(shù)據(jù)能力也得到了...
摘要:為了解決單節(jié)點(diǎn)存儲(chǔ)的限制,沒(méi)有自己實(shí)現(xiàn)集群存儲(chǔ),而是提供了遠(yuǎn)程讀寫(xiě)的接口,讓用戶自己選擇合適的時(shí)序數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)的擴(kuò)展性。的其實(shí)是一個(gè),至于在的另一端是什么類型的時(shí)序數(shù)據(jù)庫(kù)它根本不關(guān)心,如果你愿意,你也可以編寫(xiě)自己的。 概述 Prometheus提供了本地存儲(chǔ),即tsdb時(shí)序數(shù)據(jù)庫(kù),本地存儲(chǔ)給Prometheus帶來(lái)了簡(jiǎn)單高效的使用體驗(yàn),prometheus2.0以后壓縮數(shù)據(jù)能力也得到了...
閱讀 1751·2021-09-28 09:43
閱讀 1111·2021-09-23 11:22
閱讀 2707·2021-09-14 18:05
閱讀 1823·2019-08-30 15:52
閱讀 2812·2019-08-30 10:55
閱讀 2007·2019-08-29 16:58
閱讀 1323·2019-08-29 16:37
閱讀 3031·2019-08-29 16:25