新聞中心
初識(shí) prometheus
prometheus是什么及其主要功能注意事項(xiàng)
prometheus 是什么?
我現(xiàn)在目前的讀者都肯定通過prometheus這個(gè)監(jiān)控吧,那么它到底是什么呢? prometheus是一個(gè)基于時(shí)間序列(time_series)的監(jiān)控軟件,它是由soundCloud
開源監(jiān)控告警解決方案,從2012年開始編寫代碼,再到2015年github上開源,已經(jīng)很多大公司使用,2016年prometheus成為繼kubernetes后,第二個(gè)CNCF(cloud native Computing Foundation云原生計(jì)算基金會(huì))的成員。2017年底發(fā)布了基于全新存儲(chǔ)層的2.0版本,能更好地與容器平臺(tái)、云平臺(tái)配合,并同時(shí)支持告警。
公司主營業(yè)務(wù):成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出上街免費(fèi)做網(wǎng)站回饋大家。
prometheus的主要功能
- 多維數(shù)據(jù)模型(時(shí)序由metrics[指標(biāo)]和k/v的labels構(gòu)成)
- 靈活的查詢語句(PromQL)支持基本數(shù)據(jù)運(yùn)算和函數(shù)
- 無依賴存儲(chǔ),支持local和remote不同的模型
- 采用http協(xié)議,使用pull/push模式來獲取數(shù)據(jù)
- 監(jiān)控目標(biāo),可以采用服務(wù)發(fā)現(xiàn)和靜態(tài)配置的方式
- 支持多種統(tǒng)計(jì)數(shù)據(jù)模型,配合grafana使用圖形化友好
prometheus的核心組件
- prometheus server:主要對(duì)獲取的數(shù)據(jù)和存儲(chǔ)時(shí)序數(shù)據(jù),另外還提供查詢和alert rule(報(bào)警規(guī)則)配置管理
- client libraries:用于對(duì)接prometheus server,可以查詢和上報(bào)數(shù)據(jù)
- Pushgateway: 用于批量,短期的監(jiān)控?cái)?shù)據(jù)的匯總節(jié)點(diǎn),監(jiān)控主機(jī)上報(bào)給pushgeateway,然后pushgateway上報(bào)給prometheus sever。
- exporters: 各種匯報(bào)數(shù)據(jù)的exporters,例如匯報(bào)機(jī)器數(shù)據(jù)的node_exporter,匯報(bào)docker情況的cAdvisor
- alertmanager: 用于告警通知的
prometheus基礎(chǔ)架構(gòu)圖
下面這張圖是官方的架構(gòu)圖
從上圖中我們也能看出來prometheus的主要包含的模塊,pushgateway,exporters,retrieval,TSDB(存儲(chǔ))HTTP,PromeQl,Alertmanager。
他的大致邏輯是這樣的:
1,prometheus會(huì)定期從靜態(tài)配置的targets或者服務(wù)發(fā)現(xiàn)的targets中向部署在被監(jiān)控端的服務(wù)器上請(qǐng)求exporters來獲取數(shù)據(jù),或者由客戶端通過定時(shí)任務(wù)定期向pushgateway發(fā)送數(shù)據(jù),然后有pushgateway向prometheus發(fā)送數(shù)據(jù)。
2,當(dāng)新的數(shù)據(jù)大于配置內(nèi)存緩存區(qū)的時(shí)候,prometheus會(huì)將數(shù)據(jù)持久化到磁盤,(如果使用remote storage將持久到云端)
3,prometheus可以配合grafana通過特定的表達(dá)是來獲取我們想要的監(jiān)控圖形
4,prometheus可以配置rules(規(guī)則),然后定時(shí)查詢數(shù)據(jù),當(dāng)出發(fā)告警條件的時(shí)候,會(huì)通知alertmanager推送到配置的告警信息上去
4,alertmanager收到告警信息的時(shí)候,可以根據(jù)配置,聚合,去重,降噪最后發(fā)送警告
promethesus使用的注意事項(xiàng)
- prometheus的數(shù)據(jù)是基于時(shí)間序列(time-series)的fload64的值,
- prometheus不適合做審計(jì)計(jì)費(fèi),因?yàn)樗臄?shù)據(jù)是按照時(shí)間間隔來采集的,關(guān)注的更多是系統(tǒng)的運(yùn)行的瞬時(shí)狀態(tài)以及趨勢(shì),即使有少量的數(shù)據(jù)沒有采集也能容忍,但是審計(jì)計(jì)費(fèi)需要記錄每個(gè)請(qǐng)求,并且數(shù)據(jù)長(zhǎng)期存儲(chǔ),這個(gè)prometheus無法滿足。
prometheus和其他監(jiān)控的對(duì)比
prometheus相對(duì)于其他軟件的優(yōu)勢(shì)
1,易于管理
prometheus核心部分只有一個(gè)單獨(dú)的用golang編寫的二進(jìn)制文件,不存在任何的第三方依賴(數(shù)據(jù)庫,緩存等)。唯一需要做的就是本地磁盤和內(nèi)存,所以他可以運(yùn)行在各種平臺(tái)。
prometheus是基于pull和push模型的架構(gòu)方式,在任何地方搭建我們的監(jiān)控系統(tǒng),對(duì)于一些復(fù)雜的情況,還可以使用prometheus服務(wù)發(fā)現(xiàn)(server Discovery)的能力動(dòng)態(tài)管理監(jiān)控目標(biāo)。
2,監(jiān)控服務(wù)的內(nèi)部運(yùn)行狀態(tài)
prometheus鼓勵(lì)用戶監(jiān)控服務(wù)的內(nèi)部狀態(tài),基于prometheus豐富的client庫,用戶可以輕松的在應(yīng)用程序中添加的對(duì)prometheus的支持,從而讓用戶可以獲取服務(wù)和應(yīng)用內(nèi)部真正的運(yùn)行狀態(tài)。
3,強(qiáng)大的數(shù)據(jù)模型
所有采集的監(jiān)控?cái)?shù)據(jù)均以指標(biāo)(metric)的形式保存在內(nèi)置的時(shí)間序列數(shù)據(jù)庫當(dāng)中(TSDB)。所有的樣本除來基本的指標(biāo)名稱以外,還包含一組用于描述該樣本特征的標(biāo)簽。
4,強(qiáng)大的查詢語言PromQL
prometheus內(nèi)置來一個(gè)強(qiáng)大的數(shù)據(jù)查詢語言promQL,通過PromQL可以實(shí)現(xiàn)對(duì)監(jiān)控?cái)?shù)據(jù)的查詢/聚合。同時(shí)PromeQL也被應(yīng)用于數(shù)據(jù)可視化(grafana)以及告警中。
5,高效
對(duì)于監(jiān)控系統(tǒng)而言,大量的監(jiān)控任務(wù)必然導(dǎo)致有大量的數(shù)據(jù)產(chǎn)生。而Prometheus可以高效地處理這些數(shù)據(jù),對(duì)于單一Prometheus Server實(shí)例而言它可以處理:
- 數(shù)以百萬的監(jiān)控指標(biāo)
- 每秒處理數(shù)十萬的數(shù)據(jù)點(diǎn)。
6,可擴(kuò)展性
Prometheus是如此簡(jiǎn)單,因此你可以在每個(gè)數(shù)據(jù)中心、每個(gè)團(tuán)隊(duì)運(yùn)行獨(dú)立的Prometheus Sevrer。Prometheus對(duì)于聯(lián)邦集群的支持,可以讓多個(gè)Prometheus實(shí)例產(chǎn)生一個(gè)邏輯集群,當(dāng)單實(shí)例Prometheus Server處理的任務(wù)量過大時(shí),通過使用功能分區(qū)(sharding)+聯(lián)邦集群(federation)可以對(duì)其進(jìn)行擴(kuò)展。
7,易于集成
因?yàn)閜rometheus采用的是http的協(xié)議來進(jìn)行通信獲取數(shù)據(jù)的,所以所有語言只要支持http協(xié)議都可以被當(dāng)作exporters來使用
8,可視化
prometheus配合grafana制定精美的監(jiān)控圖表
prometheus VS zabbix
- Zabbix 使用的是 C 和 PHP, Prometheus 使用 Golang, 整體而言 Prometheus 運(yùn)行速度更快一點(diǎn)。
- Zabbix 屬于傳統(tǒng)主機(jī)監(jiān)控,主要用于物理主機(jī),交換機(jī),網(wǎng)絡(luò)等監(jiān)控,Prometheus 不僅適用主機(jī)監(jiān)控,還適用于 Cloud, SaaS, docker,kubernetes,Container 監(jiān)控。
- Zabbix 在傳統(tǒng)主機(jī)監(jiān)控方面,有更豐富的插件。
- Zabbix 可以在 WebGui 中配置很多事情,但是 Prometheus 需要手動(dòng)修改文件配置。
prometheus vs nagios
- Nagios 數(shù)據(jù)不支持自定義 Labels, 不支持查詢,告警也不支持去噪,分組, 沒有數(shù)據(jù)存儲(chǔ),如果想查詢歷史狀態(tài),需要安裝插件。
- Nagios 是上世紀(jì) 90 年代的監(jiān)控系統(tǒng),比較適合小集群或靜態(tài)系統(tǒng)的監(jiān)控,顯然 Nagios 太古老了,很多特性都沒有,相比之下Prometheus 要優(yōu)秀很多。
prometheus vs InfluxDB
- InfluxDB 是一個(gè)開源的時(shí)序數(shù)據(jù)庫,主要用于存儲(chǔ)數(shù)據(jù),如果想搭建監(jiān)控告警系統(tǒng), 需要依賴其他系統(tǒng)。
- InfluxDB 在存儲(chǔ)水平擴(kuò)展以及高可用方面做的更好, 畢竟核心是數(shù)據(jù)庫。
網(wǎng)頁題目:初識(shí)prometheus
文章出自:http://fisionsoft.com.cn/article/ghipsp.html