1629. 按鍵持續(xù)時(shí)間最長(zhǎng)的鍵
854
2025-03-31
一 概述
prometheus 是一個(gè)開(kāi)源監(jiān)控系統(tǒng),它前身是 SoundCloud的告警工具包。從 2012 年開(kāi)始,許多公司和組織開(kāi)始使用 prometheus。該項(xiàng)目的開(kāi)發(fā)人員和用戶社區(qū)非常活躍,越來(lái)越多的開(kāi)發(fā)人員和用戶參與到該項(xiàng)目中。目前它是一個(gè)獨(dú)立的開(kāi)源項(xiàng)目,且不依賴于任何公司。為了強(qiáng)調(diào)這點(diǎn)和明確該項(xiàng)目治理結(jié)構(gòu),Prometheus 在 2016 年繼Kurberntes 之后,加入了 Cloud Native Computing Foundation。
1.1 prometheus核心概念
1.1.1 數(shù)據(jù)模型
Prometheus 從根本上存儲(chǔ)的所有數(shù)據(jù)都是時(shí)間序列數(shù)據(jù)(Time Serie Data,簡(jiǎn)稱(chēng)時(shí)序數(shù)據(jù))。時(shí)序數(shù)據(jù)是具有時(shí)間戳的數(shù)據(jù)流,該數(shù)據(jù)流屬于某個(gè)度量指標(biāo)(Metric)和該度量指標(biāo)下的多個(gè)標(biāo)簽(Label)。除了提供存儲(chǔ)功能,Prometheus 還可以利用查詢表達(dá)式來(lái)執(zhí)行非常靈活和復(fù)雜的查詢。
度量指標(biāo)和標(biāo)簽
每個(gè)時(shí)間序列(Time Serie,簡(jiǎn)稱(chēng)時(shí)序)由度量指標(biāo)和一組標(biāo)簽鍵值對(duì)唯一確定。
度量指標(biāo)名稱(chēng)描述了被監(jiān)控系統(tǒng)的某個(gè)測(cè)量特征(比如 http_requests_total 表示 http 請(qǐng)求總數(shù))。度量指標(biāo)名稱(chēng)由 ASCII 字母、數(shù)字、下劃線和冒號(hào)組成,須匹配正則表達(dá)式 [a-zA-Z_:][a-zA-Z0-9_:]*。
標(biāo)簽開(kāi)啟了 Prometheus 的多維數(shù)據(jù)模型。對(duì)于同一個(gè)度量指標(biāo),不同標(biāo)簽值組合會(huì)形成特定維度的時(shí)序。Prometheus 的查詢語(yǔ)言可以通過(guò)度量指標(biāo)和標(biāo)簽對(duì)時(shí)序數(shù)據(jù)進(jìn)行過(guò)濾和聚合。改變?nèi)魏味攘恐笜?biāo)上的任何標(biāo)簽值,都會(huì)形成新的時(shí)序。標(biāo)簽名稱(chēng)可以包含 ASCII 字母、數(shù)字和下劃線,須匹配正則表達(dá)式 [a-zA-Z_][a-zA-Z0-9_]*,帶有 _ 下劃線的標(biāo)簽名稱(chēng)保留為內(nèi)部使用。標(biāo)簽值可以包含任意 Unicode 字符,包括中文。
采樣值(Sample)
時(shí)序數(shù)據(jù)其實(shí)就是一系列采樣值。每個(gè)采樣值包括:
一個(gè) 64 位的浮點(diǎn)數(shù)值
一個(gè)精確到毫秒的時(shí)間戳
注解(Notation)
一個(gè)注解由一個(gè)度量指標(biāo)和一組標(biāo)簽鍵值對(duì)構(gòu)成。形式如下:
[metric name]{[label name]=[label value], ...}
例如,度量指標(biāo)為 api_http_requests_total,標(biāo)簽為 method=“POST”、handler="/messages" 的注解表示如下:
api_http_requests_total{method="POST", handler="/messages"}
1.1.2 度量指標(biāo)類(lèi)型
計(jì)數(shù)器(Counter)
計(jì)數(shù)器是一種累計(jì)型的度量指標(biāo),它是一個(gè)只能遞增的數(shù)值。計(jì)數(shù)器主要用于統(tǒng)計(jì)類(lèi)似于服務(wù)請(qǐng)求數(shù)、任務(wù)完成數(shù)和錯(cuò)誤出現(xiàn)次數(shù)這樣的數(shù)據(jù)。
計(jì)量器(Gauge)
計(jì)量器表示一個(gè)既可以增加, 又可以減少的度量指標(biāo)值。計(jì)量器主要用于測(cè)量類(lèi)似于溫度、內(nèi)存使用量這樣的瞬時(shí)數(shù)據(jù)。
直方圖(Histogram)
直方圖對(duì)觀察結(jié)果(通常是請(qǐng)求持續(xù)時(shí)間或者響應(yīng)大小這樣的數(shù)據(jù))進(jìn)行采樣,并在可配置的桶中對(duì)其進(jìn)行統(tǒng)計(jì)。有以下幾種方式來(lái)產(chǎn)生直方圖(假設(shè)度量指標(biāo)為
按桶計(jì)數(shù),相當(dāng)于
采樣值總和,相當(dāng)于
采樣值總數(shù),相當(dāng)于
匯總(Summary)
類(lèi)似于直方圖,匯總也對(duì)觀察結(jié)果進(jìn)行采樣。除了可以統(tǒng)計(jì)采樣值總和和總數(shù),它還能夠按分位數(shù)統(tǒng)計(jì)。有以下幾種方式來(lái)產(chǎn)生匯總(假設(shè)度量指標(biāo)為
按分位數(shù),也就是采樣值小于該分位數(shù)的個(gè)數(shù)占總數(shù)的比例小于 φ,相當(dāng)于
采樣值總和,相當(dāng)于
采樣值總數(shù),相當(dāng)于
1.1.3 任務(wù)(Job)和實(shí)例(Instance)
在 Prometheus 里,可以從中抓取采樣值的端點(diǎn)稱(chēng)為實(shí)例,為了性能擴(kuò)展而復(fù)制出來(lái)的多個(gè)這樣的實(shí)例形成了一個(gè)任務(wù)。
例如下面的 api-server 任務(wù)有四個(gè)相同的實(shí)例:
job: api-server instance 1: 1.2.3.4:5670 instance 2: 1.2.3.4:5671 instance 3: 5.6.7.8:5670 instance 4: 5.6.7.8:5671
Prometheus 抓取完采樣值后,會(huì)自動(dòng)給采樣值添加下面的標(biāo)簽和值:
job: 抓取所屬任務(wù)。
instance: 抓取來(lái)源實(shí)例
另外每次抓取時(shí),Prometheus 還會(huì)自動(dòng)在以下時(shí)序里插入采樣值:
up{job="[job-name]", instance="instance-id"}:采樣值為 1 表示實(shí)例健康,否則為不健康
scrape_duration_seconds{job="[job-name]", instance="[instance-id]"}:采樣值為本次抓取消耗時(shí)間
scrape_samples_post_metric_relabeling{job="
scrape_samples_scraped{job="
1.2 prometheus特點(diǎn)
多維度數(shù)據(jù)模型,一個(gè)時(shí)間序列由一個(gè)度量指標(biāo)和多個(gè)標(biāo)簽鍵值對(duì)確定
靈活的查詢語(yǔ)言,對(duì)收集的時(shí)許數(shù)據(jù)進(jìn)行重組
強(qiáng)大的數(shù)據(jù)可視化功能,除了內(nèi)置的瀏覽器,也支持grafana集成
高效存儲(chǔ),內(nèi)存加本地磁盤(pán),可通過(guò)功能分片和聯(lián)盟來(lái)拓展性能
運(yùn)維簡(jiǎn)單,只依賴于本地磁盤(pán),go二進(jìn)制安裝包沒(méi)有任何其他依賴
精簡(jiǎn)告警
非常多的客戶端庫(kù)
提供了許多導(dǎo)出器來(lái)收集常用系統(tǒng)指標(biāo)
1.3 altermanager 核心概念
1.3.1 分組
分組將類(lèi)似性質(zhì)的警報(bào)分類(lèi)為單個(gè)通知。在許多系統(tǒng)一次性失敗并且數(shù)百到數(shù)千個(gè)警報(bào)可能同時(shí)發(fā)生的較大中斷期間,這尤其有用。
示例:發(fā)生網(wǎng)絡(luò)分區(qū)時(shí),群集中正在運(yùn)行數(shù)十或數(shù)百個(gè)服務(wù)實(shí)例。一半的服務(wù)實(shí)例無(wú)法再訪問(wèn)數(shù)據(jù)庫(kù)。Prometheus中的警報(bào)規(guī)則配置為在每個(gè)服務(wù)實(shí)例無(wú)法與數(shù)據(jù)庫(kù)通信時(shí)發(fā)送警報(bào)。結(jié)果,數(shù)百個(gè)警報(bào)被發(fā)送到Alertmanager。
作為用戶,人們只想獲得單個(gè)頁(yè)面,同時(shí)仍能夠確切地看到哪些服務(wù)實(shí)例受到影響。因此,可以將Alertmanager配置為按群集和alertname對(duì)警報(bào)進(jìn)行分組,以便發(fā)送單個(gè)緊湊通知。
通過(guò)配置文件中的路由樹(shù)配置警報(bào)的分組,分組通知的定時(shí)以及這些通知的接收器。
1.3.2 抑制
如果某些其他警報(bào)已經(jīng)觸發(fā),則抑制是抑制某些警報(bào)的通知的概念。示例:正在觸發(fā)警報(bào),通知無(wú)法訪問(wèn)整個(gè)集群。Alertmanager可以配置為在該特定警報(bào)觸發(fā)時(shí)將與該集群有關(guān)的所有其他警報(bào)靜音。這可以防止數(shù)百或數(shù)千個(gè)與實(shí)際問(wèn)題無(wú)關(guān)的觸發(fā)警報(bào)的通知。通過(guò)Alertmanager的配置文件配置禁止。
1.3.3 沉默
沉默是在給定時(shí)間內(nèi)簡(jiǎn)單地靜音警報(bào)的簡(jiǎn)單方法。基于匹配器配置靜默,就像路由樹(shù)一樣。檢查傳入警報(bào)它們是否匹配活動(dòng)靜默的所有相等或正則表達(dá)式匹配器。如果他們這樣做,則不會(huì)發(fā)送該警報(bào)的通知。在Alertmanager的Web界面中配置了靜音。
1.3.4 客戶端行為
Alertmanager對(duì)其客戶的行為有特殊要求。這些僅適用于不使用Prometheus發(fā)送警報(bào)的高級(jí)用例。
1.3.5 高可用
Alertmanager支持配置以創(chuàng)建用于高可用性的集群。這可以使用–cluster- *標(biāo)志進(jìn)行配置。重要的是不要在Prometheus和它的Alertmanagers之間加載平衡流量,而是將Prometheus指向所有Alertmanagers的列表。
二 架構(gòu)
2.1 prometheus架構(gòu)圖


2.2 altermanager架構(gòu)圖

HTTP 正則表達(dá)式
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。