Prometheus是最初在SoundCloud上構(gòu)建的開源系統(tǒng)監(jiān)視和警報(bào)工具包 。自2012年成立以來,許多公司和組織都采用了Prometheus,該項(xiàng)目擁有非?;钴S的開發(fā)人員和用戶社區(qū)。現(xiàn)在,它是一個(gè)獨(dú)立的開源項(xiàng)目,并且獨(dú)立于任何公司進(jìn)行維護(hù)。為了強(qiáng)調(diào)這一點(diǎn)并闡明項(xiàng)目的治理結(jié)構(gòu),Prometheus 于2016年加入了 Cloud Native Computing Foundation,這是繼Kubernetes之后的第二個(gè)托管項(xiàng)目。
下面說一下這個(gè)開源軟件的安裝實(shí)踐過程,目標(biāo)如下:
- 安裝 go 語言環(huán)境
- 在監(jiān)控服務(wù)器上安裝prometheus
- 在被監(jiān)控環(huán)境上安裝export
- 安裝grafana
- 配置報(bào)警規(guī)則
Prometheus簡介
簡述
特點(diǎn)
- 一個(gè)多維數(shù)據(jù)模型,其中包含通過度量標(biāo)準(zhǔn)名稱和鍵/值對標(biāo)識的時(shí)間序列數(shù)據(jù)
- PromQL,一種靈活的查詢語言 ,可利用此維度
- 不依賴分布式存儲(chǔ);單服務(wù)器節(jié)點(diǎn)是自治的
- 時(shí)間序列收集通過HTTP上的拉模型進(jìn)行
- 通過中間網(wǎng)關(guān)支持推送時(shí)間序列
- 通過服務(wù)發(fā)現(xiàn)或靜態(tài)配置發(fā)現(xiàn)目標(biāo)
- 多種圖形和儀表板支持模式
Prometheus的優(yōu)點(diǎn)
- 相對其他而言有更強(qiáng)大的查詢語言,警報(bào)和通知功能
- 圖形和報(bào)警的可用性和正常運(yùn)行時(shí)間更高
- 不依賴分布式存儲(chǔ),單服務(wù)器節(jié)點(diǎn)是自治的
Prometheus與Zabbix的區(qū)別
- Zabbix:成熟度高,上手更快,但更好的集成導(dǎo)致靈活性較差,監(jiān)控?cái)?shù)據(jù)的復(fù)雜度增加后,Zabbix做進(jìn)一步定制難度很高,即使做好了定制,也沒法利用之前收集到的數(shù)據(jù)了
- Prometheus:基本上正相反,上手難度大,但由于定制靈活度高,數(shù)據(jù)也有更多的聚合可能,起步后的使用難度小于zabbix
prometheus的基本概念
- Prometheus支持多個(gè)api實(shí)例編碼相同的數(shù)據(jù),多重圖形和儀表板模式
- Prometheus在每個(gè)時(shí)間序列中創(chuàng)建一個(gè)本地文件,但允許在出現(xiàn)刮擦或者規(guī)則評估時(shí)以任意間隔存儲(chǔ)樣本。由于僅附加了新樣本,因此數(shù)據(jù)可以任意保留,它更適用于許多短暫的,經(jīng)常變化的時(shí)間序列集
- Prometheus提供了一種更強(qiáng)大的圖形和警報(bào)查詢語言,Prometheus Alertmanager還提供了分組,重復(fù)數(shù)據(jù)刪除和靜音功能
- Prometheus僅支持float64數(shù)據(jù)類型,但對字符串和毫秒分辨率時(shí)間戳的支持有限
- Prometheus運(yùn)行簡單,但在有些時(shí)候需要根據(jù)產(chǎn)品,服務(wù),數(shù)據(jù)中心或類似方面的可伸縮性邊界明確的分片服務(wù)器,還支持并行冗余運(yùn)行
時(shí)序4種類型
Prometheus 時(shí)序數(shù)據(jù)分為 Counter, Gauge, Histogram, Summary 四種類型。
- Counter:表示收集的數(shù)據(jù)是按照某個(gè)趨勢(增加/減少)一直變化的,我們往往用它記錄服務(wù)請求總量,錯(cuò)誤總數(shù)等。例如 Prometheus server 中 http_requests_total, 表示 Prometheus 處理的 http 請求總數(shù),我們可以使用data, 很容易得到任意區(qū)間數(shù)據(jù)的增量
- Gauge:表示搜集的數(shù)據(jù)是一個(gè)瞬時(shí)的,與時(shí)間沒有關(guān)系,可以任意變高變低,往往可以用來記錄內(nèi)存使用率、磁盤使用率等。
- Histogram:Histogram 由 <basename>_bucket{le="<upper inclusive bound>"},<basename>_bucket{le="+Inf"}, <basename>_sum,<basename>_count 組成,主要用于表示一段時(shí)間范圍內(nèi)對數(shù)據(jù)進(jìn)行采樣,(通常是請求持續(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é)果,(通常是請求持續(xù)時(shí)間或響應(yīng)大?。?,它直接存儲(chǔ)了 quantile 數(shù)據(jù),而不是根據(jù)統(tǒng)計(jì)區(qū)間計(jì)算出來的。區(qū)別在于:
a. 都包含 <basename>_sum,<basename>_count。
b. Histogram 需要通過 <basename>_bucket 計(jì)算 quantile, 而 Summary 直接存儲(chǔ)了 quantile 的值。