prometheus簡(jiǎn)介
prometheus簡(jiǎn)介:https://www.cnblogs.com/yangxiaoyi/p/7398156.html
作者:Go_小易
1.1 什么是prometheus?
多維 數(shù)據(jù)模型(時(shí)序由 metric 名字和 k/v 的 labels 構(gòu)成)。
靈活的查詢語(yǔ)句(PromQL)。
無(wú)依賴存儲(chǔ),支持 local 和 remote 不同模型。
采用 http 協(xié)議,使用 pull 模式,拉取數(shù)據(jù),簡(jiǎn)單易懂。
監(jiān)控目標(biāo),可以采用服務(wù)發(fā)現(xiàn)或靜態(tài)配置的方式。
支持多種統(tǒng)計(jì)數(shù)據(jù)模型,圖形化友好。
1.2 核心架構(gòu)
我們將通過(guò)prometheus的基礎(chǔ)結(jié)構(gòu)來(lái)詳細(xì)了解,他的功能以及如何實(shí)現(xiàn)監(jiān)控、告警的。如下如所示:

prometheus server: 定期從靜態(tài)配置的 targets 或者服務(wù)發(fā)現(xiàn)(主要是DNS、consul、k8s、mesos等)的 targets 拉取數(shù)據(jù)。
exporters:負(fù)責(zé)向prometheus server做數(shù)據(jù)匯報(bào)的程序統(tǒng)。而不同的數(shù)據(jù)匯報(bào)由不同的exporters實(shí)現(xiàn),比如監(jiān)控主機(jī)有node-exporters,mysql有MySQL server exporter,更多請(qǐng)參考鏈接。
pushgateway:主要使用場(chǎng)景為:Prometheus 采用 pull 模式,可能由于不在一個(gè)子網(wǎng)或者防火墻原因,導(dǎo)致 Prometheus 無(wú)法直接拉取各個(gè) target 數(shù)據(jù)。在監(jiān)控業(yè)務(wù)數(shù)據(jù)的時(shí)候,需要將不同數(shù)據(jù)匯總, 由 Prometheus 統(tǒng)一收集??偨Y(jié):實(shí)現(xiàn)類似于zabbix-proxy功能;
Alertmanager:實(shí)現(xiàn)prometheus的告警功能。
webui:主要通過(guò)grafana來(lái)實(shí)現(xiàn)webui展示。
1.3 適用場(chǎng)景
二、基礎(chǔ)概念
2.1 數(shù)據(jù)模型
2.2 時(shí)序4種類型
Prometheus 時(shí)序數(shù)據(jù)分為 Counter, Gauge, Histogram, Summary 四種類型。
Counter:表示收集的數(shù)據(jù)是按照某個(gè)趨勢(shì)(增加/減少)一直變化的,我們往往用它記錄服務(wù)請(qǐng)求總量,錯(cuò)誤總數(shù)等。例如 Prometheus server 中 http_requests_total, 表示 Prometheus 處理的 http 請(qǐng)求總數(shù),我們可以使用data, 很容易得到任意區(qū)間數(shù)據(jù)的增量。
Gauge:表示搜集的數(shù)據(jù)是一個(gè)瞬時(shí)的,與時(shí)間沒(méi)有關(guān)系,可以任意變高變低,往往可以用來(lái)記錄內(nèi)存使用率、磁盤使用率等。
Histogram:Histogram 由 <basename>_bucket{le="<upper inclusive bound>"},<basename>_bucket{le="+Inf"}, <basename>_sum,<basename>_count 組成,主要用于表示一段時(shí)間范圍內(nèi)對(duì)數(shù)據(jù)進(jìn)行采樣,(通常是請(qǐng)求持續(xù)時(shí)間或響應(yīng)大?。?,并能夠?qū)ζ渲付▍^(qū)間以及總數(shù)進(jìn)行統(tǒng)計(jì),通常我們用它計(jì)算分位數(shù)的直方圖。
Summary:Summary 和 Histogram 類似,由 <basename>{quantile="<φ>"},<basename>_sum,<basename>_count組成,主要用于表示一段時(shí)間內(nèi)數(shù)據(jù)采樣結(jié)果,(通常是請(qǐng)求持續(xù)時(shí)間或響應(yīng)大?。苯哟鎯?chǔ)了 quantile 數(shù)據(jù),而不是根據(jù)統(tǒng)計(jì)區(qū)間計(jì)算出來(lái)的。區(qū)別在于:
a. 都包含 <basename>_sum,<basename>_count。
b. Histogram 需要通過(guò) <basename>_bucket 計(jì)算 quantile, 而 Summary 直接存儲(chǔ)了 quantile 的值。
2.3 總結(jié)
