鯨品堂|百萬級監控指標的秒級采集與處理

2024-01-23 796

隨著云原生概念的深入普及和應用落地,企業應用架構由單體架構演進為微服務架構,應用將狀態剝離到中間件層,通過無狀態化實現更靈活的容器化部署和水平伸縮。然而,引入微服務框架、Kubernetes、分布式中間件等組件,使得系統變得復雜且“黑盒化”;被監控對象多樣化程度倍增,監控對象數量也呈指數級增長;同時業務在線化使得企業更加關注系統可觀測性,故障預警和恢復實時性訴求逐步提升,監控的實時性要求已從分鐘級提高至秒級。


對于一個企業級的監控平臺,要服務于不同的商業客戶,客戶的系統規模有不同的級別。一個典型的運營商BOSS系統項目,項目的規模一般會有500+左右的虛機,2500+左右的容器實例,每個業務產品大概會有3-5個核心業務指標。對于主機和容器,一般會要求30秒左右的采集頻度;對于核心業務指標,需要實現秒級監控。


圖片關鍵詞


從上面的數據計算分析可以看出,要滿足常規業務生產運維支撐時的持續可觀測訴求,首先需要具備百萬級指標處理能力。具體包括如下三個方面:


具備海量指標實時采集的能力


  • 海量指標實時采集是必要條件,指標采集管理模塊要能夠實時采集海量的監控對接指標數據,采集服務端要具備水平擴展的能力。

  • 低成本,高效的對接各類監控對象也是采集管理模塊重點考量的條件之一。


具備指標秒級計算的能力


實時計算框架首先應具備海量指標的秒級處理能力,隨著業務規模的擴大,系統需要能夠快速而準確地處理大量的實時數據。為了應對用戶告警場景中的多樣化需求,包括同比昨天、同比上周或同比上個月等計算規則,實時計算框架必須具備批式處理的能力,以有效規避內存占用可能出現的問題。


復雜的實時計算規則通常伴隨著較高的使用成本,因此實時計算框架在規則配置方面需要提供更低的接入門檻,以降低用戶的配置和維護成本,使其更易于自定義處理規則。


構建存算分離的架構亦是關鍵,尤其在極端情況下,即使指標存儲系統出現異常,也不能對指標的實時計算造成影響。這種存算分離的設計能夠保障實時計算的穩定性和可靠性。


具備毫秒級延遲的指標讀寫能力


實現指標存儲的高實時性是首要任務,確保能夠達到毫秒級的延遲,以滿足對實時性要求極高的業務場景。存儲效能的高效性同樣至關重要,尤其在處理海量指標數據的情境下,指標存儲服務需要具備出色的性能,以確??焖俣煽康卮鎯Υ罅繑祿?。


為了應對用戶對指標數據的實時查詢需求,指標存儲服務必須能夠提供秒級響應,確保用戶能夠及時獲取最新的數據并進行分析。在滿足企業級容災管理需求方面,指標存儲架構應具備多副本的能力,以確保數據備份和容災,從而提高整體系統的穩定性和可用性。


01

單一開源產品的端到端解決方案


目前業界完備的單一開源監控平臺端到端解決方案,比較流行的有Zabbix和Prometheus監控解決方案,它們提供了一體化的監控告警能力,具備采集、計算、存儲和告警能力。


對于Zabbix,是一個比較傳統的監控管理平臺,在設備監控方面具備比較成熟和完備的對接流程,但在面向大規模的指標流量需求上有一些不足:對于指標存儲,zabbix標準版本指標存儲默認還存儲在關系型數據庫mysql中。同時在采集領域,當前的云原生組件優先默認支持prometheus,zabbix的開源插件存在一定的滯后以及定制化成本。


原生的 Prometheus 并不支持高可用,也不能做橫向擴縮容,當集群規模較大時,單一 Prometheus 會出現性能瓶頸。同時Prometheus 告警規則是基于文件的管理模式,用戶使用門檻較高。當前雖然Thanos已經具備了prometheus集群管理的方案,但依然無法解決prometheus單一性能和運維難度高等問題。


綜上所述,不管是面對海量指標處理,還是在運維管理復雜度,二者都無法滿足企業級的商用監控訴求。


02

開源+自研的融合解決方案


當前業界監控平臺建設的主流思路是基于開源產品的能力,結合自身面對的場景進行改進和優化,以構建更貼近自身業務場景的技術解決方案。這類平臺方案通常使用時序數據庫(如InfluxDB、OpenTSDB、VictoriaMetrics、Prometheus)與流式計算框架(如Flink、Spark、Kapacitor、Prometheus)相結合,以滿足對超大規模項目的監控處理需求。


浩鯨科技監控平臺解決方案也是這種建設思路,監控平臺功能架構如下:


圖片關鍵詞


百萬級指標采集、處理平臺的改進和優化,重點要在指標采集、指標存儲和指標計算三個方面。


>>>>

遵從OpenMetrics標準協議自建分布式采集服務


在OpenMetrics協議下,業界普遍采用 Prometheus 作為采集服務的事實標準,在業界絕大多數的可觀測平臺中,Prometheus 是充當了生態適配和采集組件服務端的角色。但作為采集組件服務端,原生 Prometheus 存在以下劣勢:

  • Prometheus 作為采集服務,原生的 prometheus-remote 模塊,具備數據遠端寫的能力,但資源消耗較大。

  • 目標的管理載體是本地文件或者依賴于 consul 服務發現組件,要么不易與第三方系統集成,要么要引入新的組件,增大復雜度。

  • 缺乏足夠的中間計算的能力,OpenMetrics 協議下,指標數據類型包括counter,guage等多種。如cpu使用率指標為 count 類型的時間累計值,原始值對用戶不可讀;同時一個指標組中只有一個指標,還是以 cpu 指標舉例,對于 cpu 指標,就有 system、idle、wait、user 等指標;用戶想要了解主機 cpu 性能狀態,要查詢每個指標組。


為解決這些問題,分布式采集服務(nms-prometheus-scraper)應運而生:

  • 首要構建原則是支持 OpenMetrics 協議,可以復用業界大量的*_exporter組件,降低開發對接的成本。

  • nms-prometheus-scraper 是專門為采集服務而開發的,解決了prometheus 在只作為采集服務時內存占用超大的問題;nms-prometheus-scraper 采集服務,采集指標后不落盤,直接寫后端存儲,效率極大提升。

  • 為了應對大規模的采集需求,nms-prometheus-scraper+mysql 構建了分布式集群管理能力;采集目標和分組在mysql中管理,nms-prometheus-scraper 基于目標分組來做采集負載均衡,這種不依賴于復雜度第三方組件的設計模式,極大地降低的運維復雜度。

  • 為了提高指標的可讀性,我們通過內置通用的指標計算服務,方便用戶對指標做進一步的加工,如常見的縱表轉橫表,counter 類型的數據轉換為比率,一些數據差值計算等。


通過上述優化改進,使用 nms-prometheus-scraper 可達到更高的采集處理性能,降低損耗的設計初衷。


浩鯨科技指標采集服務平臺功能架構:


圖片關鍵詞


nms-prometheus-scraper 分布式采集服務,對比原生 prometheus 具備如下優勢:

  • 原生的分布式能力支持,可彈性伸縮。

  • 支持 Prometheus 原生服務發現能力、文件、consul、k8s等。

  • 業界絕大多數的 cmdb 后端存儲在 mysql 數據庫中,分布式采集服務增加針對mysql的目標服務發現能力,方便資源的一鍵接入服務發現。

  • 數據不落盤,采集后直寫分布式時序數據集群。

  • 絕大部分的指標原始數據不具備可讀性,需要進行函數運算才能更好的表達業務語義。分布式采集服務提供了數據運算,縱轉橫等能力,使得數據更具可讀性和符合用戶使用習慣。

  • 高性能,低損耗。3000+主機、采集頻度30s、6.7萬points/s、nms-prometheus-scraper,內存占用是Prometheus的1/8, cpu使用率是Prometheus的1/7。


>>>>

解決InfluxDB單點隱患的分布式時序存儲


InfluxDB 作為時序數據庫領域的領導者,被廣泛運用。在一些中小型的項目中,InfluxDB 以單點的高性能、易用性以及自運維等優勢是時序數據庫的首選。但原生的 InfluxDB 開源版本,不支持分布式集群的方案,無法在超大規模,超高可用性要求的項目下落地。為了解決這個問題,可采用分布式時序存儲方案,基于中間件代理模式構建分布式的 influxdb 分布式存儲集群。

  • 分布式集群首先要能夠支持 InfluxDB 的標準 http 協議,支持查詢和寫入。能夠面向上層透明,方便無縫切換。

  • 可以基于多種的分片算法來分片路由管理時序數據,達到水平擴展的能力。

  • 分布式集群要支持多副本的能力,支持副本個數可配置,解決企業級的高可用需求。


構建完的分布式指標存儲服務具備如下的優勢:

  • 分布式集群,數據支持多副本容災滿足企業級數據安全的規范和高性能的要求,可支持百萬級指標實時寫入。

  • 支持 influxdb 標準協議,面向上層透明,無縫對接,grafana,influxdb web console,InfluxDB SDK。

  • 可視化的分片管理,管理運維復雜度低。

  • 分布式集群版本支持 InfluxDB 標準函數。

  • 分布式集群支持 InfluxDB 常用命令,如數據庫管理,measurement管理,存儲策略管理,連續查詢管理等。

  • 分布式服務代理,支持數據預加工與補齊。

  • InfluxDB 支持的存儲策略,連續查詢能力,可實現自動清理和歸檔,降低現場運維投入。


>>>>

構建計算和存儲分離的流批一體計算平臺


Kapacitor 與 InfluxDB 都源于 influxData 技術棧下,基于 golang 開發,高性能,輕量化原生的 Kapacitor 存在如下三個劣勢:

  • 默認情況下,Kapacitor 可自動訂閱InfluxDB數據源,數據在寫入到 Influxdb 時,InfluxDB 會主動推送數據到訂閱者。這種模式下,如果指標存儲 InfluxDB 異常,將影響 Kapacitor 的指標計算

  • Kapacitor 是單點的模式,無法支持海量指標的計算處理需求。

  • 基本上所有的流式計算框架,計算任務的配置和管理都存在一定的門檻;而計算閾值的調整,計算任務管理是現場運維的高頻操作;降低任務配置門檻成為了分布式計算框架的核心關注點。


浩鯨科技流批一體計算平臺功能架構:

圖片關鍵詞圖片關鍵詞


基于 Kapacitor 的劣勢制約了其在大規模實時計算領域的落地效果,浩鯨科技的流批一體計算平臺,從下面幾個的架構提升點來解決這些問題:


  • 在面向單點的問題,流批一體的實時計算方案采用和分布式時序存儲方案一致的架構思路,通過中間件代理的模式來路由轉發數據,達到分布式集群的能力。Kapacitor 不再直接訂閱 InfluxDB 實例,而是直接監聽中間件代理;外部數據寫入時,寫入中間件代理,由代理配置的路由轉發規則,將數據路由到不同的kapacitor實例上。既解決了 kapacitor 單點的隱患,也解除了Kapacitor 計算程序,與 InfluxDB 存儲程序的耦合。

  • 對于運維復雜度門檻高的問題,流批一體的計算平臺,通過可視化導航管理配置界面來與 Kapacitor 的 TICKscript 做轉換,用戶配置計算規則不需要直面門檻更高的領域腳本。當前可視化配置,可以支持95%實時計算告警場景。


最終,浩鯨科技通過自建基于 OpenMetrics 規范的分布式采集服務,優化InfluxDB存儲為分布式架構,并結合Kapacitor打造流批一體計算平臺,實現了高效、可擴展且易于管理的百萬級指標采集、處理與計算解決方案。


官方微信公眾號

浩鯨云計算科技股份有限公司 版權所有 2003-2023

蘇ICP備10224443號-6       蘇公網安備 32011402011374號

亚洲精品免费视频_热99re6久精品国产首页青柠_精品国产专区91在线_亚洲美洲欧洲偷拍片区