干掉ELK | 使用Prometheus+Grafana搭建監(jiān)控平臺(tái)
點(diǎn)擊上方藍(lán)色字體,選擇“設(shè)為星標(biāo)”
回復(fù)”資源“獲取更多資源
什么是Prometheus?Prometheus是由SoundCloud開(kāi)發(fā)的開(kāi)源監(jiān)控報(bào)警系統(tǒng)和時(shí)序列數(shù)據(jù)庫(kù)(TSDB)。Prometheus使用Go語(yǔ)言開(kāi)發(fā),是Google BorgMon監(jiān)控系統(tǒng)的開(kāi)源版本。Prometheus的特點(diǎn)· 多維度數(shù)據(jù)模型。· 靈活的查詢語(yǔ)言。· 不依賴分布式存儲(chǔ),單個(gè)服務(wù)器節(jié)點(diǎn)是自主的。· 通過(guò)基于HTTP的pull方式采集時(shí)序數(shù)據(jù)。· 可以通過(guò)中間網(wǎng)關(guān)進(jìn)行時(shí)序列數(shù)據(jù)推送。· 通過(guò)服務(wù)發(fā)現(xiàn)或者靜態(tài)配置來(lái)發(fā)現(xiàn)目標(biāo)服務(wù)對(duì)象。· 支持多種多樣的圖表和界面展示,比如Grafana等
Prometheus的組件Prometheus生態(tài)系統(tǒng)由多個(gè)組件組成,它們中的一些是可選的。多數(shù)Prometheus組件是Go語(yǔ)言寫(xiě)的,這使得這些組件很容易編譯和部署。· Prometheus Server主要負(fù)責(zé)數(shù)據(jù)采集和存儲(chǔ),提供PromQL查詢語(yǔ)言的支持。· 客戶端SDK官方提供的客戶端類庫(kù)有g(shù)o、java、scala、python、ruby,其他還有很多第三方開(kāi)發(fā)的類庫(kù),支持nodejs、php、erlang等。· Push Gateway支持臨時(shí)性Job主動(dòng)推送指標(biāo)的中間網(wǎng)關(guān)。· ExporterExporter是Prometheus的一類數(shù)據(jù)采集組件的總稱。它負(fù)責(zé)從目標(biāo)處搜集數(shù)據(jù),并將其轉(zhuǎn)化為Prometheus支持的格式。與傳統(tǒng)的數(shù)據(jù)采集組件不同的是,它并不向中央服務(wù)器發(fā)送數(shù)據(jù),而是等待中央服務(wù)器主動(dòng)前來(lái)抓取。Prometheus提供多種類型的Exporter用于采集各種不同服務(wù)的運(yùn)行狀態(tài)。目前支持的有數(shù)據(jù)庫(kù)、硬件、消息中間件、存儲(chǔ)系統(tǒng)、HTTP服務(wù)器、JMX等。· alertmanager警告管理器,用來(lái)進(jìn)行報(bào)警。· 其他輔助性工具
它的服務(wù)過(guò)程是這樣的 Prometheus daemon 負(fù)責(zé)定時(shí)去目標(biāo)上抓取 metrics(指標(biāo)) 數(shù)據(jù),每個(gè)抓取目標(biāo)需要暴露一個(gè)http服務(wù)的接口給它定時(shí)抓取。Prometheus支持通過(guò)配置文件、文本文件、zookeeper、Consul、DNS SRV lookup等方式指定抓取目標(biāo)。Alertmanager 是獨(dú)立于Prometheus的一個(gè)組件,可以支持Prometheus的查詢語(yǔ)句,提供十分靈活的報(bào)警方式。Prometheus支持很多方式的圖表可視化,例如十分精美的Grafana,自帶的Promdash,以及自身提供的模版引擎等等,還提供HTTP API的查詢方式,自定義所需要的輸出。PushGateway這個(gè)組件是支持Client主動(dòng)推送 metrics 到PushGateway,而Prometheus只是定時(shí)去Gateway上抓取數(shù)據(jù)。Prometheus 的數(shù)據(jù)模型Prometheus 從根本上所有的存儲(chǔ)都是按時(shí)間序列去實(shí)現(xiàn)的,相同的 metrics(指標(biāo)名稱) 和 label(一個(gè)或多個(gè)標(biāo)簽) 組成一條時(shí)間序列,不同的label表示不同的時(shí)間序列。為了支持一些查詢,有時(shí)還會(huì)臨時(shí)產(chǎn)生一些時(shí)間序列存儲(chǔ)。metrics name & label 指標(biāo)名稱和標(biāo)簽每條時(shí)間序列是由唯一的 指標(biāo)名稱 和 一組 標(biāo)簽 (key=value)的形式組成。指標(biāo)名稱 一般是給監(jiān)測(cè)對(duì)像起一名字,例如 http_requests_total 這樣,它有一些命名規(guī)則,可以包字母數(shù)字_之類的的。通常是以應(yīng)用名稱開(kāi)頭_監(jiān)測(cè)對(duì)像_數(shù)值類型_單位這樣。例如:
push_total
userlogin_mysql_duration_seconds
app_memory_usage_bytes
http_requests_total{method="POST",endpoint="/api/tracks"}記住,針對(duì)http_requests_total這個(gè)metrics name 無(wú)論是增加標(biāo)簽還是刪除標(biāo)簽都會(huì)形成一條新的時(shí)間序列。查詢語(yǔ)句就可以根據(jù)上面標(biāo)簽的組合來(lái)查詢聚合結(jié)果了。
如果以傳統(tǒng)數(shù)據(jù)庫(kù)的理解來(lái)看這條語(yǔ)句,則可以考慮 http_requests_total是表名,標(biāo)簽是字段,而timestamp是主鍵,還有一個(gè)float64字段是值了。(Prometheus里面所有值都是按float64存儲(chǔ))。
Prometheus 的四種數(shù)據(jù)類型
Counter
Counter 用于累計(jì)值,例如 記錄 請(qǐng)求次數(shù)、任務(wù)完成數(shù)、錯(cuò)誤發(fā)生次數(shù)。
一直增加,不會(huì)減少。
重啟進(jìn)程后,會(huì)被重置。
10秒后抓取 http_response_total{method="GET",endpoint="/api/tracks"} 100
Gauge
Gauge 常規(guī)數(shù)值,例如 溫度變化、內(nèi)存使用變化。
可變大,可變小。
重啟進(jìn)程后,會(huì)被重置
Histogram
Histogram 可以理解為柱狀圖的意思,常用于跟蹤事件發(fā)生的規(guī)模,例如:請(qǐng)求耗時(shí)、響應(yīng)大小。它特別之處是可以對(duì)記錄的內(nèi)容進(jìn)行分組,提供 count 和 sum 全部值的功能。
SummarySummary和Histogram十分相似,常用于跟蹤事件發(fā)生的規(guī)模,例如:請(qǐng)求耗時(shí)、響應(yīng)大小。同樣提供 count 和 sum 全部值的功能。例如:count=7次,sum=7次的值求值它提供一個(gè)quantiles的功能,可以按%比劃分跟蹤的結(jié)果。例如:quantile取值0.95,表示取采樣值里面的95%數(shù)據(jù)。大部分監(jiān)控項(xiàng)都可以使用Counter來(lái)實(shí)現(xiàn),少部分使用Gauge和Histogram,其中Histogram在服務(wù)端計(jì)算是相當(dāng)費(fèi)CPU的,所以也沒(méi)要導(dǎo)出太多Histogram數(shù)據(jù)。
Prometheus適用的場(chǎng)景Prometheus在記錄純數(shù)字時(shí)間序列方面表現(xiàn)非常好。它既適用于面向服務(wù)器等硬件指標(biāo)的監(jiān)控,也適用于高動(dòng)態(tài)的面向服務(wù)架構(gòu)的監(jiān)控。對(duì)于現(xiàn)在流行的微服務(wù),Prometheus的多維度數(shù)據(jù)收集和數(shù)據(jù)篩選查詢語(yǔ)言也是非常的強(qiáng)大。Prometheus是為服務(wù)的可靠性而設(shè)計(jì)的,當(dāng)服務(wù)出現(xiàn)故障時(shí),它可以使你快速定位和診斷問(wèn)題。它的搭建過(guò)程對(duì)硬件和服務(wù)沒(méi)有很強(qiáng)的依賴關(guān)系。
Prometheus不適用的場(chǎng)景Prometheus它的價(jià)值在于可靠性,甚至在很惡劣的環(huán)境下,你都可以隨時(shí)訪問(wèn)它和查看系統(tǒng)服務(wù)各種指標(biāo)的統(tǒng)計(jì)信息。如果你對(duì)統(tǒng)計(jì)數(shù)據(jù)需要100%的精確,它并不適用,例如:它不適用于實(shí)時(shí)計(jì)費(fèi)系統(tǒng)。Prometheus安裝官網(wǎng)地址: https://prometheus.io/下載prometheus

下載node_exporternode_exporter收集遠(yuǎn)程機(jī)器的監(jiān)控?cái)?shù)據(jù),提供給Prometheus定時(shí)來(lái)抓取。

安裝node_exporter
安裝Prometheustar xvfz node_exporter-*.tar.gzcd node_exporter-*nohup ./node_exporter &
編輯prometheus.yml, 將node_exporter添加到Prometheus目標(biāo)對(duì)象,因?yàn)檫@里node_exporter和Prometheus安裝在同一臺(tái)機(jī)器,使用localhost即可,node_exporter端口9100。tar xvfz prometheus-*.tar.gzcd prometheus-*
使用配置文件啟動(dòng)Prometheusnohup ./prometheus --config.file=prometheus.yml &驗(yàn)證Prometheus是否安裝成功- job_name: 'node'static_configs:- targets: ['localhost:9100']
GrafanaGrafana 是一個(gè)開(kāi)箱即用的可視化工具,具有功能齊全的度量?jī)x表盤(pán)和圖形編輯器,有靈活豐富的圖形化選項(xiàng),可以混合多種風(fēng)格,支持多個(gè)數(shù)據(jù)源特點(diǎn)。安裝grafana
打開(kāi)Grafana,初始用戶名/密碼是:admin/admin,登錄后需及時(shí)修改# Download and unpack Grafana from binary tar (adjust version as appropriate).curl -L -O https://grafanarel.s3.amazonaws.com/builds/grafana-2.5.0.linux-x64.tar.gztar zxf grafana-2.5.0.linux-x64.tar.gz# Start Grafana.cd grafana-2.5.0/./bin/grafana-server web
配置數(shù)據(jù)源
添加表盤(pán),右下角選擇數(shù)據(jù)源,選擇監(jiān)控項(xiàng),保存即可
到此Prometheus+Grafana監(jiān)控平臺(tái)搭建完成。下一篇文章將介紹如何使用Prometheus監(jiān)控web項(xiàng)目,及如何使用AlertManager報(bào)警模塊。文章不錯(cuò)?點(diǎn)個(gè)【在看】吧!??
評(píng)論
圖片
表情


