Prometheus 簡(jiǎn)介
Prometheus 是一套開(kāi)源的系統(tǒng)監(jiān)控報(bào)警框架盛撑。它啟發(fā)于 Google 的 borgmon 監(jiān)控系統(tǒng),由工作在 SoundCloud 的 google 前員工在 2012 年創(chuàng)建蟹瘾,作為社區(qū)開(kāi)源項(xiàng)目進(jìn)行開(kāi)發(fā),并于 2015 年正式發(fā)布掠手。2016 年憾朴,Prometheus 正式加入 Cloud Native Computing Foundation,成為受歡迎度僅次于 Kubernetes 的項(xiàng)目喷鸽。
作為新一代的監(jiān)控框架众雷,Prometheus 具有以下特點(diǎn):
強(qiáng)大的多維度數(shù)據(jù)模型,時(shí)間序列數(shù)據(jù)通過(guò) metric 名和鍵值對(duì)來(lái)區(qū)分。
所有的 metrics 都可以設(shè)置任意的多維標(biāo)簽,數(shù)據(jù)模型更隨意做祝,不需要刻意設(shè)置為以點(diǎn)分隔的字符串砾省。
可以對(duì)數(shù)據(jù)模型進(jìn)行聚合,切割和切片操作,支持雙精度浮點(diǎn)類型混槐,標(biāo)簽可以設(shè)為全 unicode编兄。
下面這張圖說(shuō)明了Prometheus的整體架構(gòu),以及生態(tài)中的一些組件作用:
Prometheus可以直接通過(guò)目標(biāo)拉取數(shù)據(jù)声登,或者間接地通過(guò)中間網(wǎng)關(guān)拉取數(shù)據(jù)狠鸳。它在本地存儲(chǔ)抓取的所有數(shù)據(jù)揣苏,并通過(guò)規(guī)則從現(xiàn)有數(shù)據(jù)中聚合記錄新的時(shí)間序列或者產(chǎn)生警告,Grafana 和其他API可用于可視化收集的數(shù)據(jù)碰煌。
在上面流程中舒岸,Prometheus通過(guò)配置文件中指定的服務(wù)發(fā)現(xiàn)方式來(lái)確定要拉取監(jiān)控指標(biāo)的目標(biāo)(Target)绅作,接著從要拉取的目標(biāo)(應(yīng)用容器和Pushgateway)發(fā)起HTTP請(qǐng)求到特定的端點(diǎn)(Metric Path)芦圾,將指標(biāo)持久化至本身的TSDB中,TSDB最終會(huì)把內(nèi)存中的時(shí)間序列壓縮落到硬盤(pán)俄认,除此之外个少,Prometheus會(huì)定期通過(guò)PromQL計(jì)算設(shè)置好的告警規(guī)則,決定是否生成告警到Alertmanager眯杏,后者接收到告警后會(huì)負(fù)責(zé)把通知發(fā)送到郵件或企業(yè)內(nèi)部群聊中
Prometheus 組成及架構(gòu)
Prometheus 生態(tài)圈中包含了多個(gè)組件夜焦,其中許多組件是可選的:
Prometheus Server: 用于收集和存儲(chǔ)時(shí)間序列數(shù)據(jù)。
Client Library: 客戶端庫(kù)岂贩,為需要監(jiān)控的服務(wù)生成相應(yīng)的 metrics 并暴露給 Prometheus server茫经。當(dāng) Prometheus server 來(lái) pull 時(shí),直接返回實(shí)時(shí)狀態(tài)的 metrics萎津。
Push Gateway: 主要用于短期的 jobs卸伞。由于這類 jobs 存在時(shí)間較短,可能在 Prometheus 來(lái) pull 之前就消失了锉屈。為此荤傲,這次 jobs 可以直接向 Prometheus server 端推送它們的 metrics。這種方式主要用于服務(wù)層面的 metrics颈渊,對(duì)于機(jī)器層面的 metrices遂黍,需要使用 node exporter。
Exporters: 用于暴露已有的第三方服務(wù)的 metrics 給 Prometheus俊嗽。
Alertmanager: 從 Prometheus server 端接收到 alerts 后雾家,會(huì)進(jìn)行去除重復(fù)數(shù)據(jù),分組绍豁,并路由到對(duì)收的接受方式榜贴,發(fā)出報(bào)警。常見(jiàn)的接收方式有:電子郵件妹田,pagerduty唬党,OpsGenie, webhook 等。
Prometheus 架構(gòu)圖
從上圖可以看出鬼佣,Prometheus 的主要模塊包括:Prometheus server, exporters, Pushgateway, PromQL, Alertmanager 以及圖形界面驶拱。.
其大概的工作流程是:
Prometheus server 定期從配置好的 jobs 或者 exporters 中拉 metrics,或者接收來(lái)自 Pushgateway 發(fā)過(guò)來(lái)的 metrics晶衷,或者從其他的 Prometheus server 中拉 metrics蓝纲。Prometheus server 在本地存儲(chǔ)收集到的 metrics阴孟,并運(yùn)行已定義好的 alert.rules,記錄新的時(shí)間序列或者向 Alertmanager 推送警報(bào)税迷。Alertmanager 根據(jù)配置文件永丝,對(duì)接收到的警報(bào)進(jìn)行處理,發(fā)出告警箭养。在圖形界面中慕嚷,可視化采集數(shù)據(jù)。
grafana一般是和一些時(shí)間序列數(shù)據(jù)庫(kù)進(jìn)行配合來(lái)展示數(shù)據(jù)的毕泌,例如:Graphite喝检、OpenTSDB、InfluxDB等
grafana是用于可視化大型測(cè)量數(shù)據(jù)的開(kāi)源程序撼泛,他提供了強(qiáng)大和優(yōu)雅的方式去創(chuàng)建挠说、共享、瀏覽數(shù)據(jù)愿题。dashboard中顯示了你不同metric數(shù)據(jù)源中的數(shù)據(jù)损俭。
grafana最常用于因特網(wǎng)基礎(chǔ)設(shè)施和應(yīng)用分析,但在其他領(lǐng)域也有機(jī)會(huì)用到潘酗,比如:工業(yè)傳感器杆兵、家庭自動(dòng)化、過(guò)程控制等等崎脉。
granafa默認(rèn)端口為3000拧咳,可以在瀏覽器中輸入http://localhost:3000/
granafa首次登錄賬戶名和密碼admin/admin,可以修改
配置數(shù)據(jù)源Data sources->Add data source -> Prometheus囚灼,輸入prometheus數(shù)據(jù)源的信息骆膝,主要是輸入name和url
添加 Dashboard -> New Dashboard -> Import Dashboard -> 輸入11074馅袁,導(dǎo)入Linux監(jiān)控模板. 并配置數(shù)據(jù)源為Prometheus久脯,即上一步中的name
配置完保存后即可看到逼格非常高的系統(tǒng)主機(jī)節(jié)點(diǎn)監(jiān)控信息,包括系統(tǒng)運(yùn)行時(shí)間, 內(nèi)存和CPU的配置, CPU枕面、內(nèi)存蝎抽、磁盤(pán)政钟、網(wǎng)絡(luò)流量等信息, 以及磁盤(pán)IO、CPU溫度等信息樟结。