海量監控數據處理如何做,看華為雲SRE案例分享

来源:https://www.cnblogs.com/huaweiyun/archive/2022/12/20/16994327.html
-Advertisement-
Play Games

摘要:openGemini的設計和優化都是根據時序數據特點而來,在面對海量運維監控數據處理需求時,openGemini顯然更加有針對性。 IT運維誕生於最早的信息化時代。在信息化時代,企業的信息化系統,主要為了滿足企業內部管理的需求。通常是集中、可控和固化的煙囪式架構。傳統IT運維,以人力運維為主, ...


摘要:openGemini的設計和優化都是根據時序數據特點而來,在面對海量運維監控數據處理需求時,openGemini顯然更加有針對性。

IT運維誕生於最早的信息化時代。在信息化時代,企業的信息化系統,主要為了滿足企業內部管理的需求。通常是集中、可控和固化的煙囪式架構。傳統IT運維,以人力運維為主,在單點式和煙囪式的架構中,的確起到了非常重要的作用。

我們知道,傳統運維模式關註的是單台IT設備的故障率或單套應用系統的可用性,系統與系統之間,設備與設備之間,是彼此孤立的,因此產生的數據量也相對有限。

但進入到雲計算時代之後,IT的邊界被完全打開,更多的聯接、更多的設備、更多的服務,使得系統規模開始變得越來越大,隨著監控粒度越來越細,監控數據呈現出爆炸式增長的態勢,每天將產生上百TB的數據,如何對如此海量的數據進行處理成為華為雲SRE面臨的一大難題

業務背景

華為雲SRE基礎設施監控系統是一個先進的平臺,用於監控和管理華為雲在全球各個region的基礎設施。該系統需要實時監測各種資源,包括網路、存儲、計算、安全和各個雲服務。

現狀

業務誕生之初,適逢“大數據”時代,Hadoop作為批量離線計算系統已經得到了業界的普遍認可,並經過了工業上的驗證,所以HBase具備“站在巨人肩膀之上”的優勢,其發展勢頭非常迅猛。HBase還是一種NoSQL資料庫,支持水平擴展和大規模數據的存儲能力,故選型HBase。當然內部也基於HBase做過很多優化,比如縮短row key,減少Key-Value數,按照時間維度分表,將單行多列變為單行單列。

痛點

隨著華為雲業務擴展,特別是近些年,華為雲在全球佈局的速度也突飛猛進,所要監控的設備也越來越多,顆粒度越來越細,查詢場景也逐漸豐富,HBase明顯已經無法滿足當前業務需要,問題主要體現在以下幾點:

  1. HBase不支持高階聚合查詢,時間範圍太大的查詢性能比較差,無法渲染圖表
  2. HBase沒有特定的壓縮演算法,應對每天上百TB數據,存儲成本長期居高不下
  3. HBase部署需要依賴第三方組件HDFS和Zookeeper,運維成本高

技術選型

為瞭解決這些痛點,我們將目光投向時下流行的時序資料庫(Time-Series Database)。首先在DBEngines排名前20的開源時序資料庫中甄別,排除商業品類、開源協議不友好的,初步擬選了InfluxDB、Druid、Prometheus、OpenTSDB幾款,經過技術對比,InfluxDB只有單機版,功能和性能受限大,故排除。OpenTSDB底層存儲仍然是HBase,存儲成本問題仍然存在,故排除。Prometheus不適合在大規模數據場景下使用。Druid是一個實時分析型的資料庫,用於大規模實時數據導入、快速查詢分析的場景,基本滿足需求,但在時空聚合查詢場景時延相對較大。徘徊之際,瞭解到華為雲開源的openGemini,經過測試對比,openGemini在數據壓縮效率、讀寫性能方面優勢明顯,經過和openGemini社區團隊交流後,最後選擇了openGemini存儲全網華為雲SRE基礎設施監控數據。

性能測試

寫性能

上述測試結果顯示了openGemini 從4U擴展到32U的性能表現,可以看出:

  • 從4U到32U,openGemini寫入性能可以線性擴展(擴展比為0.8)
  • 從4U的155萬Metrics/s平穩增長到32U的560萬Metrics/s

查詢性能

查詢性能是我們重點考慮的方面,測試工具Jmeter,測試場景從業務中挑選了使用頻率較高的三種類型查詢語句,在此基礎上變化查詢併發數、查詢時間範圍、聚合運算元等進行測試。

測試語句舉例:

測試規格與集群部署

測試結果(20併發6h 表示查詢併發為20,時間範圍為6小時)

精確查詢整體性能表現如下:

時間聚合查詢整體性能表現如下

時空聚合查詢整體性能表現如下

測試結論

整體上,openGemini在上述三種查詢場景下,相比Druid性能大幅領先。openGemini寫入性能滿足目前同樣流量大小的HBase集群,而且使用的規模要小不少。此外,openGemini不依賴任何第三方組件或應用,同時還有非常豐富的監控指標,更好的觀察系統的運行狀況,快速定位和解決問題。

遷移方案

數據雙寫

採用openGemini後,並沒有立即拆除已有系統。主要考慮兩方面:

  1. 如果openGemini出現問題可以迅速把流量切回去,保證現網業務運行平穩。
  2. HBase的數據不能直接遷移到openGemini,如果開發遷移工具成本又很高,故HBase和openGemini雙寫,在此過渡期間是個好的辦法。

查詢切流

我們給openGemini和HBase配置了不同的DNS,切換DNS就可以非常方便地查詢不同資料庫的數據,對現網可靠性也不會產生影響。

實際效果

截止目前,已實現全網流量切入openGemini,系統平穩運行超過半年。

和之前的HBase對比:

  1. 單region下,HBase集群規模從數百計算節點降至數十節點,規模縮減60%以上
  2. 截止目前,上線集群平均每秒寫入達到1.81億條指標數據,存儲空間節約超90%,CPU資源上可以節省68%,記憶體資源可以節省50%
  3. 查詢性能大幅提升

總結

openGemini的設計和優化都是根據時序數據特點而來,在面對海量運維監控數據處理需求時,openGemini顯然更加有針對性,而以上的事實證明,在運維監控場景中,openGemini的應用能夠提升運維效率,降低運維成本,真正幫助企業實現降本增效。

 

點擊關註,第一時間瞭解華為雲新鮮技術~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 代碼里我們經常會出現大量的條件判斷,在這種情況下,我們可以實現狀態機避免過度使用 有一種方式是把各種狀態歸為各種狀態類 還有一種方式是修改實例的__class__屬性 1 """ 2 狀態機的實現 3 修改實例的__class__屬性 4 """ 5 6 7 class Connection: 8 ...
  • JZ47 禮物的最大價值 描述 描述 在一個m\times nm×n的棋盤的每一格都放有一個禮物,每個禮物都有一定的價值(價值大於 0)。你可以從棋盤的左上角開始拿格子里的禮物,並每次向右或者向下移動一格、直到到達棋盤的右下角。給定一個棋盤及其上面的禮物的價值,請計算你最多能拿到多少價值的禮物? 如 ...
  • 面向對象 1.面向對象簡介 類(Class): 用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。 方法:類中定義的函數。 類變數:類變數在整個實例化的對象中是公用的。類變數定義在類中且在函數體之外。類變數通常不作為實例變數使用。 數據成員:類變數 ...
  • 一:背景 1.講故事 今天是🐏的第四天,頭終於不巨疼了,寫文章已經沒什麼問題,趕緊爬起來寫。 這個月初有位朋友找到我,說他的程式出現了CPU爆高,讓我幫忙看下怎麼回事,簡單分析了下有兩點比較有意思。 這是一個安全生產的信息管理平臺,第一次聽說,我的格局小了。 這是一個經典的 CPU 爆高問題,過往 ...
  • 一 引入 在設計設備界面時,經常會有一種需求,展示一個閥門,閥門有通斷兩種狀態: 二 CommonValveControl 考慮實現一個自定義控制項,CommonValveControl。 使用自定義控制項比用戶控制項更靈活,更具擴展性,可以使用不同的樣式和模板。 CommonValveControl定義 ...
  • 說明 基於微服務項目,產生的的多項目倉庫管理腳本。可直接保存 shell 腳本後酌情修改後試用 目錄結構 xxxx Xxx1Api/ Xxx2Api/ git_clone_api.sh git_branch_dev.sh git_pull_all.sh git_status.sh api-build ...
  • 1. 查看當做操作目錄位置 > pwd2. 查看(當前)目錄裡邊的文件內容 > ls //list > ls -l 或ll //顯示文件的詳細信息 > ls -al //all顯示文件的詳細信息(包括隱藏文件) > ls -a //顯示目錄全部文件名字(包括隱藏文件) > ls [-al] 目錄 / ...
  • “數據湖”、“湖倉一體”及“流批一體”等概念,是近年來大數據領域熱度最高的辭彙,在各大互聯網公司掀起了一波波的熱潮,各家公司紛紛推出了自己的技術方案,其中作為全鏈路數字化技術與服務提供商的袋鼠雲,在探索數據湖架構的早期,就調研並選用了Iceberg作為基礎框架,在落地過程中深度使用了Iceberg並 ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...