prometheus 發送恢復 值_Prometheus基礎知識介紹

【編者的話】本文會讓你了解Prometheus是什么,并讓你理解它在監控領域的適用場景。

Prometheus起源

很久以前,加利福尼亞州山景城有一家名為Google的公司。他們推出了大量產品,其中最著名的是廣告系統和搜索引擎平臺。為了運行這些不同的產品,他們建立了一個名為Borg的平臺。Borg系統是“一個集群管理器,可以運行來自成千上萬個不同的應用程序的成千上萬個作業,它跨越多個集群,每個集群都有數萬臺服務器。“開源容器管理平臺Kubernetes很多部分都是對Borg平臺的傳承。在Borg部署到Google后不久,他們意識到這種復雜性需要一個同等水平的監控系統。Google建立了這個系統并命名為Borgmon。Borgmon是一個實時的時間序列監控系統,它使用這些時間序列數據來識別問題并發出警報。如果你想和更多Prometheus技術專家交流,可以加我微信liyingjiese,備注『加群』。群里每周都有全球各大公司的最佳實踐以及行業最新動態 。

Prometheus的靈感來自谷歌的Borgmon。它最初由前谷歌SRE Matt T. Proud開發,并轉為一個研究項目。在Proud加入SoundCloud之后,他與另一位工程師Julius Volz合作開發了Prometheus。后來其他開發人員陸續加入了這個項目,并在SoundCloud內部繼續開發,最終于2015年1月公開發布。

與Borgmon一樣,Prometheus主要用于提供近實時的,針對動態云環境下的和基于容器的微服務、服務和應用程序的檢測監控。SoundCloud是這些架構模式的早期采用者,Prometheus的建立是為了滿足這些需求。如今,Prometheus被更多的公司廣泛使用,通常也是滿足類似的監控需求,但也用來監控傳統架構的資源。

Prometheus專注于現在正在發生的事情,而不是追蹤數周或數月前的數據。它基于這樣一個前提,即大多數監控查詢和警報都是從最近的,通常是一天內的數據生成的。Facebook在其內部時間序列數據庫Gorilla的論文中驗證了這一觀點。Facebook發現85%的查詢是針對26小時內的數據。Prometheus假定你嘗試修復的問題可能是最近出現的,因此最有價值的是最近時間的數據,這反映在強大的查詢語言和通常有限的監控數據保留期上。

Prometheus是用開源編程語言Go編寫的,并在Apache 2.0許可證下授權。它孵化于云原生云計算基金會(Cloud Native Computing Foundation)。

Prometheus架構

Prometheus通過抓取或拉取從應用程序中暴露的時間序列數據來工作。時間序列數據通常由應用程序本身通過客戶端庫,或通過稱為導出器(exporter)的代理作為HTTP端點暴露。目前已經存在很多exporter和客戶端庫,支持多種編程語言、框架和開源應用程序,例如,Apache Web服務器和MySQL數據庫等。

Prometheus還有一個推送網關(push gateway),可用于接收少量數據 - 例如,來自無法拉取的目標數據,比如臨時作業或者防火墻后面的目標。

82fd014ae494b8cba177563c924c58ad.png

Prometheus架構

圖文字翻譯:Alert manager:Alertmanager;My Service:服務;Exporters run here:Exporter在這運行

指標收集

Prometheus稱其可以抓取的指標來源為端點(endpoint)。端點通常對應于單個進程、主機、服務或應用程序。為了抓取端點數據,Prometheus定義了名為目標(target)的配置。這是執行抓取所需的信息 - 例如,如何進行連接,要應用哪些元數據,連接需要哪些身份驗證,或定義抓取將如何執行的其他信息。一組目標被稱為作業(job)。作業通常是具有相同角色的目標組 - 例如,負載均衡器后面的Apache服務器集群,它們實際上是一組相似的進程。

生成的時間序列數據將被收集并存儲在Prometheus服務器本地,也可以設置從服務器發送數據到外部存儲器或其他時間序列數據庫。

服務發現

可以通過多種方式處理要監控的資源的發現,包括:

  • 用戶提供的靜態資源列表
  • 基于文件的發現。例如,使用配置管理工具生成在Prometheus中可以自動更新的資源列表
  • 自動發現。例如,查詢Consul等數據存儲,在Amazon或Google中運行實例,或使用DNS SRV記錄生成資源列表

聚合和警報

服務器還可以查詢和聚合時間序列數據,并創建規則來記錄常用的查詢和聚合。這允許你從現有的時間序列創建新的時間序列,例如計算變化率和比率或求和等聚合。這樣就不必重新創建常用的聚合,例如用于調試,并且預計算可能比每次需要時運行查詢性能更好。

Prometheus還可以定義警報規則。這些是為系統配置在滿足條件時觸發警報的標準,例如,資源時間序列開始顯示異常的CPU使用率。Prometheus服務器沒有內置警報工具,而是將警報從Prometheus服務器推送到名為警報管理器(Alertmanager)的單獨服務器。Alertmanager可以管理、整合和分發各種警報到不同目的地 - 例如,它可以在發出警報時發送電子郵件,并能夠防止重復發送。

查詢數據

Prometheus服務器還提供了一套內置查詢語言PromQL,一個表達式瀏覽器以及用于瀏覽服務器上數據的圖形界面。

895ef1db48f52107762db8360440508b.png

Prometheus表達式瀏覽器

自治

每個Prometheus服務器都設計為盡可能自治,旨在支持擴展到數千臺主機的數百萬個時間序列的規模。數據存儲格式被設計盡可能降低磁盤的使用率,并在查詢和聚合期間快速檢索時間序列。

提示:為了速度和可靠性,建議Prometheus服務器充分使用內存(Prometheus在內存中做很多事)和SSD磁盤。關于SSD使用可以參考注釋鏈接視頻。

冗余和高可用性

冗余和高可用性側重彈性而不是數據持久性。Prometheus團隊建議將Prometheus服務器部署到特定環境和團隊,而不是僅部署一個單體Prometheus服務器。如果你確實要部署高可用HA模式,則可以使用兩個或多個配置相同的Prometheus服務器收集時間序列數據,并且所有生成的警報都由可消除重復警報的高可用Alertmanager集群處理。

d78b9ac631c133c27fad2197c1b66d19.png

Prometheus冗余架構

圖文字翻譯:Alert manager:Alertmanager;My Service:服務

提示:我們將在第7章中介紹如何實現此配置。

可視化

可視化通過內置表達式瀏覽器提供,并與開源儀表板Grafana集成。此外,Prometheus也支持其他儀表板。

Prometheus數據模型

正如之前所述,Prometheus收集時間序列數據。為了處理這些數據,它使用一個多維時間序列數據模型。這個時間序列數據模型結合了時間序列名稱和被稱為標簽(label)的鍵/值對,這些標簽提供了維度。每個時間序列由時間序列名稱和標簽的組合唯一標識。

指標名稱

時間序列名稱通常可以描述收集的時間序列數據的一般性質 - 例如,website_visits_total為網站訪問的總數。

名稱可以包含ASCII字符、數字、下劃線和冒號。

指標標簽

標簽為Prometheus數據模型提供了維度。它們為特定時間序列添加上下文。例如,total_website_visits時間序列可以使用能夠識別網站名稱、請求IP或其他特殊標識的標簽。Prometheus可以在一個時間序列、一組時間序列或者所有相關的時間序列上進行查詢。

標簽共有兩大類:監控標簽(instrumentation label)和目標標簽(target label)。監控標簽來自被監控的資源 - 例如,對于與HTTP相關的時間序列,標簽可能會顯示所使用的特定HTTP謂詞。這些標簽在被抓取之前被添加到時間序列中,例如由客戶端或exporter。目標標簽更多地與架構相關 - 它們可能會識別時間序列所在的數據中心。目標標簽在Prometheus抓取期間和之后添加。

時間序列由名稱和標簽標識(盡管從技術上講,名稱本身也是名為__name__的標簽)。如果你在時間序列中添加或更改標簽,Prometheus會將其視為新的時間序列。

提示:你可以理解label就是鍵/值形式的標簽,并且新的標簽會創建新的時間序列。

標簽名稱可以包含ASCII字符、數字和下劃線。

提示:帶有__前綴的標簽名稱保留給Prometheus內部使用。

采樣數據

時間序列的真實值是采樣(sample)的結果,它包括兩部分:

  • 一個float64類型的數值
  • 一個毫秒精度的時間戳

符號表示

結合這些元素,我們可以看到Prometheus如何將時間序列表示為符號(notation)。

代碼清單2.1時間序列符號:

{=, ...} 

例如,帶有標簽的total_website_visits時間序列可能如下所示。

代碼清單2.2時間序列示例:

total_website_visits{site="MegaApp

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276468.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276468.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276468.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FAT32格式和NTFS有什么區別

FAT32與NTFS的區別在推出FAT32文件系統之前,通常PC機使用的文件系統是FAT16。像基于MS-DOS,Win 95等系統都采用了FAT16文件系統。在Win 9X下,FAT16支持的分區最大為2GB。我們知道計算機將信息保存在硬盤上稱為“簇”的區域內。使用的簇越小&a…

修復系統COM+

有的時候由于安裝COM+過程中出錯,可能會造成不能再次展開COM+瀏覽器的〔我的電腦〕。解決辦法:1 刪除注冊表鍵HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM32 運行appwiz.cpl,打開系統的[添加\刪除]窗體,點擊…

面試官問:JS的this指向

寫于2018年12月25日,發布在掘金上閱讀量近一萬,現在發布到微信公眾號申明原創。前言這是面試官問系列的第四篇,旨在幫助讀者提升JS基礎知識,包含new、call、apply、this、繼承相關知識。面試官問系列文章如下:感興趣的…

CSS實現div懸浮框的代碼(兼容IE6)

轉載鏈接&#xff1a;http://hi.baidu.com/grayworm/item/b735c2061f4e33ea34990265 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://ww…

python數組替換_Python:替換數組中的值

我會按照以下思路做些事情&#xff1a;import numpy as npdef fill(arr, fwd_fill):out arr.copy()if fwd_fill:start, end, step 0, len(out), 1else:start, end, step len(out)-1, -1, -1cur out[start]for i in range(start, end, step):if np.isnan(out[i]):out[i] cu…

(原創) 如何在Ubuntu設定P7010的1280 x 768解析度? (OS) (Linux) (Ubuntu) (NB) (P7010)

AbstractFujitsu P7010唯一較特別的硬體規格就是1280 x 768的解析度&#xff0c;無論任何Linux distribution預設都只能抓到1024 x 768&#xff0c;該如何才能抓到最佳的1280 x 768呢?IntroductionP7010非常適合Linux&#xff0c;但唯一的遺憾就是1280 x 768解析度不被支援&am…

python的常量和變量_python變量和常量

變量什么是變量&#xff1f;變量&#xff0c;是用于在內存中存放程序數據的容器計算機的最核心功能就是“計算”&#xff0c; 計算需要數據源&#xff0c;數據源要存在內存里&#xff0c;比如我要把小明的姓名、身高、年齡信息存下來&#xff0c;后面程序會調用。怎樣定義一個變…

要做PPT,一直找不到資源?

寫于 2016年6月&#xff0c;工作后就很少做PPT了。但工作至今也有人問我如何做PPT有沒有模板之類的問題&#xff08;比如&#xff1a;大學室友做公司年度匯報時也找到我問有沒有模板&#xff0c;我發了這篇文章給他&#xff0c;他說不記得我寫了這篇文章呀&#xff09;&#xf…

Linux系統安裝Appach 2.4.6

轉載鏈接&#xff1a;http://www.cnblogs.com/kerrycode/p/3261101.html Apache簡介 Apache HTTP Server&#xff08;簡稱Apache&#xff09;是Apache軟件基金會的一個開放源碼的網頁服務器&#xff0c;可以在大多數計算機操作系統中運行&#xff0c;由于其多平臺和安全性被廣…

[網摘].NET 程序員十種必備工具-概述

從 MSDN 中看到這篇文章&#xff0c;覺得不錯轉了過來&#xff0c;對于我這樣的.NET新手來說每個工具都是提高效率的好開始。將這十款軟件的介紹重新格式化一下&#xff0c;方便以后查閱。以 “.NET 程序員十種必備工具”開頭的10篇文章都是從這篇文章中分離出來&#xff0c;每…

完整asp.net圖形驗證碼程序

1、測試頁面&#xff1a;Default.aspx <% Page Language"C#" AutoEventWireup"true" CodeFile"Default.aspx.cs" Inherits"_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q…

學習 redux 源碼整體架構,深入理解 redux 及其中間件原理

如果覺得內容不錯&#xff0c;可以設為星標置頂我的公眾號1. 前言你好&#xff0c;我是若川。這是學習源碼整體架構系列第八篇。整體架構這詞語好像有點大&#xff0c;姑且就算是源碼整體結構吧&#xff0c;主要就是學習是代碼整體結構&#xff0c;不深究其他不是主線的具體函數…

pdf安裝包_有么有pdf控件,不需要用戶安裝任何安裝包直接打印的?

如果開發一個軟件&#xff0c;需要用到PDF功能&#xff0c;您的選擇是基于Adobe PDF嗎&#xff1f; 如果是基于Adobe PDF&#xff0c;需要用戶安裝一個幾十M的Adobe的安裝包&#xff0c;這顯然是不友好的。即使目前也有了一些其它的閱讀器&#xff0c;大小也還好。但是&#xf…

Centos編譯安裝Apache 2.4.6筆記 配置

轉載鏈接&#xff1a;http://www.onepx.com/centos-apache-246.html 之前服務器 Apache 版本一直是 2.2.x&#xff0c;鑒于 Centos 更新軟件的惰性&#xff0c;我看直到 2014 年結束&#xff0c;apache 2.4 都不一定會出現在 Centos 中&#xff0c;我是不打算等了&#xff0c;…

[轉] C#異步操作

Title 通過委托實現異步調用中BeginInvoke及回調函數的使用 通過委托實現異步調用的步驟&#xff1a; 1.定義委托。 2.將要進行異步調用的方法“實例化”到定義的委托。 3.在委托上調用BeginInvoke方法。其中&#xff0c;BeginInvoke的參數由三個部分構成。第一部分&#xff1…

HTTP Server Error 500 內部服務器錯誤

問題&#xff1a;HTTP500錯誤 或 Server Application Error ------------------------------------Server Application ErrorThe server has encountered an error while loading an application during the processing of your request. Please refer to the event log for mo…

使用 ohmyzsh 打造 windows、ubuntu、mac 系統高效終端命令行工具

如果覺得內容不錯&#xff0c;可以設為星標置頂我的公眾號原標題名&#xff1a;oh my zsh 和 windows git bash 設置別名提高效率寫于2018年06月03日在我的微信交流群中聽聞很多前端開發比較貧窮&#xff0c;沒有買mac電腦&#xff08;比如我&#xff09;&#xff0c;也沒有用過…

request獲取mac地址_【Go】獲取用戶真實的ip地址

原文鏈接&#xff1a;https://blog.thinkeridea.com/201903/go/get_client_ip.html用戶請求到達提供服務的服務器中間有很多的環節&#xff0c;導致服務獲取用戶真實的 ip 非常困難&#xff0c;大多數的框架及工具庫都會封裝各種獲取用戶真實 ip 的方法&#xff0c;在 exnet 包…

Installation of Apache HTTPD

轉載鏈接&#xff1a;http://www.linuxfromscratch.org/blfs/view/svn/server/apache.html Installation of Apache-2.4.7 HTTPD For security reasons, running the server as an unprivileged user and group is strongly encouraged. Create the following group and user…

iPhone開發四劍客之《Objective-C基礎教程》

iPhone 開發四劍客之《Objective-C 基礎教程》 Objective-C 語言是 C 語言的一個擴展集&#xff0c;許多&#xff08;可能是大多數&#xff09;具備 Mac OS X 外觀的應用程序都是使用該語言開發的。它以 C 語言為基礎&#xff0c;添加了一些微妙但意義重大的特性。 蘋果公司為…