溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes監(jiān)控實踐(2):可行監(jiān)控方案之Prometheus和Sensu

發(fā)布時間:2020-06-27 09:02:59 來源:網(wǎng)絡 閱讀:1272 作者:宜信技術 欄目:云計算

摘要:本文介紹兩個可行的K8s監(jiān)控方案:Prometheus和Sensu。兩個方案都能全面提供系統(tǒng)級的監(jiān)控數(shù)據(jù),幫助開發(fā)人員跟蹤K8s關鍵組件的性能、定位故障、接收預警。

拓展閱讀:Kubernetes監(jiān)控實踐(1):K8s的工作原理與監(jiān)控實踐

一、K8s監(jiān)控之Prometheus

1.1 簡介

Prometheus是針對容器和微服務的開源監(jiān)控預警工具,功能穩(wěn)健,適用于開發(fā)流程中的云端管理員和開發(fā)人員等各個相關方。Prometheus定時聚合配置對象中的指標數(shù)據(jù),評估規(guī)則表達式,展示結(jié)果,發(fā)送預警。

Prometheus不僅能夠監(jiān)控預定義指標,還能實現(xiàn)多維數(shù)據(jù)模型,進行深度分析,并針對多個指標建立關聯(lián),從多個角度為開發(fā)人員和管理員提供數(shù)據(jù)支持。

1.2 工作原理

Prometheus是K8s環(huán)境的附加層。首次安裝時應定義數(shù)據(jù)采集參數(shù)和數(shù)據(jù)采集時間間隔。Prometheus既能實時監(jiān)控K8s節(jié)點,也能對監(jiān)控數(shù)據(jù)進行定時分析。Prometheus也可以針對節(jié)點失效等故障發(fā)送預警。

1.3 Prometheus Operator

很多用戶會混淆controller和operator。K8s Operator是指Controller向K8s API中添加新的對象、配置管理Prometheus等應用的模式。簡而言之,operator是針對特定領域的controller。

PrometheusOperator簡化了Prometheus在K8s中的運行,不需要改變K8s的配置。使用Prometheus Operator可以輕松監(jiān)控K8s的服務??梢酝ㄟ^預定義的.yml文件運行Prometheus。Prometheus Operator能夠創(chuàng)建、配置并管理K8s上的所有監(jiān)控實例。部署新應用時,K8s會創(chuàng)建新的pod(容器)。創(chuàng)建完畢后,原有pod會被銷毀。Prometheus持續(xù)監(jiān)控API,如發(fā)現(xiàn)不一致,則基于服務或pod變化創(chuàng)建新的Prometheus配置。

1.4 核心組件

作為一款穩(wěn)健的監(jiān)控工具,Prometheus從服務上拉取數(shù)據(jù),不需要服務主動推送數(shù)據(jù)。不過Prometheus提供推送入口,但無法拉取數(shù)據(jù)時可以接受服務推送上來的數(shù)據(jù)。

此外,Prometheus支持將時間序列與指標名稱和鍵值對關聯(lián)起來,簡化了對多云端的監(jiān)控。Prometheus不僅監(jiān)控應用全局,還能鉆取到微服務層面。用戶可通過查詢功能管理數(shù)據(jù),了解應用狀況;也可以使用PromQL創(chuàng)建圖表和表格,實現(xiàn)數(shù)據(jù)可視化,并根據(jù)具體參數(shù)生成預警。

Prometheus的Web控制臺展示了所有功能和工具。用戶可通過正則表達式和高級PromQL檢索條件創(chuàng)建數(shù)據(jù)集和預警。

1.5 優(yōu)勢

Prometheus最大的優(yōu)勢在于簡單靈活,可以實現(xiàn)監(jiān)控的多維數(shù)據(jù)模型。用戶可以搭建容器集群的監(jiān)控框架,還可以結(jié)合Grafana,進一步提高監(jiān)控數(shù)據(jù)的可視化水平。

Prometheus可以通過K8s的本地服務發(fā)現(xiàn)配置采集node、pod和服務指標。用戶可直接定義表達式,創(chuàng)建預警,不需要在不同的監(jiān)控系統(tǒng)中來回切換。

Prometheus的抓取能力能夠集成到K8s、Docker和StatsD等工具中。用戶還可以通過Web GUI配置預警、管理圖表。

不過Prometheus也存在不足:數(shù)據(jù)模型受限。Prometheus默認的時序數(shù)據(jù)采集模型有利有弊:一方面,這種模型有助于按照標準格式采集數(shù)據(jù);另一方面,標準化數(shù)據(jù)格式導致數(shù)據(jù)模型受限。Prometheus通過discovery機制與K8s保持通信,因此存在延遲。

二、K8s監(jiān)控之Sensu

2.1 簡介

Sensu是多云端容器基礎設施監(jiān)控工具。Sensu agent是跨平臺事件生成器,用戶可通過執(zhí)行service check監(jiān)控系統(tǒng)和服務的健康狀況,同時采集分析metrics,不僅提供預警或事件管理功能、監(jiān)控API、客戶端庫以及多腳本或編程語言插件,還支持自定義工作流,豐富了Sensu能力。

Prometheus通過拉取的方式主動抓取數(shù)據(jù),而Sensu則采用消息總線的通信機制,通過發(fā)布/訂閱(Pub/Sub)的方式推送或拉取數(shù)據(jù)。

2.2 工作原理

Sensu使用本地插件從StatsD庫、Prometheus exporter、Nagios插件、SNMP陷阱等主流程序中采集數(shù)據(jù)。不同于Prometheus等其他監(jiān)控工具,Sensu開箱即用,支持多云端環(huán)境,用戶配置框架后即可提供高可用性。

Sensu提供event filter、mutator和operator handler,支持創(chuàng)建并自動化模型工作量。這樣,外部監(jiān)控工具的數(shù)據(jù)便可與Sensu的監(jiān)控數(shù)據(jù)整合,形成基于事件的監(jiān)控路徑。

Kubernetes監(jiān)控實踐(2):可行監(jiān)控方案之Prometheus和Sensu

2.3 核心組件

Sensu針對K8s容器優(yōu)化了自動發(fā)現(xiàn)能力。用戶可針對K8s和Docker等容器環(huán)境輕松配置監(jiān)控check和collector,也可以針對K8s所有組件和運行在K8s上的應用配置多個check。

Sensu也支持本地集成和插件,可以與日志工具和Prometheus同時使用。用戶可同時運行Sensu和Prometheus,處理不同的數(shù)據(jù)集。Sensu可以采集StatsD metrics,并將采集結(jié)果寫入Prometheus。

Sensu還能在K8s環(huán)境中運行。假設一開始將Sensu部署在某個容器中,后來決定將整個應用遷移到其他容器環(huán)境中。遷移完成后,Sensu agent依然能夠在新的環(huán)境中正常運行,也能被Sensu發(fā)現(xiàn),因為Sensu具備自動發(fā)現(xiàn)機制。

2.4 在K8s中的應用

Sensu可擴展性強,可隨著部署應用和云環(huán)境的增加不斷擴展,提供具體的功能監(jiān)控服務。Sensu監(jiān)控對象的數(shù)量沒有上限,也不會因為監(jiān)控對象的增加變得更加復雜。

三、K8s監(jiān)控之Sensu+Prometheus

同時運行Sensu和Prometheus能夠提高監(jiān)控的可見性,實現(xiàn)各自功能的優(yōu)勢互補。

3.1 工作原理

SensuPrometheus Collector是Sensu Check插件,聚合從Prometheus exporter或Prometheus query API抓取的數(shù)據(jù)。采集的數(shù)據(jù)以Influx(默認)、Graphite、JSON格式存儲在STDOUT中。

SensuPrometheus Collector集成了Sensu的工作量自動化能力和Prometheus的數(shù)據(jù)抓取能力。用戶可根據(jù)需求自行設計實現(xiàn)代碼和預警接收時間。Sensu還可以將采集到的metrics數(shù)據(jù)存儲到InfluxDB、Graphite和Prometheus等外部時序數(shù)據(jù)集中。

3.2 安裝Sensu PrometheusCollector

用戶可以通過Sensu的資產(chǎn)索引庫Bonsai發(fā)現(xiàn)、下載、共享資產(chǎn)。點擊Bonsai信息頁面的下載按鈕,下載Sensu后端平臺和架構的資產(chǎn)定義。收到check、filter、mutator或handler請求時,Sensu會根據(jù)資產(chǎn)定義下載驗證資產(chǎn)。

下載資產(chǎn)定義后,可以通過Sensu的資源管理命令行工具sensuctl進行資產(chǎn)注冊,然后創(chuàng)建監(jiān)控工作流。

下方是Prometheus collector的資產(chǎn)定義及相應的Linux sensuctl命令:

Kubernetes監(jiān)控實踐(2):可行監(jiān)控方案之Prometheus和Sensu

Kubernetes監(jiān)控實踐(2):可行監(jiān)控方案之Prometheus和Sensu

Kubernetes監(jiān)控實踐(2):可行監(jiān)控方案之Prometheus和Sensu

下方為Prometheus Collector的check實例:

Kubernetes監(jiān)控實踐(2):可行監(jiān)控方案之Prometheus和Sensu

Kubernetes監(jiān)控實踐(2):可行監(jiān)控方案之Prometheus和Sensu

3.3 優(yōu)勢

同時運行Sensu和Prometheus具有下列優(yōu)勢:

  • 既能監(jiān)控K8s集群的健康狀況又能動態(tài)監(jiān)控周邊基礎設施的健康狀況,并采集相關指標。
  • 既能實現(xiàn)問題自動發(fā)現(xiàn),又能通過自動化工作流簡化監(jiān)控流程。
  • 同時運行Prometheus和Sensu能夠獲得更多上下文信息,實現(xiàn)更細粒度的數(shù)據(jù)抓取分析。
  • Sensu采用標準通信密碼,可通過單個agent安全采集傳輸數(shù)據(jù)。
  • 便于管理配置監(jiān)控設置。
  • 能夠監(jiān)控整個基礎設施。

四、結(jié)論

Sensu能夠監(jiān)控整個基礎設施,且定制化水平高,上下文更豐富。Prometheus模型穩(wěn)健,能夠?qū)崿F(xiàn)深度數(shù)據(jù)鉆??;Sensu則采用行業(yè)標準技術和格式(如Nagios和StatsD),監(jiān)控整個基礎設施。Sensu能夠與Prometheus相互補充,提供更加豐富的上下文信息。

隨著我們對軟件依賴程度的加深,軟件的可用性和故障修復時間對企業(yè)的存活非常重要。因此,只有充分了解系統(tǒng)才能克服這些挑戰(zhàn),基礎設施和應用監(jiān)控正是關鍵的一環(huán)。要想充分利用K8s的能力,必須實施統(tǒng)一的監(jiān)控解決方案,實現(xiàn)新老技術的有效銜接。

作者:STEFAN THORPE

原文鏈接:https://dzone.com/refcardz/monitoring-kubernetes

首發(fā)于UAVStack智能運維

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI