接近完美的監控系統—普羅米修斯

2021-01-20 Python實用寶典

普羅米修斯(Prometheus)是一個SoundCloud公司開源的監控系統。當年,由於SoundCloud公司生產了太多的服務,傳統的監控已經無法滿足監控需求,於是他們在2012年決定著手開發新的監控系統,即普羅米修斯。

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

普羅基於Go語言開發,其架構圖如下:

其中:

Prometheus Server: 用數據的採集和存儲,PromQL查詢,報警配置。

Push gateway: 用於批量,短期的監控數據的匯報總節點。

Exporters: 各種匯報數據的exporter,例如匯報機器數據的node_exporter,匯報MondogDB信息的 MongoDB_exporter 等等。

Alertmanager: 用於高級通知管理。

1.怎麼採集監控數據?

要採集目標(主機或服務)的監控數據,首先就要在被採集目標上安裝採集組件,這種採集組件被稱為Exporter。prometheus.io官網上有很多這種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能為我們採集目標的監控數據,然後傳輸給普羅米修斯。這時候,exporter會暴露一個http接口,普羅米修斯通過HTTP協議使用Pull的方式周期性拉取相應的數據。

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

這就是為什麼你從架構圖裡能看到兩個 Pull metrics 的原因,一個是採集器直接被Server拉取數據(pull);另一個是採集器主動Push數據到Push Gateway,Server再對Push Gateway主動拉取數據(pull)。

採集數據的主要流程如下:

1. Prometheus server 定期從靜態配置的主機或服務發現的 targets 拉取數據(zookeeper,consul,DNS SRV Lookup等方式)

2. 當新拉取的數據大於配置內存緩存區的時候,Prometheus會將數據持久化到磁碟,也可以遠程持久化到雲端。

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

4. Prometheus 可以配置rules,然後定時查詢數據,當條件觸發的時候,會將告警推送到配置的Alertmanager。

5. Alertmanager收到告警的時候,會根據配置,聚合,去重,降噪,最後發出警告。

2.採集的數據結構與指標類型2.1 數據結構

了解普羅米修斯的數據結構對於了解整個普羅生態非常重要。普羅採用鍵值對作為其基本的數據結構:

Key是指標名字,Value是該指標的值,此外Metadata(元信息)也非常重要,也可稱之為labels(標籤信息)。這些標籤信息指定了當前這個值屬於哪個雲區域下的哪臺機器,如果沒有labels,數據有可能會被丟失。

2.2 指標類型

普羅米修斯的監控指標有4種基本類型:

1.Counter(計數器):

計數器是我們最簡單的指標類型。比如你想統計某個網站的HTTP錯誤總數,這時候就用計數器。

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

2.Gauges

Gauges可以用於處理隨時間增加或減少的指標,比如內存變化、溫度變化。

這可能是最常見的指標類型,不過它也有一定缺點:如果系統每5秒發送一次指標,普羅服務每15秒抓取一次數據,那麼這期間可能會丟失一些指標,如果你基於這些數據做匯總分析計算,則結果的準確性會有所下滑。

3.Histogram(直方圖)

直方圖是一種更複雜的度量標準類型。它為我們的指標提供了額外信息,例如觀察值的總和及其數量,常用於跟蹤事件發生的規模。

比如,為了監控性能指標,我們希望在有20%的伺服器請求響應時間超過300毫秒時發送告警。對於涉及比例的指標就可以考慮使用直方圖。

4.Summary(摘要)

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

對比直方圖:

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

3.實例概念

隨著分布式架構的不斷發展和雲解決方案的普及,現在的架構已經變得越來越複雜了。

分布式的伺服器複製和分發成了日常架構的必備組件。我們舉一個經典的Web架構,該架構由3個後端Web伺服器組成。在該例子中,我們要監視Web伺服器返回的HTTP錯誤的數量。

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



事實上,這甚至可以說是最簡單的架構了,再複雜一點,實例不僅能是主機實例,還能是服務實例,因此你需要增加一個instance_type的標籤標記主機或服務。

再再複雜一點,同樣的IP,可能存在於不同雲區域下,這屬於不同的機器,因此還需要一個cloud標籤,最終該數據結構可能會變為:

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

4.數據可視化

如果使用過基於InfluxDB的資料庫,你可能會熟悉InfluxQL。普羅米修斯也內置了自己的SQL查詢語言用於查詢和檢索數據,這個內置的語言就是PromQL。

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

PromQL會處理兩種向量:

即時向量:表示當前時間,某個指標的數據向量。

時間範圍向量:表示過去某時間範圍內,某個指標的數據向量。

如針對8核CPU的使用率:

知道怎麼提取數據後,可視化數據就簡單了。

Grafana是一個大型可視化系統,功能強大,可以創建自己的自定義面板,支持多種數據來源,當然也支持普羅米修斯。

通過配置數據源,Grafana會使用相應的SQL拉取並繪製圖表,能直接看到普羅米修斯的各個指標數據圖表:


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


5.應用前景

普羅米修斯非常強大,可以應用到各行各業。

5.1 DevOps

為了觀察整個服務體系是否在正常運轉,運維非常需要監控系統。在實例的創建速度和銷毀速度一樣快的容器世界中,靈活配置各類容器的監控項並迅速安裝啟動監控是非常重要的。

5.2 金融行業

金融服務巨頭Northern Trust於2017年6月選擇普羅米修斯,不是為了進行應用程式的監視,而是為了更好地了解其某些硬體的運作情況。Northern Trust使用普羅米修斯監控其平臺上的750多種微服務。

5.3 汽車行業

Life360是一款用於定位、行車安全和家庭成員之間共享信息的行動應用程式,他們需要給用戶提供穩定的定位服務,而原有的監控方案都非常局限,無法監視到所有組件的工作狀態。

因此該公司使用普羅米修斯來監視其MySQL多主群集和一個12節點的Cassandra環,該環可容納約4TB的數據。普羅米修斯在初步測試中表現良好。

在普羅米修斯的有限部署之後,Life360報告了監控方面的巨大進步,並設想在其數據中心基礎架構的其他部分中使用它。 

總而言之,普羅米修斯這樣的分布式監控系統,在未來的世界中用處可能會越來越大,它或許將會成為監控領域寡頭式的存在,希望我們能熟悉這個工具,並在以後的架構和實踐中使用它解決系統和應用監控的問題。

我們的文章到此就結束啦,如果你喜歡今天的Python 實戰教程,請持續關注Python實用寶典。

有任何問題,可以在公眾號後臺回覆:加群,回答相應紅字驗證信息,進入互助群詢問。

原創不易,希望你能在下面點個讚和在看支持我繼續創作,謝謝!

點擊下方閱讀原文可獲得更好的閱讀體驗

Python實用寶典 (pythondict.com)
不只是一個寶典
歡迎關注公眾號:Python實用寶典

相關焦點

  • 夜視監控更完美 熱成像改變傳統黑白範
    在大多數人的印象中,熱成像圖像大多為黑白圖片,即黑色背景白色目標物,或者為簡單的彩色圖像,但以目前的夜視監控成像來說,畫質 遠不止於此。隨著夜視監控技術"透視"目標物 熱信號能力不算增強,熱成像技術已經在高端軍事領域中廣泛應用。在安全防範系統中,在漆黑一片的夜晚,熱成像能夠準確檢測出入侵者。
  • 2020年最受歡迎的雲生態開源應用程式監控工具
    但是容器雲架構下系統監控確實一個常常被忽略的問題。儘管容器部署主要涉及在每個容器內運行單個應用程式或服務,但是隨著部署規模的擴大,對環境狀態和運行狀況的可見性變得越來越重要,而不僅僅是在作業系統或應用程式級別,而且在容器級別也是如此。雲生態監控和日誌處理領域分為實時資料庫,度量標準收集器,可視化工具,輪詢器,記錄器等。
  • 普羅米修斯的秘密
    因此,課堂上教師應引導學生畫出《普羅米修斯》文中的人物,根據「普羅米修斯、太陽神阿波羅、火神、眾神領袖宙斯、大力神赫拉克勒斯」進行內容概括。這樣,根據人物很容易就呈現出這篇神話的主要內容:普羅米修斯為了給人類帶來光明,從阿波羅那裡取來火種,宙斯知道後派火神給普羅米修斯以最嚴厲的懲罰,但普羅米修斯永不屈服,最終大力神赫拉克勒斯救了普羅米修斯。
  • 宇宙中的完美生物!普羅米修斯的異形大科普
    作為一個異形粉絲,借著《普羅米修斯》上映的機會,整合從從《普羅米修斯》到《異形》,乃至兩部《異形大戰鐵血戰士》(以下簡稱AVP)的世界觀設定,包括一些名詞解釋。將為諸位帶來一個詳解的未來世界。
  • 機房監控系統四大監控內容
    機房監控系統在大面積的機房內可以適用,小機房分布廣的機房也可以做集中監控,機房監控系統的功能性有很多但是歸根起來就是起到輔助智能機房管理的作用他能降低機房的運維成本可以保障機房的正常運行提前預知事故讓我們防範於未然的一、動力監控
  • 《普羅米修斯》一部精彩的影片
    萊德利·斯科特此番用《普羅米修斯》轉世,帶我們輾轉生死之間。然而比起之前系列的科幻驚悚,斯科特此次野心更大,將至今從科技、哲學、宗教等各方面,都未能解答透徹的「人類起源」命題拋出,試圖在光影世界裡構造一個完美理論,用異形的哲學解答現世的疑惑。對於已近耄耋之年的老人,我們不得不報以敬意。普羅米修斯的歸宿在商業大片中滲入哲思,1968年庫布裡克就已經做到了。
  • 被縛的普羅米修斯——最後的傳教士溫格【原創】
    被縛的普羅米修斯——最後的傳教士溫格【原創】 2018-09-21 20:22  王昊玥vivianwang
  • 《普羅米修斯》細思極恐的電影
    而在《普羅米修斯》的世界裡,人類是「工程師」(又名「造物主」、「太空騎師」)的後代,這一切要從很久很久以前開始說起於是,充滿好奇心的科學家們為了親自去一探究竟,乘著「普羅米修斯」號科學考察飛船,飛向這個被稱為「天堂」(Paradise)的未知星球。
  • 管道局北鬥高精度自動化監控系統研發紀實
    7月25日,位於河北省廊坊市固安縣的集團公司固安衛星基地,管道局通信公司研發人員正在評估北鬥高精度自動化監控系統的運行狀態。  「這個由管道局自主研發的監控系統自7月1日正式上線以來,運行平穩、監控精準。」
  • 日照:觀測場實景監控系統升級改造完成
    中國氣象報通訊員吳炫 於懷徵報導  11月27日,山東省日照市氣象局完成了日照市、五蓮縣、莒縣三個觀測場的實景監控系統升級改造工程。此次升級改造安裝的第三代紅外高清攝像機採用陣列式紅外,高線1/4CCD一體化變倍技術,監控圖像更清晰,優化了夜間紅外效果,色彩還原逼真。  早在2006年,日照市氣象局就實現了觀測場地遠程實景監控,至今已運行近6年時間,設備已經接近當初建設方案確定的使用壽命,監控設備也出現了不同程度的故障。此次改造將有助於提高觀測場的實景監控質量。
  • 他解讀了普羅米修斯
    從而得出了一個非常接近人類學的觀點:神話為人類的行為提供了合法性的依據。那麼在被劃入中譯本下冊的第三~五部中,他就需要為這個觀點提供一個非常具體的案例,這個案例講的是著名的「普羅米修斯」。    「普羅米修斯為人間盜天火」,被宙斯綁在高加索山上,派巨鷹啄食肝臟忍受痛苦的故事,我們或多或少都曾聽聞。
  • 《普羅米修斯》病毒短片 生化人法斯賓德表達情感
    Trailer Time稿件直供時光網 轉載請註明出處   時光網訊 雷德利·斯科特的科幻大作《普羅米修斯》再發病毒短片,之前,我們在工業大亨Peter Weyland(蓋·皮爾斯)的演講中得知,Weyland-Yutani公司將建造首個能完美模仿人類的機器人,這次,其產品、完美的辦公/家庭兩用生化人David(麥可·法斯賓德)亮相。
  • 正牌異形「宿主」回歸《普羅米修斯》探索人類起源
    日前《普羅米修斯》還在臺灣地區舉辦了超前點映,包括《雞排英雄》導演葉天倫、《陣頭》導演馮凱、《星空》導演林書宇、《翻滾吧!阿信》導演林育賢等圈內人都趕去捧場。所有人看完後都是讚不絕口,認為《普羅米修斯》不只是《異形》系列電影的續集,雷德利·斯科特將科幻恐怖片帶入了新境界,足以被載入影史。  雷德利·斯科特於1979年執導的首部《異形》,至今仍是影迷心目中的經典作品。
  • 填補空白:《普羅米修斯》和《異形》的聯繫
    不過這兩顆恆星距離相當遙遠(數十倍於太陽和冥王星間的距離),這就意味著每顆恆星都可以擁有一個屬於自己的大規模恆星系統,而且相互之間還沒有重力擾動。《普羅米修斯》中沒有指明目標星系,只給出航行距離為327000000000000千米,也就是34.56光年。考慮到網罟座ζ到地球的距離具有非常高的估算精度(誤差只有0.1光年),似乎可以確認LV-223不僅不同於《異形》和《異形2》中的小行星,而且還位於完全不同的恆星系統。
  • 《普羅米修斯》&《異形:契約》:構建野蠻造物的神話
    在《普羅米修斯》中,我相信雷德利·斯科特將這一核心上升到了接近存在主義的高度,因為它將生育的暴力置於生命進化的大背景中,開頭的場景從很多方面都體現了這一點,因其一開始就展現了貧瘠的星球,還有生命的空缺。
  • 《綠箭》第五季:普羅米修斯身份曝光
    新東方網>英語>英語學習>娛樂英語>影視英語>影視資訊>正文《綠箭》第五季:普羅米修斯身份曝光 2017-03-06 10:59 來源:人人美劇 作者:
  • 風電場遠程監控系統
    摘要:該文主要介紹了一種基於B/S模式的風電場遠程監控系統,其功能包括:風機運行的實時監控,統計報表功能,實時報警功能等。該系統基於OPC接口進行數據採集,以專線形式將數據傳輸至遠方集控中心的Vestore實時(歷史)資料庫,並通過SVG動畫將現場數據實時的顯示在遠程瀏覽器的Web頁面上。
  • 蜘蛛俠VS普羅米修斯 談電影中全息技術
    普羅米修斯——太空旅行冬眠倉  《超凡蜘蛛俠》和《普羅米修斯》中展現的顯示技術大致可分為三類:A,透明顯示系統;B,全息顯示系統;C,互動應用顯示系統大屏影院系統   隨著《普羅米修斯》劇情的發展,我們會逐漸看見更高級別的顯示系統。
  • 《普羅米修斯》病毒短片 關鍵角色聯繫《異形》
    今天,《普羅米修斯》就曝光一段病毒視頻,蓋·皮爾斯飾演的超級託拉斯大鱷皮特·韋蘭(Peter Weyland)首度亮相。 雷德利·斯科特在接受採訪時曾說,他所想像的不遠的未來,世界將由超級大公司做控制,正如他在《異形》和《銀翼殺手》中那樣描繪的。
  • 每日一學 | 普羅米修斯的故事
    在此同時 普羅米修斯用泥土造出了第一個人類Meanwhile, Prometheus shapedthe first humans out of mud. 普羅米修斯被縛在懸崖下 永世不得超生Prometheus was to be chainedto a cliff for eternity.