引言:
? ? 項(xiàng)目最近要監(jiān)控流量之類的東西漫谷,考慮到流量的快速監(jiān)控煮仇,實(shí)現(xiàn)的復(fù)雜程度以及和k8s結(jié)合的程度岖食,比較之下啸胧,選擇了springboot+prometheus+grafana這一套監(jiān)控方案,通過(guò)prometheus拉取數(shù)據(jù)滥嘴,可自定義需要展示數(shù)據(jù)木蹬,再通過(guò)監(jiān)控界面granfana實(shí)現(xiàn)各種圖表數(shù)據(jù)的展示。
一.prometheus
1.簡(jiǎn)介
Prometheus(下稱Prom)是一個(gè)基于 Metrics 的監(jiān)控系統(tǒng)若皱,與Kubernetes 同屬CNCF(Cloud Native Computing Foundation)镊叁,它提供了通用的數(shù)據(jù)模型和便捷的數(shù)據(jù)采集、存儲(chǔ)和查詢接口走触,同時(shí)基于Go 實(shí)現(xiàn)也大大降低了服務(wù)端的運(yùn)維成本晦譬,可以借助一些優(yōu)秀的圖形化工具(如 Grafana)可以實(shí)現(xiàn)友好的圖形化和報(bào)警。
Prometheus由Go語(yǔ)言編寫(xiě)而成互广,采用Pull方式獲取監(jiān)控信息敛腌,并提供了多維度的數(shù)據(jù)模型和靈活的查詢接口。Prometheus不僅可以通過(guò)靜態(tài)文件配置監(jiān)控對(duì)象惫皱,還支持自動(dòng)發(fā)現(xiàn)機(jī)制像樊,能通過(guò)Kubernetes、Consl旅敷、DNS等多種方式動(dòng)態(tài)獲取監(jiān)控對(duì)象生棍。在數(shù)據(jù)采集方面,借助Go語(yǔ)音的高并發(fā)特性媳谁,單機(jī)Prometheus可以采取數(shù)百個(gè)節(jié)點(diǎn)的監(jiān)控?cái)?shù)據(jù)涂滴;在數(shù)據(jù)存儲(chǔ)方面,隨著本地時(shí)序數(shù)據(jù)庫(kù)的不斷優(yōu)化晴音,單機(jī)Prometheus每秒可以采集一千萬(wàn)個(gè)指標(biāo)柔纵,如果需要存儲(chǔ)大量的歷史監(jiān)控?cái)?shù)據(jù),則還支持遠(yuǎn)程存儲(chǔ)锤躁。
2.原理淺析
Prometheus的基本原理是通過(guò)HTTP周期性抓取被監(jiān)控組件的狀態(tài)搁料,任意組件只要提供對(duì)應(yīng)的HTTP接口并符合Prometheus定義的數(shù)據(jù)格式,就可以介入Prometheus監(jiān)控
Prometheus Server負(fù)載定時(shí)在目標(biāo)上抓取metrics(指標(biāo))數(shù)據(jù)系羞,每個(gè)抓取目標(biāo)都需要暴露一個(gè)HTTP服務(wù)接口用于Prometheus定時(shí)抓取加缘。
3.特點(diǎn)
Prometheus 相比于其他傳統(tǒng)監(jiān)控工具主要由以下幾個(gè)特點(diǎn):
1.具有由metric名稱和鍵值對(duì)標(biāo)示的時(shí)間序列數(shù)據(jù)的多位數(shù)據(jù)模型
2.有一個(gè)靈活的查詢語(yǔ)言promQL
3.不依賴分布式存儲(chǔ),只和本地磁盤有關(guān)
4.通過(guò)HTTP的服務(wù)拉取時(shí)間序列數(shù)據(jù)
5.也支持推送的方式來(lái)添加時(shí)間序列數(shù)據(jù)
6.支持通過(guò)服務(wù)發(fā)現(xiàn)和靜態(tài)配置發(fā)現(xiàn)目標(biāo)
7.多種圖形和儀表盤支持
4.組件
Prometheus由多個(gè)組件組成觉啊,但是其中許多組件是可選的拣宏;
1.Prometheus Server 用于抓取指標(biāo)、存儲(chǔ)時(shí)間序列數(shù)據(jù)
2.exporter 暴露指標(biāo)讓任務(wù)抓取
3.Pushgateway push的方式將指標(biāo)數(shù)據(jù)推送到網(wǎng)關(guān)
4.alertmanager 處理報(bào)警的報(bào)警組件
5.adhoc 用于數(shù)據(jù)查詢
二.grafana
1.簡(jiǎn)介
Grafana是一個(gè)跨平臺(tái)的開(kāi)源的度量分析和可視化工具杠人,可以通過(guò)將采集的數(shù)據(jù)查詢?nèi)缓罂梢暬恼故狙⒓皶r(shí)通知。
2.特點(diǎn)
1.展示方式:快速靈活的客戶端圖表嗡善,面板插件有許多不同方式的可視化指標(biāo)和日志辑莫,官方庫(kù)中具有豐富的儀表盤插件,比如熱圖罩引、折線圖各吨、圖表等多種展示方式;
2.數(shù)據(jù)源:Graphite袁铐,InfluxDB揭蜒,OpenTSDB横浑,Prometheus,Elasticsearch屉更,CloudWatch和KairosDB等徙融;
3.通知提醒:以可視方式定義最重要指標(biāo)的警報(bào)規(guī)則,Grafana將不斷計(jì)算并發(fā)送通知瑰谜,在數(shù)據(jù)達(dá)到閾值時(shí)通過(guò)Slack欺冀、PagerDuty等獲得通知;
4.混合展示:在同一圖表中混合使用不同的數(shù)據(jù)源萨脑,可以基于每個(gè)查詢指定數(shù)據(jù)源隐轩,甚至自定義數(shù)據(jù)源;
5.注釋:使用來(lái)自不同數(shù)據(jù)源的豐富事件注釋圖表渤早,將鼠標(biāo)懸停在事件上會(huì)顯示完整的事件元數(shù)據(jù)和標(biāo)記职车;
6.過(guò)濾器:Ad-hoc過(guò)濾器允許動(dòng)態(tài)創(chuàng)建新的鍵/值過(guò)濾器,這些過(guò)濾器會(huì)自動(dòng)應(yīng)用于使用該數(shù)據(jù)源的所有查詢