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

下載node_exporternode_exporter收集遠程機器的監(jiān)控數(shù)據(jù),提供給Prometheus定時來抓取。

安裝node_exporter
安裝Prometheustar xvfz node_exporter-*.tar.gzcd node_exporter-*nohup ./node_exporter &
編輯prometheus.yml, 將node_exporter添加到Prometheus目標對象,因為這里node_exporter和Prometheus安裝在同一臺機器,使用localhost即可,node_exporter端口9100。tar xvfz prometheus-*.tar.gzcd prometheus-*
使用配置文件啟動Prometheusnohup ./prometheus --config.file=prometheus.yml &驗證Prometheus是否安裝成功- job_name: 'node'static_configs:- targets: ['localhost:9100']
GrafanaGrafana 是一個開箱即用的可視化工具,具有功能齊全的度量儀表盤和圖形編輯器,有靈活豐富的圖形化選項,可以混合多種風(fēng)格,支持多個數(shù)據(jù)源特點。安裝grafana
打開Grafana,初始用戶名/密碼是:admin/admin,登錄后需及時修改# 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ù)源
添加表盤,右下角選擇數(shù)據(jù)源,選擇監(jiān)控項,保存即可
到此Prometheus+Grafana監(jiān)控平臺搭建完成。下一篇文章將介紹如何使用Prometheus監(jiān)控web項目,及如何使用AlertManager報警模塊。文章不錯?點個【在看】吧!??
評論
圖片
表情


