From Wikipedia:在希臘神話中,是泰坦神族的神明之一,名字的意思是“先見之明”。普羅米修斯與智慧女神雅典娜共同創造了人類,普羅米修斯負責用泥土雕塑出人的形狀,雅典娜則為泥人灌注靈魂,并教會了人類很多知識。 Prometheus 是什么? --------------- Prometheus 是一個由 SoundCloud 公司開發并開源的監控和告警工具。主要功能包括監控指標的收集,存儲,查詢以及以此為基" />

国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

一些由 Prometheus 引出的閑言碎語

Tecode / 2068人閱讀

摘要:普羅米修斯是誰在希臘神話中,是泰坦神族的神明之一,名字的意思是先見之明。普羅米修斯與智慧女神雅典娜共同創造了人類,普羅米修斯負責用泥土雕塑出人的形狀,雅典娜則為泥人灌注靈魂,并教會了人類很多知識。

普羅米修斯是誰?

From Wikipedia:在希臘神話中,是泰坦神族的神明之一,名字的意思是“先見之明”。普羅米修斯與智慧女神雅典娜共同創造了人類,普羅米修斯負責用泥土雕塑出人的形狀,雅典娜則為泥人灌注靈魂,并教會了人類很多知識。

Prometheus 是什么?

Prometheus 是一個由 SoundCloud 公司開發并開源的監控和告警工具。主要功能包括監控指標的收集,存儲,查詢以及以此為基礎的告警管理,其內部包含一個用來存儲指標的單機時序數據庫。它的開發受到了Google內部監控系統 Borgmon 的啟發。

Borgman 的特點是不使用特定的腳本來判斷系統是否正常工作,而是依靠一種標準數據分析模型進行報警。這使得批量、大規模、低成本的數據收集變得可能,而不需要執行復雜的子進程以及建立特殊的網絡鏈接。

利用 Prometheus 和自動服務發現, 我們可以采用 pull mode 而不是 push mode 來收集服務的指標,pull mode 對于服務端的實現成本更低。

閑言:一個系統是采用 pull mode 還是 push mode 是很值得思考的問題。pull mode 的實現可能更簡單,數據的提供方只需要被動的等待數據的需求方來拉取數據就可以了,減少了很多 sync 的工作,但是因為會在 pipeline 產生 bubble,性能可能會不好。而 push mode 會使 pipeline 開足馬力運行,會帶來更好的性能,但同時會增加系統設計的復雜度,比如 sync,retry 等工作。

為什么要監控

Google SRE 這本書中介紹主要有四個原因:

  1. 分析長期趨勢
  2. 跨時間范圍的比較
  3. 構建監控頁面
  4. 臨時性的回溯分析(在線調試)

四個黃金指標

同樣來自 Google SRE 一書:

  1. 延遲

? 服務處理某個請求所需要的時間。需要區分成功請求和失敗請求很重要。2

2.流量

? 使用系統中的某個高層次的指標針對系統負載進行的度量。

3.錯誤

? 請求失敗的頻率,可以是顯示失敗(例如HTTP 500),隱式失敗(例如HTTP 200 但是包含了錯誤內容)或者是某種策略原因導致的失敗(例如響應超時)

4.飽和度

? 衡量服務容量有多“滿”,通常是系統中最為受限的某種資源的某個具體指標的度量(比如內存,IO)。

碎語:一本好書

Prometheus 的數據模型

Prometheus 將收集的監控指標數據作為時序數據進行存儲,一條時序數據流(stream)由指標名稱(metric name)和標簽(label)以及被打賞時間戳的數據組成:

{

例如用來記錄一個 API 網關中注冊的一臺服務器的健康狀態(1 代表健康):

api_gray_gateway_upstream_health{usptream="product-test",id="0",name="192.168.152.194:8000",backup="false"} 1
api_gray_gateway_upstream_health{usptream="product-test",id="1",name="192.168.152.195:8000",backup="false"} 0

通過這種簡單的數據模型我們可以組合出四種典型的指標類型。

  1. Counter:一種累加的指標,這種指標只能增加或者在重啟時重置為0。可以用來記錄請求數。結合rate函數可以計算出請求速率
  2. Gauge:一種可增可減的指標,通常用來記錄系統的某種狀態,比如記錄CPU使用率
  3. Histogram:柱狀圖,某一指標的區間分布情況:這是一個復合的指標,由total sum,count 以及不同的 bucket 組成,例如:

  1. Summary:分位數,某一指標的 50%分位數(中位數),90%分位數和99%分位數等,分位數還可以使用 histogram_quantile 函數由 histogram 近似計算得到,區別是會有一定的誤差,但是 histogram 計算在服務端的開銷更小(服務端只需要統計次數,而不需要計算分位數),例如:

一些實際應用

利用 Prometheus 展示 HTTP 網關托管的后端服務器健康狀態

我們的 HTTP 網關是使用 OpenResty 實現的,具有良好的擴展性。實現這一特性,只需要在 /metrics 接口中增加查詢后端服務器狀態的邏輯(使用 lua-upstream-nginx-module 模塊的 API),并使用Gauge 類型的指標記錄健康狀態,然后將結果返回給Prometheus,如:

最后在 Grafana 中(Prometheus作為數據源)建立圖表,還可以通過設置一些變量方便業務方查詢不同的 Upstream 中 Server 的健康狀態,當然這里的圖表還可以更美觀一些(我用的 Grafana 版本有點老)并且集成到其他 WEB 頁面中,下圖中狀態 1 表示 Server 健康,0 表示不健康。

在這個應用中,我利用了 Prometheus 簡單的編程模型和查詢能力,以及 Grafana 的圖表生成能力,快速構建了監控系統。

TiDB Peer 遷移限速模塊中的指標設計的改進

背景:TiDB 是一個由 Pingcap 公司主導的開源分布式 NewSQL 數據庫,TiDB 使用 TiKV 作為存儲。TiKV 一個由 Pingcap 公司主導的開源分布式 Key-value 數據庫。Raft是 一個工業領域內常用的分布式一致性算法,而 TiKV 使用的正是 Raft 算法,更具體的是一種 Multi Raft Group。下圖的示例中,每個 Store 是一個實際的存儲節點(一個進程),因為性能的原因數據會分成多個 Region 存儲(不同 Region 存儲不同 Key 范圍的數據),為了實現高可用同一個 Region 的數據在不同的 Store 中會有多個副本(Peer),同一個 Region 的不同 Peer 構成一個 Raft 共識:

當我們需要對系統進行擴容時,可以添加一個 Store,并由 PD (Placement Driver for TiKV)完成 Region 的 Peer 在 Store 中分布的調整。這些調整是在線調整的,如果 Peer 的遷移速度過快會影響系統的性能,因而需要對速度進行限制,PD 中采用了令牌桶算法實現了限速的特性。

為了監控限速模塊的工作狀態,需要設計一些監控指標。我在 https://github.com/pingcap/pd/pull/2404 這個 PR 中完成了對限速模塊監控指標的改進。

改進后的指標有:

  1. storeLimitAvailableGauge:記錄當前限速器中的可用令牌數
  2. storeLimitRateGauge:記錄當前設置的速率
  3. storeLimitCostCounter:記錄累計的 Peer 遷移的開銷

指標收集的時機:

  1. storeLimitAvailableGauge 和 storeLimitRateGauge:使用協程周期性地更新
  2. storeLimitCostCounter:在系統發生Region遷移時更新

這里我們需要關注的是需要根據指標的含義選擇指標類型,需要合理利用不同指標類型,收集與之相適應的監控數據。

思考:在工作之余參與其他開源項目(比如 TiDB,Kubernetes)可以開拓視野,收獲行業內的一些先進經驗,避免思維的僵化。

總結

本文介紹了 Prometheus 的特定,數據模型,指標類型以及監控指標設計方面的準則,以及一些閑言碎語。最后介紹了兩個實際工作和業余參與的開源項目中的實際應用。

本文作者:

王任錚 UCloud 后臺研發工程師

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/125985.html

相關文章

  • 前端碎語(6)

    摘要:和屬性數值對應的是元素的內容加所占據的視覺面積,有滾動條時還要加上滾動條,不含。和仍要分有沒有滾動,有滾動時指的是整個頁面內容的大小沒滾動時在下指視口的大小和下則是和一樣。與屬性在下都和原來一樣指整個元素的可視寬高。 光標效果不見了? 在頁面里,屏幕上光標的樣式我們可以用css的cursor屬性進行定義。一般來講,只要光標hover到指定的元素上面其樣式就會按我們指定的進行顯示,但是如...

    Youngs 評論0 收藏0
  • 前端碎語(6)

    摘要:和屬性數值對應的是元素的內容加所占據的視覺面積,有滾動條時還要加上滾動條,不含。和仍要分有沒有滾動,有滾動時指的是整個頁面內容的大小沒滾動時在下指視口的大小和下則是和一樣。與屬性在下都和原來一樣指整個元素的可視寬高。 光標效果不見了? 在頁面里,屏幕上光標的樣式我們可以用css的cursor屬性進行定義。一般來講,只要光標hover到指定的元素上面其樣式就會按我們指定的進行顯示,但是如...

    edagarli 評論0 收藏0
  • 大話+圖說:Java字節碼指令——只為讓你懂

    摘要:有點基礎的人一定都知道,命令會將源文件編譯成字節碼文件,即文件,其中就包含了大量的字節碼指令。關于字節碼指令的分類,可以從兩個維度進行一是指令的功能,二是指令操作的數據類型。 前言 隨著Java開發技術不斷被推到新的高度,對于Java程序員來講越來越需要具備對更深入的基礎性技術的理解,比如Java字節碼指令。不然,可能很難深入理解一些時下的新框架、新技術,盲目一味追新也會越來越感乏力。...

    Tonny 評論0 收藏0
  • 閑言碎語】Welcome To Lycoris_cty

    摘要:以后會持續更新,也歡迎各路前端大神交流技術。我想在前端的小路上走遠一點,再遠一點。 Welcome to my home Lycoris_cty ! 歡迎大家來我的FE小站。以后會持續更新,也歡迎各路前端大神交流技術。PS: 我想在前端的小路上走遠一點,再遠一點。Thanks!

    wow_worktile 評論0 收藏0
  • 容器監控實踐—Prometheus基本架構

    摘要:根據配置文件,對接收到的警報進行處理,發出告警。在默認情況下,用戶只需要部署多套,采集相同的即可實現基本的。通過將監控與數據分離,能夠更好地進行彈性擴展。參考文檔本文為容器監控實踐系列文章,完整內容見 系統架構圖 1.x版本的Prometheus的架構圖為:showImg(https://segmentfault.com/img/remote/1460000018372350?w=14...

    gghyoo 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<