從服務(wù)和基礎(chǔ)設(shè)施上收集的度量指標(biāo)發(fā)送到能夠聚合和展示這些數(shù)據(jù)的系統(tǒng)上。這個(gè)系統(tǒng)會(huì)利用所收集的度量指標(biāo)來提供告警功能。為了達(dá)到這一目的,使用Prometheus來收集度量指標(biāo)并使用Grafana來展示這些數(shù)據(jù)拾并。
1)Prometheus是一個(gè)開源的系統(tǒng)監(jiān)控和告警工具箱誓酒,最初由SoundCloud公司開發(fā),現(xiàn)在是一個(gè)不依賴于任何公司的獨(dú)立開源項(xiàng)目东羹。
2)Grafana是一款能夠在Graphite剂桥、InfluxDB和Prometheus等各種度量指標(biāo)數(shù)據(jù)源之上構(gòu)建可視化儀表盤的工具。
Prometheus使用前提是已經(jīng)有組件實(shí)現(xiàn)了度量指標(biāo)并且提供Prometheus所需的格式属提。
同時(shí)使用Prometheus和StatsD兩種度量指標(biāo)來展示如何讓兩種不同的度量指標(biāo)收集協(xié)議共存权逗。StatsD是基于數(shù)據(jù)推送的工具美尸,而Prometheus是基于數(shù)據(jù)拉取的工具,使用StatsD的系統(tǒng)會(huì)將數(shù)據(jù)推送到采集服務(wù)上斟薇,而Prometheus會(huì)從源系統(tǒng)中拉取數(shù)據(jù)师坎。
將重點(diǎn)放在Prometheus的配置和Grafana上創(chuàng)建儀表盤,之后開始監(jiān)控各個(gè)服務(wù)和事件隊(duì)列堪滨。
Prometheus配置
global:
? scrape_interval: 5s ---? 設(shè)置Prometheus抓取所配置的目標(biāo)度量指標(biāo)的時(shí)間間隔
? evaluation_interval: 10s
? external_labels:
? ? ? monitor: 'simplebank-demo'
alerting:
? alertmanagers:
? - static_configs:
? ? - targets:
scrape_configs: --- 用來配置要抓取的目標(biāo)
? - job_name: 'statsd_exporter' ---? 作為抓取配置的任務(wù)標(biāo)簽
? ? static_configs:
? ? ? - targets: ['statsd-exporter:9102']
? ? ? ? labels:
? ? ? ? ? exporter: 'statsd'
? ? metrics_path: '/metrics'
? - job_name: 'rabbitmq'
? ? static_configs:
? ? ? - targets: ['rabbitmq:15672'] ---? 目標(biāo)主機(jī)和度量指標(biāo)途徑拼接到一起可以確定收集度量指標(biāo)所用的URL胯陋。如果默認(rèn)使用http,URL是“http://rabbitmq:15672/api/metrics”
? ? ? ? labels:
? ? ? ? ? exporter: 'rabbitmq'
? ? metrics_path: '/api/metrics'
設(shè)置Grafana
為了在Grafana系統(tǒng)中接收度量指標(biāo)袱箱,需要設(shè)置數(shù)據(jù)源遏乔。首先,啟動(dòng)Grafana发笔,可以通過3900端口訪問Grafana盟萨。登錄界面,輸入用戶名和密碼都是admin了讨。
登錄成功后捻激,點(diǎn)擊Add Data Source選項(xiàng),進(jìn)入Edit data source界面前计。為了在Grafana中配置一個(gè)Prometheus數(shù)據(jù)源胞谭,需要將Type設(shè)置為Prometheus,然后插入Prometheus服務(wù)實(shí)例的URL男杈,例如http://prometheus:9090丈屹。
單擊Save & Test按鈕,會(huì)立刻收到數(shù)據(jù)源狀態(tài)的反饋信息势就。如果Prometheus運(yùn)行正常泉瞻,就可以開始使用Grafana來為收集的度量指標(biāo)搭建儀表盤了。
監(jiān)控基礎(chǔ)設(shè)施度量指標(biāo):事件隊(duì)列
為了配置一套監(jiān)控RabbitMQ的儀表盤苞冯,需要用到j(luò)son格式的配置文件袖牙。在源代碼庫中,找到一個(gè)grafana文件夾舅锄,RabbitMQ Metrics.json文件記錄了儀表盤的布局以及所要收集的度量指標(biāo)的配置信息鞭达。導(dǎo)入該文件后立刻便擁有了一套監(jiān)控的RabbitMQ儀表盤。
頁面展示了一個(gè)監(jiān)控服務(wù)器運(yùn)行狀態(tài)的監(jiān)視器皇忿,上面會(huì)顯示up或者down畴蹭,此外頁面上以圖表形式展示了每臺(tái)主機(jī)上的交換(exchange)數(shù)、通道(channel)數(shù)鳍烁、消費(fèi)者(consumer)數(shù)量叨襟、連接數(shù)(connection)、隊(duì)列數(shù)(queue)幔荒、每臺(tái)主機(jī)的消息量以及每個(gè)隊(duì)列的消息量糊闽。
匯總:grafana支持某個(gè)基礎(chǔ)設(shè)施度量指標(biāo)模板導(dǎo)入直接監(jiān)控梳玫。
疑問點(diǎn):grafana怎么知道哪個(gè)基礎(chǔ)設(shè)施?
告警設(shè)置
前面已經(jīng)在收集和存儲(chǔ)度量指標(biāo)了右犹,在指定度量指標(biāo)的數(shù)值背離了所謂的正常值可以發(fā)送告警信息提澎。這可以是指定請(qǐng)求的處理時(shí)間增大,也可以是錯(cuò)誤率升高念链,還可以是某個(gè)計(jì)數(shù)器異常增加等等盼忌。
通過網(wǎng)關(guān)服務(wù)提交出售訂單后,會(huì)發(fā)生許多事情掂墓。這會(huì)觸發(fā)許多事件消息谦纱,系統(tǒng)的瓶頸在于market服務(wù)處理訂單發(fā)布事件的速度。在market place order隊(duì)列中的消息量超過某個(gè)閾值時(shí)君编,設(shè)置一個(gè)告警來發(fā)送一條消息服协。可以配置多種通知方式:電子郵件啦粹、slack、pagerduty窘游、pingdom唠椭、webhook等。
在告警系統(tǒng)中設(shè)置webhook通知忍饰,每次消息隊(duì)列中的消息數(shù)超過100時(shí)贪嫂,就會(huì)將告警消息通知給webhook。
同樣可以使用Grafana來設(shè)置告警艾蓝,并且這些告警會(huì)展示在與之相關(guān)的面板上力崇。既可以接收告警通知,又可以查看面板上之前的告警記錄赢织。
首先添加一個(gè)通知渠道以傳播告警事件亮靴。
1)單擊屏幕左上角的Grafana圖標(biāo)。
2)在Alerting菜單中于置,選擇Notification? Channels茧吊。
3)輸入渠道的名稱并選擇類型為webhook,然后選中Send on All Alerts選項(xiàng)八毯。
4)輸入接收告警服務(wù)的URL搓侄。可以使用告警服務(wù)的URL话速,并監(jiān)聽POST請(qǐng)求讶踪。
5)單擊Send Test按鈕驗(yàn)證該功能是否運(yùn)行正常。如果正常泊交,單擊Save按鈕保存這些修改信息乳讥。
在創(chuàng)建的RabbitMQ儀表盤下的消息隊(duì)列面板上配置告警柱查。單擊Messages/Queue面板的標(biāo)題會(huì)彈出一個(gè)菜單,然后選擇Edit雏婶。就可以在Alert選項(xiàng)卡下創(chuàng)建告警了
在Alert Config部分物赶,添加告警名稱以及期望條件的檢查頻率以30s為例,接下來設(shè)置告警條件(condition)留晚。將告警設(shè)置為在最近1min內(nèi)一旦從隊(duì)列A中搜集的值超過100就通知用戶酵紫。
在Alert選項(xiàng)卡下,可以查看所配置告警的歷史記錄错维。
至此已經(jīng)配置了一套收集度量指標(biāo)數(shù)據(jù)的監(jiān)控基礎(chǔ)設(shè)施奖地,這些數(shù)據(jù)包括各個(gè)服務(wù)發(fā)送的數(shù)據(jù)以及這些服務(wù)進(jìn)行異步通信時(shí)所使用的核心組件(消息隊(duì)列的數(shù)據(jù))。
摘取自 摩根·布魯斯和保羅·A.佩雷拉的《微服務(wù)實(shí)戰(zhàn)》