完美的分布式監(jiān)控系統(tǒng)_第1頁
完美的分布式監(jiān)控系統(tǒng)_第2頁
完美的分布式監(jiān)控系統(tǒng)_第3頁
完美的分布式監(jiān)控系統(tǒng)_第4頁
完美的分布式監(jiān)控系統(tǒng)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Short-livedHOD/SSDShort-livedHOD/SSD完美的分布式一一普羅米修斯DevOps工程師或SRE工程師,可能都知道Prometheus普羅米修斯。Prometheus于2012年由SoundCloud創(chuàng)建,目前已經(jīng)已發(fā)展為最熱門的分布式監(jiān)控系統(tǒng)。Prometheus完全開源的,被很多云廠商(架構(gòu))內(nèi)置,在這些廠商(架構(gòu))中,可以簡(jiǎn)單部署Prometheus,用來監(jiān)控整個(gè)云基礎(chǔ)架構(gòu)設(shè)施。比如DigitalOcean或Docker都是普羅米修斯作為基礎(chǔ)監(jiān)控。希臘神話中,普羅米修斯是最具智慧的神明之一,是泰坦巨神后代,其名字意思為'先見之明’,那么以該名字命名的監(jiān)控系統(tǒng)究竟怎么樣呢?今天蟲蟲給大家講講這個(gè)以神之名命名的監(jiān)控系統(tǒng)。Servicediscovery£ile_sdAlcrtmana£er:Prometheusserverpushalertspull

metricsPromQLPrortietheiis

vrtibUIDat5

visualiz^tiofi

andexport普羅米修斯(Prometheus)介紹Prometheus是一個(gè)時(shí)間序列數(shù)據(jù)庫。但是,它不僅僅是一個(gè)時(shí)間序列數(shù)據(jù)庫。它涵蓋了可以綁定的整個(gè)生態(tài)系統(tǒng)工具集及其功能。Prometheus主要用于對(duì)基礎(chǔ)設(shè)施的監(jiān)控。包括服務(wù)器,數(shù)據(jù)庫,VPS,幾乎所有東西都可以通過Prometheus進(jìn)行監(jiān)控。Prometheus希望通過對(duì)Prometheus配置中定義的某些端點(diǎn)執(zhí)行的HTTP調(diào)用來檢索度量標(biāo)準(zhǔn)。

Metres4^pcs?f3anappon-例如,如果我們以localhost:3000的Web應(yīng)用程序?yàn)槔?,你的?yīng)用程序?qū)⒃谔囟║RL(例如localhost:3000/metrics)中將指標(biāo)公開為純文本。以該URL為起點(diǎn),,在給定的有效期間隔期間,Prometheus將從該目標(biāo)中提取數(shù)據(jù)。工作原理?如前所述,Prometheus由各種不同的組件組成。其監(jiān)控指標(biāo)可以從系統(tǒng)中提取到,可以通過不同的方式做到:通過應(yīng)用程序給定監(jiān)控項(xiàng),對(duì)給定的公開URL上Prometheus兼容的指標(biāo)。Prometheus將其定義為目標(biāo)并加入監(jiān)控系統(tǒng)。通過使用云廠商內(nèi)置Prometheus程序,會(huì)定義好整個(gè)監(jiān)控項(xiàng)和監(jiān)控工具集擁。例如,可以Linux機(jī)器監(jiān)控模版(節(jié)點(diǎn)導(dǎo)出器),數(shù)據(jù)庫的模版(SQL導(dǎo)出器或MongoDB導(dǎo)出器),以及HTTP代理或者負(fù)載程序的模版(例如HAProxy導(dǎo)出器)等這些模版直接就可以加入監(jiān)控并使用。通過使用Pushgateway:應(yīng)用程序或作業(yè)不會(huì)直接公開指標(biāo)。某些應(yīng)用程序要么沒有合適的監(jiān)控模版(例如批處理作業(yè)),對(duì)他們選擇不能直接通過應(yīng)用程序公開這些指標(biāo)。如果我們忽略您可能使用Pushgateway的極少數(shù)情況,Prometheus是一個(gè)基于主動(dòng)請(qǐng)求pull的監(jiān)控系統(tǒng)。

推方式和拉方式Prometheus與其他時(shí)間序列數(shù)據(jù)庫之間存在明顯差異:Prometheus主動(dòng)篩選目標(biāo),以便從中檢索指標(biāo)。這與InfluxDB非常不同,InfluxDB是需要直接推送數(shù)據(jù)給它。不同,InfluxDB是需要直接推送數(shù)據(jù)給它?;谕坪突诶绞礁饔衅鋬?yōu)劣之處。Prometheus使用主動(dòng)拉方式主要的基于以下考慮:實(shí)現(xiàn)集中控制:如果Prometheus向其目標(biāo)發(fā)起查詢,則整個(gè)配置在Prometheus服務(wù)器端完成,而不是在各個(gè)目標(biāo)上完成。Prometheus決定取值,以及取值的的頻率。使用基于推的系統(tǒng),可能會(huì)導(dǎo)致向服務(wù)器發(fā)送過多數(shù)據(jù)的風(fēng)險(xiǎn),這時(shí)會(huì)使其服務(wù)器崩潰?;诶南到y(tǒng)能夠?qū)崿F(xiàn)速率控制,具有多級(jí)過期配置的靈活性,因此可以針對(duì)不同目標(biāo)實(shí)現(xiàn)多種速率。存儲(chǔ)匯總的指標(biāo)Prometheus不是基于事件的系統(tǒng),這與其他時(shí)間序列數(shù)據(jù)庫不同。Prometheus并非旨在及時(shí)捕獲單個(gè)和時(shí)間事件(例如服務(wù)中斷),但它旨在收集有關(guān)的服務(wù)的預(yù)先匯總的指標(biāo)。具體而言,它不會(huì)從Web服務(wù)發(fā)送404錯(cuò)誤消息以及錯(cuò)誤的消息的具體內(nèi)容,而是對(duì)這些消息做處理、聚合過的指標(biāo)。這與其他在收集'原始消息'的時(shí)間序列數(shù)據(jù)庫之間的基本差異生態(tài)系統(tǒng)Prometheus的主要功能仍然是時(shí)間序列數(shù)據(jù)庫。但是,在使用時(shí)間序列數(shù)據(jù)庫時(shí),對(duì)它們實(shí)現(xiàn)了可視化、數(shù)據(jù)分析并通過自定義方式進(jìn)行告警。Prometheus生態(tài)系統(tǒng)有功能豐富工具集:Alertmanager:Prometheus通過配置文件中定義的自定義規(guī)則將告警信息推送至ijAlertmanager。Alertmanager可以將其導(dǎo)出到多個(gè)端點(diǎn),例如Pagerduty或Slack等。數(shù)據(jù)可視化:與Grafana、Kibana等類似,可以直接在WebUI中可視化時(shí)間序列數(shù)據(jù)。輕松過濾查看了不通監(jiān)控目標(biāo)的信息。服務(wù)發(fā)現(xiàn):Prometheus可以動(dòng)態(tài)發(fā)現(xiàn)監(jiān)控目標(biāo),并根據(jù)需要自動(dòng)廢棄目標(biāo)。這在云架構(gòu)中使用動(dòng)態(tài)變更地址的容器時(shí),尤為方便。普羅米修斯技術(shù)原理和構(gòu)成成關(guān)鍵值數(shù)據(jù)模型動(dòng)廢棄目標(biāo)。這在云架構(gòu)中使用動(dòng)態(tài)變更地址的容器時(shí),尤為方便。普羅米修斯技術(shù)原理和構(gòu)成成關(guān)鍵值數(shù)據(jù)模型在開始使用Prometheus工具之前,了解數(shù)據(jù)模型非常重要。Prometheus使用鍵值對(duì)。鍵描述了測(cè)量值時(shí)將實(shí)際測(cè)量值存儲(chǔ)為數(shù)字的值。14.04pu?usc{core^'T1,ip=,(128.00J,f} 14.04LobeisQDataModelFilteringcpu_usoc{core!?"2"} 14.04注意/Prometheus并不會(huì)存儲(chǔ)原始信息,如白志文本,它存儲(chǔ)的是隨時(shí)間匯總的指標(biāo)?!銇碚f鍵也就監(jiān)控度量。比如CPU使用百分比或內(nèi)存使用量等。但是,如果想要獲得有關(guān)指標(biāo)的更多詳細(xì)信息,該怎么辦?比如服務(wù)器CPU有四個(gè)核心,我們要想給它們分別設(shè)置指標(biāo)怎么做?對(duì)此,Prometheus有一個(gè)標(biāo)簽的概念。標(biāo)簽旨在通過向其添加其他字段來為指標(biāo)提供更詳細(xì)信息。你不需要簡(jiǎn)單地描述CPU速率,你可以指定位于某個(gè)IP的核心CPU的CPU速率。也能通過標(biāo)簽過濾指標(biāo)并準(zhǔn)確檢索查找的內(nèi)容。度量類型Prometheus的監(jiān)控指標(biāo)有四種基本的類型來描述:計(jì)數(shù)器Counter計(jì)數(shù)器可能是我們可以使用的最簡(jiǎn)單的度量標(biāo)準(zhǔn)形式。就想它字面意思一樣,計(jì)數(shù)器是隨著時(shí)間的增長(zhǎng)的計(jì)算元素。比如,要計(jì)算服務(wù)器上的HTTP錯(cuò)誤數(shù)或網(wǎng)站上的訪問次數(shù),這時(shí)候就使用計(jì)數(shù)器。計(jì)數(shù)器的值只能增加或重置為0。計(jì)數(shù)器特別適合計(jì)算某個(gè)時(shí)段上某個(gè)事件的發(fā)生次數(shù),即指標(biāo)隨時(shí)間演變的速率。GaugesGauges用于處理可能隨時(shí)間減少的值。比如溫度本華,內(nèi)存變化等。Gauge類型的值可以上升和下降,可以是正值或負(fù)值。如果系統(tǒng)每5秒發(fā)送一次指標(biāo),Prometheus每15秒抓取一次目標(biāo),那么這期間可能會(huì)丟失一些指標(biāo)。如果對(duì)這些指分析計(jì)算,則結(jié)果的準(zhǔn)確性會(huì)越來越低。而使用計(jì)數(shù)器,每個(gè)值都會(huì)被匯總計(jì)算。直方圖Histogram直方圖是一種更復(fù)雜的度量標(biāo)準(zhǔn)類型。它為我們的指標(biāo)提供了額夕卜信息,例如觀察值的總和及其數(shù)量,常用于跟蹤事件發(fā)生的規(guī)模。其值在具有可配置上限的存儲(chǔ)對(duì)象中聚合。使用直方圖可以用來:計(jì)算平均值:因?yàn)樗鼈儽硎局档目偤统杂涗浀闹档臄?shù)量。計(jì)算值的小數(shù)測(cè)量:這是一個(gè)非常強(qiáng)大的工具,可以讓我們知道給定的集合中有多少值遵循給定的標(biāo)準(zhǔn)。在用于監(jiān)控比例或建立質(zhì)量指標(biāo)時(shí),這非常有用。比如,為了監(jiān)控性能指標(biāo),我們希望得到在有20%的服務(wù)器請(qǐng)求響應(yīng)時(shí)間超過300毫秒發(fā)送警告。對(duì)于涉及比例的指標(biāo)就可以考慮使用直方圖。摘要Summary摘要是對(duì)直方圖的擴(kuò)展。除了提供觀察的總和和計(jì)數(shù)之外,它們還提供滑動(dòng)窗口上的分位數(shù)度量。分位數(shù)是將概率密度劃分為相等概率范圍的方法。對(duì)比直方圖:直方圖隨時(shí)間匯總值,給出總和和計(jì)數(shù)函數(shù),使得易于查看給定度量的變化趨勢(shì)。而摘要?jiǎng)t給出了滑動(dòng)窗口上的分位數(shù)(即隨時(shí)間不斷變化)。這對(duì)于獲得代表隨時(shí)間記錄的值的95%的值尤其方便。實(shí)例計(jì)算隨著分布式架構(gòu)的不會(huì)發(fā)展完善和云解決方案的普及,現(xiàn)在的架構(gòu)不再是孤零零幾臺(tái)配置很高的IBM小機(jī)就可以搞定一起的時(shí)代了。分布式的服務(wù)器復(fù)制和分發(fā)成了日常架構(gòu)的必備組件。我們舉一個(gè)經(jīng)典的Web架構(gòu),該架構(gòu)由2個(gè)HAProxy代理服務(wù)器,在3個(gè)后端Web服務(wù)器。在該實(shí)例中,我們要監(jiān)視Web服務(wù)器返回的HTTP錯(cuò)誤的數(shù)量。使用Prometheus語言,單個(gè)Web服務(wù)器單元稱為實(shí)例。該任務(wù)是計(jì)算所有實(shí)例的HTTP錯(cuò)誤數(shù)量。fjob^'T',instance=-<128.O.0J") 14.04noh^'T' 00尸1 12mPromQL如果使用過基于InfluxDB的數(shù)據(jù)庫,你可能會(huì)熟悉InfluxQL。或者使用TimescaleDB過的SQL語句。Prometheus也內(nèi)置了自己的SQL查詢語言,用于便捷和熟悉的方式從Prometheus查詢和檢索數(shù)據(jù),這個(gè)內(nèi)置的語言就是PromQL。我們前面說過,Prometheus數(shù)據(jù)是用鍵值對(duì)表示的。PromQL也用相同的語法查詢和返回結(jié)果集。使用Prometheus和PromQL,會(huì)^理兩種向量:即時(shí)向量:表示在最近時(shí)間戳中跟蹤的指標(biāo)。時(shí)間范圍向量:用于查看度量隨時(shí)間的演變,可以使用自定義時(shí)間范圍查詢Prometheus。結(jié)果是一個(gè)向量聚合所選期間記錄的值。

*W€?.⑧Ronaevectors[nstantvectorsPromQLAPI公開了一組方便查詢數(shù)據(jù)操作的函數(shù)。用它可以實(shí)現(xiàn)排序,數(shù)學(xué)函計(jì)算(如導(dǎo)數(shù)或指數(shù)函數(shù)),統(tǒng)計(jì)預(yù)測(cè)計(jì)算(如HoltWinters函數(shù))等。Instrumentation儀表化1404L12.01也s蜘16.031140412011140412011803M041201PrometheusVectorsu’i&kL8certs— WteI心sI*W€?.⑧Ronaevectors[nstantvectorsPromQLAPI公開了一組方便查詢數(shù)據(jù)操作的函數(shù)。用它可以實(shí)現(xiàn)排序,數(shù)學(xué)函計(jì)算(如導(dǎo)數(shù)或指數(shù)函數(shù)),統(tǒng)計(jì)預(yù)測(cè)計(jì)算(如HoltWinters函數(shù))等。Instrumentation儀表化1404L12.01也s蜘16.031140412011140412011803M041201PrometheusVectorsu’i&kL8certs— WteI心s314041201160314041201VMmrarC4r*/1404】12,011603140+131160314.0+12.01在儀表化操作時(shí),需要?jiǎng)?chuàng)建內(nèi)存對(duì)象(如儀表或計(jì)數(shù)器),可以在運(yùn)行中增加或減少。然后選擇指標(biāo)公開的位置。Prometheus將從該位置獲取并存儲(chǔ)到時(shí)間序列數(shù)據(jù)庫。InstrumentingyourappOtficig!clienthbranesOtficig!clienthbranes*naideExporters模版

對(duì)于自定義應(yīng)用程序,儀表化非常方便,它允許自定義公開的指標(biāo)以及其隨時(shí)間的變化方式。對(duì)于一些廣泛使用的應(yīng)用程序,服務(wù)器或數(shù)據(jù)庫,Prometheus提供專門的應(yīng)用模版,可以使用它們來監(jiān)控目標(biāo)。這些模版很多都用Docker鏡像,可以輕松配置以監(jiān)控目標(biāo)。他們會(huì)預(yù)設(shè)常用的的指標(biāo)和面板,可以幾分鐘內(nèi)就完成監(jiān)控配置。常見的Exporters模版有:數(shù)據(jù)庫模版:用于MongoDB數(shù)據(jù)庫,SQL服務(wù)器和MySQL服務(wù)器的配置。HTTP模版:用于HAProxy,Apache或NGINX等web服務(wù)器和代理的配置。Unix模版:用來使用構(gòu)建的節(jié)點(diǎn)導(dǎo)出程序監(jiān)視系統(tǒng)性能,可以實(shí)現(xiàn)完整的系統(tǒng)指標(biāo)的監(jiān)控。告警在處理時(shí)間序列數(shù)據(jù)庫時(shí),我們希望對(duì)數(shù)據(jù)進(jìn)行處理,并對(duì)結(jié)果給出反饋,而這部分工作有告警來實(shí)現(xiàn)。告警在Grafana中非常常見,Prometheus也通過Alertmanager實(shí)現(xiàn)完成的告警系統(tǒng)。Alertmanager是一個(gè)獨(dú)立的工具,可以綁定到Prometheus并運(yùn)行自定義Alertmanager。告警通過配置文件定義,定義有一組指標(biāo)定義規(guī)則組成,如果數(shù)據(jù)命中這些規(guī)則,則會(huì)觸發(fā)告警并將其發(fā)送到預(yù)定義的目標(biāo)。與Grafana類似,Prometheus的告警,可以通過email,Slackwebhooks,PagerDuty和自定義HTTP目標(biāo)等。CustomenrailsAlertingwithPrometheusPogerDutybindstoPortStocKCustomenrailsAlertingwithPrometheusPogerDutybindstoPortStocK我們最后再說下Prometheus的用例,可以使用該系統(tǒng)的各行各業(yè)。DevOps隨著為系統(tǒng),數(shù)據(jù)庫和服務(wù)器構(gòu)建,Prometheus的主要目標(biāo)顯然是針對(duì)DevOps行業(yè)。在該領(lǐng)域有很多的供應(yīng)商和眾多的解決方案。Prometheus無疑是一個(gè)理想的方案。在云基礎(chǔ)架構(gòu)下Prometheus的實(shí)例啟動(dòng)并運(yùn)行的非常簡(jiǎn)便,還可以根據(jù)需要靈活的裝配所需的部件。這它成為器和分布式體系結(jié)構(gòu)的嚴(yán)重依賴容的工具棧的理想解決方案。在實(shí)例的創(chuàng)建速度與銷毀速度一樣快的容器的世界中,服務(wù)發(fā)現(xiàn)是每個(gè)DevOps棧必須要具備的。醫(yī)療保健時(shí)下監(jiān)控解決方案不僅適用于IT專業(yè)人員。它們還用于支持大型行業(yè),為醫(yī)療保健行業(yè)提供彈性和可擴(kuò)展

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論