云GaussDB(for openGauss)專場直播第4期:用對遷移工具,遷移也可以很簡單">華為云GaussDB(for openGauss)專場直播第4期:用對遷移工具,遷移也可以很簡單
634
2025-04-02
背景
GaussDB(for Influx)是一款基于華為自研的計算存儲分離架構,兼容InfluxDB生態的云原生NoSQL時序數據庫,提供一站式時序數據存儲,分析,展示功能。其中時序洞察提供了針對時序數據的可視化功能。
在監控領域,我們經常見到絢麗的監控大屏,實時反映整個系統運行情況,就是監控看板功能。通過監控看板,可以高效的運用監控數據輔助定位故障、性能調優、容量規劃;可以查看各產品的監控數據走勢及對比;可以跨產品展示關鍵指標的實時數據、歷史數據和整體走勢,業務人員可以根據該信息對業務進行及時調整。
監控看板系統的特點和挑戰
看板功能極大的提升了業務的分析和運維的效率,包括可視化的展示多個監控指標的走勢,展示多個設備某一監控指標的聚合數據;跨設備展示關鍵指標,掌握不同設備之間關鍵指標的對比和變化;可自定義設置數據樣式,數據自動刷新等等。比如下圖是對于服務器的監控包括,虛擬機的內存、CPU、磁盤、IO等指標進行可視化展示:
在使用過程中存在以下幾個痛點:
隨著物聯網,車聯網,數據中心等規模不斷擴大,需要監控的指標數據量迅速增長,業務的運維和監控壓力不斷增大;有時候一個看板需要整面墻來展示,需要同時展示上千指標的實時變化情況。而每次看板上指標的更新背后就是對數據庫進行一次查詢;以華為云監控為例,華為云目前提供了200+的各種服務,每個服務都有上萬個實例需要監控;比如數據庫服務,就有近10萬個實例需要監控;每個實例都會監控多個指標信息,例如CPU,內存,磁盤使用率,磁盤讀寫IO,網絡出口流量,入口流量,TCP鏈接等基本信息,還有包括TPS,QPS,緩存命中率,主從延遲,慢查詢,鎖狀態,鏈接數,讀寫延遲,讀寫并發等數據庫特有的信息,總計有50多個基礎指標需要監控。因此華為云監控業務當前基礎的服務需要每次查詢超過20000個查詢語句,這些查詢每分鐘下發一次;
傳統的zabbix,prometheus,druid等監控工具已經無法滿足業務的需求,其多數只有單機版部署能力,處理能力和擴展能力有限。
在運維監控場景下,需要實時關注業務的變化情況,因此看板的刷新頻次一般是秒級,這就要求所有的查詢必須在秒級甚至毫秒級內完成,由于監控數據量龐大,時間線數量多,加之查詢并發大,如何滿足查詢時延的要求,是時序數據庫共同面臨的一個技術挑戰。
而現有產品大多數在批量查詢場景下,查詢延遲大;例如開源版的InfluxDB針對批量的查詢,在內部也是串行執行的,這樣總體的查詢返回時間基本上在秒級別以上。OpenTSDB只有在rowkey上有索引,在多維查找時只能scan,延遲非常高。
GaussDB(for Influx)在監控看板中的優勢
在云計算,物聯網,車聯網等大規模業務場景下,監控系統不僅僅只是反饋當前業務狀態,還要提供故障預測,告警預測,性能調優,資源容量規劃,自動化運維等高級功能;業界也涌現出一些專門針對時序數據進行存儲,分析和展示的產品;當前大多數自建監控看板的實現是基于prometheus和Grafana等不同開源組件來搭建,而GaussDB(for Influx)提供數據存儲、分析、可視化一站式功能。
GaussDB(for Influx)通過實現Hint查詢,rollupcache,批量查詢優化等功能。有效降低了查詢時延。下面是針對幾種常見查詢和企業版influxdb的時延對比。
預設數據為:
時延對比:
如圖所示,在常見的查詢模型中GaussDB(for Influx)查詢時延明顯優于企業版的influxdb,特別是在帶有聚合算子的查詢中時延只有企業版influxdb的十分之一。接下來詳細介紹下Gaussdb(for Influx)針對看板場景所做的具體優化工作。
GaussDB(for Influx)內部支持倒排索引,大部分監控場景的查詢性能和效率得到了很大的提升。但是在大批量查詢的場景下,還是無法實現毫秒級的查詢性能要求。查詢語句按照涉及的時間線可以分為單時間線查詢和多時間線查詢;單時間線查詢是指,查詢條件可以唯一確認一個時間線的查詢;在看板場景中經常會用這類查詢,比如查詢某臺設備的CPU指標。針對單時間線數據查詢,GaussDB(for Influx)設計了Hint功能。
常規的查詢都是解析查詢語句后,通過倒排索引的功能查找到具體的數據分布位置,再依據這些信息去store層讀取具體的數據,而GaussDB(for Influx)的Hint功能允許客戶在執行單時間線查詢時不用通過倒排索引去查找,而是直接能獲取到具體數據的分布位置,從而直接去store層讀取數據,這一功能大大降低查詢的時延。
下圖為hint查詢和非hint查詢的時延對比,測試條件為:300萬時間線,單時間線查詢;執行查詢1000次平均時延。
圖中明顯可以看出,在單時間線查詢場景下,hint查詢時延明顯優于非hint查詢。
在監控看板業務場景下,每次數據更新時下發的都是同樣的查詢語句,只是時間上的差異。
例如上圖展示的一個監控CPU指標的看板,每次刷新時間為10s,每次展示15分鐘的數據,假設第一次查詢時間是15:00:00 ~ 15:15:00之間的數據,等到10s刷新之后,第二次下發的查詢時間為15:00:10 ~ 15:15:10 之間的數據。可以發現,其實看板每次下發的查詢數據,90%以上都是重復數據,因此GuassDB(for Influx)實現了rollupcache功能。
1.接受查詢SQL;
2.查找對應的索引;
3.如果rollupcache中有存儲數據,則直接從rollupcache中讀取;
4.從rollupcache中返回數據;
5.如果rollupcache中沒有,或者只有部分數據,缺少的數據從store中讀取;
6.從store獲取數據;
7.結果返回給客戶。
rollupcache功能會緩存之前的查詢結果,新的查詢執行時,會優先判斷是否命中緩存結果,如果全部命中,則直接返回;如果部分命中,則對未命中部分進行常規查詢,將結果返回;如果完全沒有命中,則等同于常規執行。這種直接使用緩存數據的方式極大的提高了查詢的性能,特別適合于監控看板這種查詢語句幾乎不變的場景。
針對常用的聚合算子,在300萬時間線數量下,執行1000次查詢,rollupcache功能和非rollupcache功能的查詢平均時延對比如下圖:
從上圖可以看出rollupcache功能將時延降低了10倍左右。
很多場景下用戶業務需要下發大量查詢語句,在一些開源產品中并不支持批量查詢,或者只是部分支持。比如,在開源的InfluxDB中,支持批量發送查詢語句,但是在數據庫內部,卻是串行處理這些批量發送過來的查詢請求,導致批量查詢的性能沒有真正釋放出來。
GuassDB(for Influx)提供了針對批量查詢的并發查詢能力,每個batch所包含的查詢語句在內核中可以并發執行。同時提供了相關參數,可以控制查詢的并發量,可以根據業務的具體場景和機器資源進行調整,既滿足了業務的查詢性能,也不會因為查詢占用過多資源影響其他業務。
使用GaussDB(for Influx)時序洞察功能
如何快速開通看板功能,可參考GaussDB(for Influx)的時序洞察部分:
https://support.huaweicloud.com/influxug-nosql/nosql_02_0123.html
開通后就可以使用看板功能了。
創建看板
GaussDB(for Influx)支持的時序洞察功能操作非常便捷,點擊Dashboards中的Create Dashboard按鈕就可以創建一個空的看板。
創建成功后,點擊Add Data就可以創建需要關注的指標了。
添加自定義指標
點擊Add Data后,會跳轉到如下圖所示的界面:
圖表上顯示的數據是依據業務設置的查詢語句返回的數據,查詢語句支持InfluxQL和Flux。例如上圖中CPU的指標對應的查詢語句。
SELECT mean("schema_sys001_cpu_usage") FROM "DBS_INFLUXDB_OPS_METRIC"."autogen"."INFLUXDB" WHERE time > :dashboardTime: AND time < :upperDashboardTime: AND "schema_nodeId" = :nodeId: GROUP BY time(1m), "schema_nodeId" fill(null)
也可以將多個數值放在同一個圖表中進行對比,查詢語句的寫法可參考下圖:
SELECT mean("usage_system") AS "system", mean("usage_user") AS "user", mean("usage_idle") AS "idle" FROM "telegraf"."autogen"."cpu" WHERE time > :dashboardTime: AND time < :upperDashboardTime: AND "cpu"='cpu-total' AND "host"='ecs-c8ad-xie' GROUP BY time(:interval:) FILL(null)
也可以通過group by 語句分開,例如可以分別觀察CPU0和CPU-total的指標,如下圖:
SELECT mean("usage_system") AS "system", mean("usage_user") AS "user", mean("usage_idle") AS "idle" FROM "telegraf"."autogen"."cpu" WHERE time > :dashboardTime: AND time < :upperDashboardTime: AND ("cpu"='cpu-total' OR "cpu"='cpu0') AND "host"='ecs-c8ad-xie' GROUP BY time(:interval:), "cpu" FILL(null)
其核心在于查詢語句的寫法。
也可以進行展示圖形的設置,選擇下圖中Visualization按鈕,就可以看到如下界面:
可以選擇設置數據展示類型,調整圖形的顏色,例如可以把圖形設置成Step-Plot方式,如下圖:
設置完成后點擊右上角保存就可以在看板中看到了,如下圖的CPU Usage就是我們上面步驟添加的指標項:
其他功能
GaussDB(for Influx)的時序洞察還支持,權限管理、分析任務管理、告警管理,指標預測等功能。
總結
GaussDB(for Influx)是一款基于計算存儲分離架構,兼容InfluxDB生態的云原生時序數據庫。在云計算平臺高性能,高可靠,高安全,可彈性伸縮的基礎上,提供時序數據的存儲、分析、展示功能,同時具有高寫入性能、靈活擴容、高壓縮率和高查詢性能等特點。
同時GaussDB(forInflux)通過實現Hint功能,rollupcache功能,以及并發查詢的能力,有效的降低了大批量查詢的時延,滿足了大規模監控看板的業務需求。
結束
云數據庫 GaussDB(for Influx) 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。