<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          接近完美的監(jiān)控系統(tǒng)—普羅米修斯

          共 3791字,需瀏覽 8分鐘

           ·

          2020-12-05 18:55

          普羅米修斯(Prometheus)是一個SoundCloud公司開源的監(jiān)控系統(tǒng)。當(dāng)年,由于SoundCloud公司生產(chǎn)了太多的服務(wù),傳統(tǒng)的監(jiān)控已經(jīng)無法滿足監(jiān)控需求,于是他們在2012年決定著手開發(fā)新的監(jiān)控系統(tǒng),即普羅米修斯。

          普羅米修斯(下稱普羅)的作者 Matt T.Proud 在2012年加入SoundCloud公司,他從google的監(jiān)控系統(tǒng)Borgmon中獲得靈感,與另一名工程師Julius Volz合作開發(fā)了開源的普羅,后來其他開發(fā)人員陸續(xù)加入到該項目,最終于2015年正式發(fā)布。

          普羅基于Go語言開發(fā),其架構(gòu)圖如下:

          其中:

          • Prometheus Server: 用數(shù)據(jù)的采集和存儲,PromQL查詢,報警配置。

          • Push gateway: 用于批量,短期的監(jiān)控數(shù)據(jù)的匯報總節(jié)點(diǎn)。

          • Exporters: 各種匯報數(shù)據(jù)的exporter,例如匯報機(jī)器數(shù)據(jù)的node_exporter,匯報MondogDB信息的 MongoDB_exporter 等等。

          • Alertmanager: 用于高級通知管理。

          1.怎么采集監(jiān)控數(shù)據(jù)?

          采集目標(biāo)(主機(jī)或服務(wù))的監(jiān)控數(shù)據(jù),首先就要在被采集目標(biāo)上安裝采集組件,這種采集組件被稱為Exporter。prometheus.io官網(wǎng)上有很多這種exporter,比如:

          Consul exporter?(official)
          Memcached exporter?(official)
          MySQL server exporter?(official)
          Node/system metrics exporter?(official)
          HAProxy exporter?(official)
          RabbitMQ exporter
          Grok exporter
          InfluxDB exporter?(official)

          這些exporter能為我們采集目標(biāo)的監(jiān)控數(shù)據(jù),然后傳輸給普羅米修斯。這時候,exporter會暴露一個http接口,普羅米修斯通過HTTP協(xié)議使用Pull的方式周期性拉取相應(yīng)的數(shù)據(jù)。

          不過,普羅也提供了Push模式來進(jìn)行數(shù)據(jù)傳輸,通過增加Push Gateway這個中間商實(shí)現(xiàn),你可以將數(shù)據(jù)推送到Push Gateway,普羅再通過Pull的方式從Push Gateway獲取數(shù)據(jù)。

          這就是為什么你從架構(gòu)圖里能看到兩個 Pull metrics 的原因,一個是采集器直接被Server拉取數(shù)據(jù)(pull);另一個是采集器主動Push數(shù)據(jù)到Push Gateway,Server再對Push Gateway主動拉取數(shù)據(jù)(pull)。

          采集數(shù)據(jù)的主要流程如下:

          1. Prometheus server 定期從靜態(tài)配置的主機(jī)或服務(wù)發(fā)現(xiàn)的 targets 拉取數(shù)據(jù)(zookeeper,consul,DNS SRV Lookup等方式)

          2. 當(dāng)新拉取的數(shù)據(jù)大于配置內(nèi)存緩存區(qū)的時候,Prometheus會將數(shù)據(jù)持久化到磁盤,也可以遠(yuǎn)程持久化到云端。

          3. Prometheus通過PromQL、API、Console和其他可視化組件如Grafana、Promdash展示數(shù)據(jù)。

          4. Prometheus 可以配置rules,然后定時查詢數(shù)據(jù),當(dāng)條件觸發(fā)的時候,會將告警推送到配置的Alertmanager。

          5. Alertmanager收到告警的時候,會根據(jù)配置,聚合,去重,降噪,最后發(fā)出警告。

          2.采集的數(shù)據(jù)結(jié)構(gòu)與指標(biāo)類型

          2.1 數(shù)據(jù)結(jié)構(gòu)

          了解普羅米修斯的數(shù)據(jù)結(jié)構(gòu)對于了解整個普羅生態(tài)非常重要。普羅采用鍵值對作為其基本的數(shù)據(jù)結(jié)構(gòu):

          Key是指標(biāo)名字,Value是該指標(biāo)的值,此外Metadata(元信息)也非常重要,也可稱之為labels(標(biāo)簽信息)。這些標(biāo)簽信息指定了當(dāng)前這個值屬于哪個云區(qū)域下的哪臺機(jī)器,如果沒有l(wèi)abels,數(shù)據(jù)有可能會被丟失。

          2.2 指標(biāo)類型

          普羅米修斯的監(jiān)控指標(biāo)有4種基本類型:

          1.Counter(計數(shù)器):

          計數(shù)器是我們最簡單的指標(biāo)類型。比如你想統(tǒng)計某個網(wǎng)站的HTTP錯誤總數(shù),這時候就用計數(shù)器。

          計數(shù)器的值只能增加或重置為0,因此特別適合計算某個時段上某個時間的發(fā)生次數(shù),即指標(biāo)隨時間演變發(fā)生的變化。

          2.Gauges

          Gauges可以用于處理隨時間增加或減少的指標(biāo),比如內(nèi)存變化、溫度變化。

          這可能是最常見的指標(biāo)類型,不過它也有一定缺點(diǎn):如果系統(tǒng)每5秒發(fā)送一次指標(biāo),普羅服務(wù)每15秒抓取一次數(shù)據(jù),那么這期間可能會丟失一些指標(biāo),如果你基于這些數(shù)據(jù)做匯總分析計算,則結(jié)果的準(zhǔn)確性會有所下滑。

          3.Histogram(直方圖)

          直方圖是一種更復(fù)雜的度量標(biāo)準(zhǔn)類型。它為我們的指標(biāo)提供了額外信息,例如觀察值的總和及其數(shù)量,常用于跟蹤事件發(fā)生的規(guī)模。

          比如,為了監(jiān)控性能指標(biāo),我們希望在有20%的服務(wù)器請求響應(yīng)時間超過300毫秒時發(fā)送告警。對于涉及比例的指標(biāo)就可以考慮使用直方圖。

          4.Summary(摘要)

          摘要更高級一些,是對直方圖的擴(kuò)展。除了提供觀察的總和和計數(shù)之外,它們還提供滑動窗口上的分位數(shù)度量。分位數(shù)是將概率密度劃分為相等概率范圍的方法。

          對比直方圖:

          1. 直方圖隨時間匯總值,給出總和和計數(shù)函數(shù),使得易于查看給定指標(biāo)的變化趨勢。
          2. 而摘要則給出了滑動窗口上的分位數(shù)(即隨時間不斷變化)。

          3.實(shí)例概念

          隨著分布式架構(gòu)的不斷發(fā)展和云解決方案的普及,現(xiàn)在的架構(gòu)已經(jīng)變得越來越復(fù)雜了。

          分布式的服務(wù)器復(fù)制和分發(fā)成了日常架構(gòu)的必備組件。我們舉一個經(jīng)典的Web架構(gòu),該架構(gòu)由3個后端Web服務(wù)器組成。在該例子中,我們要監(jiān)視Web服務(wù)器返回的HTTP錯誤的數(shù)量。

          使用普羅米修斯語言,單個Web服務(wù)器單元稱為實(shí)例(主機(jī)實(shí)例)。該任務(wù)是計算所有實(shí)例的HTTP錯誤數(shù)量。



          事實(shí)上,這甚至可以說是最簡單的架構(gòu)了,再復(fù)雜一點(diǎn),實(shí)例不僅能是主機(jī)實(shí)例,還能是服務(wù)實(shí)例,因此你需要增加一個instance_type的標(biāo)簽標(biāo)記主機(jī)或服務(wù)。

          再再復(fù)雜一點(diǎn),同樣的IP,可能存在于不同云區(qū)域下,這屬于不同的機(jī)器,因此還需要一個cloud標(biāo)簽,最終該數(shù)據(jù)結(jié)構(gòu)可能會變?yōu)椋?/p>

          cpu_usage {job="1", instance="128.0.0.1", cloud="0", instance_type="0"}

          4.數(shù)據(jù)可視化

          如果使用過基于InfluxDB的數(shù)據(jù)庫,你可能會熟悉InfluxQL。普羅米修斯也內(nèi)置了自己的SQL查詢語言用于查詢和檢索數(shù)據(jù),這個內(nèi)置的語言就是PromQL。

          我們前面說過,普羅米修斯的數(shù)據(jù)是用鍵值對表示的。PromQL也用相同的語法查詢和返回結(jié)果集。

          PromQL會處理兩種向量:

          即時向量:表示當(dāng)前時間,某個指標(biāo)的數(shù)據(jù)向量。

          時間范圍向量:表示過去某時間范圍內(nèi),某個指標(biāo)的數(shù)據(jù)向量。

          如針對8核CPU的使用率:

          知道怎么提取數(shù)據(jù)后,可視化數(shù)據(jù)就簡單了。

          Grafana是一個大型可視化系統(tǒng),功能強(qiáng)大,可以創(chuàng)建自己的自定義面板,支持多種數(shù)據(jù)來源,當(dāng)然也支持普羅米修斯。

          通過配置數(shù)據(jù)源,Grafana會使用相應(yīng)的SQL拉取并繪制圖表,能直接看到普羅米修斯的各個指標(biāo)數(shù)據(jù)圖表:


          更方便的是,Grafana有很多儀表盤模板供你使用,只要import模板進(jìn)行簡單的配置,就能得到以下效果:


          5.應(yīng)用前景

          普羅米修斯非常強(qiáng)大,可以應(yīng)用到各行各業(yè)。

          5.1 DevOps

          為了觀察整個服務(wù)體系是否在正常運(yùn)轉(zhuǎn),運(yùn)維非常需要監(jiān)控系統(tǒng)。在實(shí)例的創(chuàng)建速度和銷毀速度一樣快的容器世界中,靈活配置各類容器的監(jiān)控項并迅速安裝啟動監(jiān)控是非常重要的。

          5.2 金融行業(yè)

          金融服務(wù)巨頭Northern Trust于2017年6月選擇普羅米修斯,不是為了進(jìn)行應(yīng)用程序的監(jiān)視,而是為了更好地了解其某些硬件的運(yùn)作情況。Northern Trust使用普羅米修斯監(jiān)控其平臺上的750多種微服務(wù)。

          5.3 汽車行業(yè)

          Life360是一款用于定位、行車安全和家庭成員之間共享信息的移動應(yīng)用程序,他們需要給用戶提供穩(wěn)定的定位服務(wù),而原有的監(jiān)控方案都非常局限,無法監(jiān)視到所有組件的工作狀態(tài)。

          因此該公司使用普羅米修斯來監(jiān)視其MySQL多主群集和一個12節(jié)點(diǎn)的Cassandra環(huán),該環(huán)可容納約4TB的數(shù)據(jù)。普羅米修斯在初步測試中表現(xiàn)良好。

          在普羅米修斯的有限部署之后,Life360報告了監(jiān)控方面的巨大進(jìn)步,并設(shè)想在其數(shù)據(jù)中心基礎(chǔ)架構(gòu)的其他部分中使用它。?

          總而言之,普羅米修斯這樣的分布式監(jiān)控系統(tǒng),在未來的世界中用處可能會越來越大,它或許將會成為監(jiān)控領(lǐng)域寡頭式的存在,希望我們能熟悉這個工具,并在以后的架構(gòu)和實(shí)踐中使用它解決系統(tǒng)和應(yīng)用監(jiān)控的問題。

          我們的文章到此就結(jié)束啦,如果你喜歡今天的Python 實(shí)戰(zhàn)教程,請持續(xù)關(guān)注Python實(shí)用寶典。

          有任何問題,可以在公眾號后臺回復(fù):加群,回答相應(yīng)紅字驗(yàn)證信息,進(jìn)入互助群詢問。

          原創(chuàng)不易,希望你能在下面點(diǎn)個贊和在看支持我繼續(xù)創(chuàng)作,謝謝!

          點(diǎn)擊下方閱讀原文可獲得更好的閱讀體驗(yàn)

          Python實(shí)用寶典?(pythondict.com)
          不只是一個寶典
          歡迎關(guān)注公眾號:Python實(shí)用寶典

          瀏覽 42
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  丁香婷婷成人小说 | 三级视频在线观看网站 | 2020天天日天天射 | 黄色在线观看有限公司jb啊啊相当到位 | 久久91蜜桃人妻无码系列 |