?

基于Prometheus的高校數據中心云計算平臺監控系統研究

2024-01-14 06:35董東野田曉玲劉鵬飛
北京工業職業技術學院學報 2024年1期
關鍵詞:容器組件監控

羅 波 董東野 田曉玲 劉鵬飛

(1.北京工業職業技術學院信息工程學院,北京 100042;2.北京優特捷信息技術有限公司,北京 100102)

0 引言

隨著云計算技術的快速發展,越來越多的高校開始采用云計算平臺來支持各類教學、科研和管理工作。高校數據中心云計算平臺作為高校的核心基礎設施,承擔著大量計算、存儲和網絡資源的管理及調度任務。為了確保云計算平臺的可靠性、通用性和資源動態伸縮,需要對整個云計算平臺的應用服務進行實時監控和管理。

1 云計算平臺監控系統的研究

在監控系統中,最重要的就是采集應用程序運行的各項數據指標,這些指標能夠說明應用程序在系統中資源占用的情況。例如,當請求數較高時,系統響應變慢,如果有請求計數指標,則可以確定原因并增加計算資源?;赑rometheus的監控系統具有高度可擴展性和靈活性,能夠滿足高校數據中心云計算平臺的監控和管理需求。

1.1 監控的需求及選擇

監控是生產環境必需的一部分,是穩定服務的基礎。在高校Kubernetes容器資源管理平臺中面臨的監控需求:①合理的維護成本;②監控大量高動態的系統組件;③既要對單個組件、也要對整體區域的多個維度進行測量、分析和報警。

負責谷歌Borg集群管理系統的監控系統從自定義的腳本進化到Borgmon,提供了基于時間序列(Time-Series)的監控系統。Prometheus是一款開源的、基于谷歌Borgmon開發的監控和警報系統[1],具有高度可擴展性和靈活性,適用于大規模的分布式系統監控。高校Kubernetes容器資源管理平臺源于谷歌的Borg系統,故Prometheus系統非常適合用于Kubernetes對Pod的監控。

1.2 容器的數據收集方法

在高校Kubernetes容器資源管理平臺中,啟用的業務大部分是以Pod的方式發布[2]。cAdvisor(Container Advisor)是一個用于監控和分析容器性能的開源工具,它可以與Prometheus等監控系統集成,提供容器級別的監控數據。

cAdvisor不僅可以搜集一臺機器上所有運行的容器信息,還提供基礎查詢界面和http接口,方便Prometheus進行數據抓取,此外還可以對節點機器上的資源及容器進行實時監控和性能數據采集,包括CPU使用情況、內存使用情況、網絡吞吐量及文件系統使用情況等。cAdvisor使用Go語言開發,利用Linux的Cgroups獲取容器的資源使用信息。

1.3 采集數據的存儲方法

Prometheus將所有抓取來的服務監控數據存儲在內存數據庫,定時到磁盤上進行數據檢查(CheckPoint),將這些監控數據周期性打包到外部的時序數據庫(Time-Series Database,TSDB)中。對于一個周期性1 min的檢測任務,每次產生12 B數據,若106個時間序列數據需要存儲12 h,則可以計算出所需的存儲空間

圖1所示為數據存儲模型,主機1、主機2等分別表示每一個時間序列,每個點的數據存儲格式是(Timestamp,Value),表示時間點和具體值,縱列串起來的是一個時間序列,由一個標簽(Label)集合定義。

圖1 數據存儲模型圖

監控數據時間序列存放如圖2所示,時間序列(Time-Series)[3]被存儲為(Timestamp,Value)序列,通常稱為矢量(Vectors)。隨著時間的不斷推進,舊的數據會被忽略掉。

圖2 監控數據時間序列存放圖

存儲數據的方式是一塊固定大小的內存空間,稱為時間序列空間(Time-Series Arena)。當這塊內存空間滿了之后,由回收者(Garbage Collector)回收最老的數據。通常情況下,空間會存儲12 h的數據,底層服務存儲的時間會更少。

2 運維監控平臺設計

2.1 選擇數據監控指標圖

如圖3所示,常見的云平臺Prometheus數據監控指標可分為業務層監控、應用層監控、中間件及基礎設施類監控和系統層監控。

圖3 Prometheus數據監控指標圖

除了常見監控指標,還可以根據實驗研究需要自定義指標,對常見的監控指標進行細化。通過Prometheus提供的客戶端庫,將自定義的監控指標推送給Prometheus進行數據采集,實時掌握監控指標的運行狀態。

2.2 Prometheus組件及選擇

如圖4所示,Prometheus包含多個組件。根據作用不同,將監控系統設計為數據采集層、存儲計算層和應用層三個部分,并自行選擇組件。

圖4 Prometheus生態組件圖

監控系統中,數據采集層主要進行數據采集工作。Pushgateway組件是Prometheus的一個中間網管組件,類似于Zabbix的Zabbix-proxy,主要解決一些不支持主動拉取方式獲取數據的場景問題。例如使用自定義shell腳本監控一些臨時服務的健康狀態,但這些shell腳本無法讓Prometheus服務監控其運行的數據。具體解決方案是在shell腳本中,將臨時服務的數據按Prometheus監控數據的格式主動推送到Pushgateway組件中,然后配置Prometheus server拉取Pushgateway。

存儲計算層主要負責所有監控數據的存儲。Prometheus的設計是由服務端主動拉取監控數據,并將數據根據配置的數據格式或標簽進行轉換、刪除等操作,然后根據規則中配置的標識進行計算,按照計算結果發出告警或者不操作。以CPU使用率達到80%是一條告警規則為例,Prometheus對數據進行判斷是否符合告警規則,符合就發送消息給應用層的Alertmanager組件,不符合就不操作。最后,Prometheus根據配置時間周期將數據保存到本地或第三方存儲。

應用層實現整個集群的告警發送、分組、調度、警告抑制等功能。Alertmanager組件的作用是監聽Prometheus服務發來的消息,結合自己的配置,如等待周期、重復發送告警時間、路由匹配等配置項,將消息發送給指定的接收者;Alertmanager組件還支持多種告警接收方式,如告警頁、郵件、短信等。目前PrometheusWeb UI自帶的組件在數據展示方面不太友好,一般平臺使用Grafana組件展示Prometheus數據。Grafana支持Prometheus的PromQL語法,能夠和Prometheus數據庫交互,加上Grafana強大的UI功能,平臺可以輕松獲取很多好看的界面,調用已經做好的模板。

2.3 Prometheus部署實施

在現有高校云計算平臺中進行Prometheus部署實施,采用Operator的方式。Prometheus的版本為0.7。

(1)在“kube-prometheus-release-0.7/manifests”目錄替換鏡像源

(2)在prometheus-service.yaml文件中進行修改

(3)在grafana-service.yaml文件中進行修改

(4)部署過程

(5)“kube-prometheus-release-0.7/manifests/” 目錄下執行操作

平臺執行上述操作,部署Grafana,Prometheus及node - exporter 組件,如圖5 所示,在Kubernetes的集群中通過kubectl 命令查看service 的信息可知,在Kubernetes 集群任意節點使用“IP 地址:30090”或“IP 地址:30091”可以訪問Prometheus或 Grafana。

圖5 部署的監控組件圖

2.4 自動發現機制

服務發現可通過第三方提供的接口來實現。Prometheus查詢需要監控的靜態配置數據,獲取需要監視的目標列表,輪詢這些目標獲取監控數據。

自動發現機制便于使用者在監控系統中動態添加或者刪除資源。在Prometheus監控系統中,file_sd_configs可以用來動態添加或刪除目標(target)。

可以通過在scrape_configs添加如下配置,修改Prometheus配置文件。

files 表示文件的路徑,文件為.yaml 或.json 格式,可以用通配符*.json,讓Prometheus定期掃描這些文件并加載新配置。用refresh_interval 定義掃描的時間間隔,掃描以.json 結尾的文件。

target.json 文件包含的項與prometheus.yml 配置文件中job_name.static_configs 的項一致,用戶可以為每組targets 加labels,便于告警分組、告警抑制時使用。

3 可視化展示工具Grafana

Prometheus負責時序型指標數據的采集及存儲,而數據的分析、聚合及直觀展示等功能都由Grafana負責。在平臺中部署的Grafana組件,可以提供豐富的圖表和儀表盤,將各種數據源中的指標數據進行可視化展示和分析,是一個開源的數據可視化和監控工具[4]。Grafana支持與多種數據源集成,包括Prometheus,InfluxDB,Elasticsearch,MySQL等。用戶可以通過Grafana的Web界面創建和設計儀表盤,選擇不同的圖表類型、指標和時間范圍,自定義儀表盤的外觀和布局[5],把監控數據以圖形化形式展示。Grafana支持實時更新數據,用戶通過設置刷新頻率,使儀表盤中的數據始終保持最新狀態。此外,Grafana還提供了告警功能。用戶可以設置告警規則,當指標數據達到或超過設定的閾值時,Grafana觸發告警,發送通知給指定的用戶或團隊。如圖6所示,通過Grafana,用戶可以更直觀地了解數據的趨勢和變化,進行系統監控和性能分析。

圖6 通過Grafana的W eb界面創建的儀表盤呈現圖

4 業務壓力測試

在高校Kubernetes容器資源管理平臺中部署nginx業務容器,模擬業務入口,通過ab命令進行壓力測試,業務壓力上升,CPU指標增加。通過Grafana觀察nginx業務容器CPU的趨勢變化,并得到不同時間段的CPU資源占用率,如圖7所示,Grafana顯示的曲線圖在時間點09:06:15時,Pod的CPU資源占用率達到了71.4%,已經達到告警的范圍。后續的研究可以結合CPU資源占用率進行及時的告警處理。

圖7 不同時間段的CPU資源占用率圖

5 結論

通過分析高校Kubernetes容器資源管理平臺面臨的監控需求,在高校數據中心云計算平臺監控系統中加入Prometheus監控組件,實時監控云計算平臺中的服務和節點運行狀態,并將采集的數據存儲到Prometheus的時間序列數據庫。使用可視化展示工具Grafana對數據進行查詢、分析,并通過業務壓力測試證明了本文研究的可行性與普適性,可以在高校數據中心系統推廣使用。

猜你喜歡
容器組件監控
Different Containers不同的容器
無人機智能巡檢在光伏電站組件診斷中的應用
The Great Barrier Reef shows coral comeback
新型碎邊剪刀盤組件
U盾外殼組件注塑模具設計
難以置信的事情
你被監控了嗎?
Zabbix在ATS系統集中監控中的應用
取米
風起新一代光伏組件膜層:SSG納米自清潔膜層
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合