詳解GaussDB(DWS)用戶監控原理及應用

来源:https://www.cnblogs.com/huaweiyun/archive/2023/05/26/17434821.html
-Advertisement-
Play Games

摘要:本文將聚焦於用戶監控的原理及應用進行介紹。 本文分享自華為雲社區《GaussDB(DWS)監控工具指南(二)用戶級監控》,作者:幕後小黑爪 。 前言 資源監控是整個運維乃至整個產品生命周期重要的一環,事前及時語句發現故障,事後提供詳實的數據用於追查定位問題。GaussDB(DWS)整個資源監控 ...


摘要:本文將聚焦於用戶監控的原理及應用進行介紹。

本文分享自華為雲社區《GaussDB(DWS)監控工具指南(二)用戶級監控》,作者:幕後小黑爪 。

前言

資源監控是整個運維乃至整個產品生命周期重要的一環,事前及時語句發現故障,事後提供詳實的數據用於追查定位問題。GaussDB(DWS)整個資源監控體系分為作業級監控、用戶監控和資源池監控。本文將聚焦於用戶監控的原理及應用進行介紹。

1、GuassDB(DWS)用戶體系

對於一個產品來說,最簡單的用戶分類是普通用戶、系統管理員、超級管理員三層體系。超級管理員擁有最高級的許可權,普通用戶作為最基本的用戶,用戶操作系統的部分許可權,系統管理員也擁有部分許可權,同時他也可改變普通用戶的許可權。超級管理員擁有所有許可權,但是不輕易使用。

1.1 兩層用戶機制介紹

對於一個企業來說,對資料庫的操作也是分部門運作,每個部門單獨有的表,同時每個部門也有單獨的優先順序,有鑒於此,GaussDB(DWS)設計的用戶體系也分為兩層:

第一層為組用戶,該層用戶關聯組資源池,不作為執行作業的用戶使用。

第二層為業務用戶,該層用戶關聯業務資源池,可作為執行作業的用戶使用。

組用戶之間可使用的資源也可單獨設置。每個業務用戶之間亦可設置單獨的資源。相較於以往單層的用戶機制而言,兩層的用戶機制可實現對用戶資源進行粒度更小的管控。

示例:

# 創建cgroup控制組
gs_ssh -c "gs_cgroup -c -S ClassG1 -G wn1"
# 創建組資源池resource_pool_a綁定ClassG1控制組。
CREATE RESOURCE POOL resource_pool_a WITH (control_group = 'ClassG1');
# 創建業務資源池resource_pool_a1綁定wn1控制組。
CREATE RESOURCE POOL resource_pool_a1 WITH (control_group = 'ClassG1:wn1');
# 創建組用戶關聯到組資源池。例如,名稱為“tenant_a”的組用戶關聯到“resource_pool_a”組資源池
CREATE USER tenant_a RESOURCE POOL 'resource_pool_a' PASSWORD '********';
# 創建業務用戶關聯到業務資源池和組用戶。例如,名稱為“tenant_a1”的業務用戶關聯到“resource_pool_a1”組資源池和“tenant_a”組用戶。
CREATE USER tenant_a1 RESOURCE POOL 'resource_pool_a1' USER GROUP 'tenant_a' PASSWORD '********';

1.2 賦權

當我們需要普通用戶訪問某個表時,可使用grant語法對用戶賦許可權或者收回許可權,該操作需要擁有sysadmin許可權的用戶進行,舉個例子

# 將public表空間下的lineitem表的查詢許可權賦給user_1:
grant select on public.lineitem to user_1;
# 回收user_1的public表空間下的lineitem表的查詢許可權:
Revoke select on public.lineitem from user_1;

2、用戶資源監控

2.1 目標

一般情況下,數倉產品會同時有多個用戶對資料庫進行操作,每個用戶使用的資源量有差異,舉個極端的例子,當某個用戶下發了慢SQL,導致集群整體性能劣化,此時我們就需要確定這個作業是哪個用戶下發的,然後找到對應的慢SQL,對其進行管理。

對於管理員用戶而言,用戶監控可以幫助管理員以用戶的維度瞭解系統的性能狀況,及時發現並解決資源瓶頸和故障,提高系統的可靠性和穩定性。還可區分每個用戶在整個集群中使用的資源量,確定哪些用戶使用的資源量超標,然後對超標的用戶進行限制。

2.2 監控維度

用戶監控支持對CPU、記憶體、存儲空間、臨時空間、運算元落盤空間、磁碟IO、網路等方面的監控,通過對這些資源的監控,管理員可以瞭解系統的負載情況、進程的運行狀態、磁碟空間的使用情況、網路帶寬的利用率等信息。這些信息可以幫助管理員及時發現系統的異常情況,及時採取措施,避免系統崩潰或者服務中斷。

使用示例:

postgres=# SELECT * FROM PG_TOTAL_USER_RESOURCE_INFO;
     username     | used_memory | total_memory | used_cpu | total_cpu | used_space | total_space | used_temp_space | total_temp_space | used_spill_space | total_spill_space | read_kbytes | write_kbytes | read_cou
nts | write_counts | read_speed | write_speed | send_speed | recv_speed
------------------+-------------+--------------+----------+-----------+------------+-------------+-----------------+------------------+------------------+-------------------+-------------+--------------+---------
----+--------------+------------+-------------+------------+------------
 user_grp_1       | 0 | 4928 | 0 | 16 | 1573880 |          -1 | 0 |               -1 | 0 |                -1 | 0 | 0 | 
 0 | 0 | 0 | 0 | 0 | 0
 perfadm | 0 | 0 | 0 | 0 | 0 |          -1 | 0 |               -1 | 0 |                -1 | 0 | 0 | 
 0 | 0 | 0 | 0 | 0 | 0
 user_normal | 0 | 24643 | 0 | 16 | 0 |          -1 | 0 |               -1 | 0 |                -1 | 0 | 0 | 
 0 | 0 | 0 | 0 | 0 | 0
 usr1             | 0 | 69763 | 0 | 40 | 0 |          -1 | 0 |               -1 | 0 |                -1 | 0 | 0 | 
 0 | 0 | 0 | 0 | 0 | 0
 logical_cluster1 | 0 | 24643 | 0 | 16 | 1834424 |          -1 | 0 |               -1 | 0 |                -1 | 0 | 0 | 
 0 | 0 | 0 | 0 | 0 | 0
 user_2           | 0 | 985 | 0 | 16 | 0 |          -1 | 0 |               -1 | 0 |                -1 | 0 | 0 | 
 0 | 0 | 0 | 0 | 0 | 0
 user_1           | 0 | 3942 | 0 | 16 | 1573880 |          -1 | 0 |               -1 | 0 |                -1 | 0 | 0 | 
 0 | 0 | 0 | 0 | 0 | 0
 logical_cluster2 | 0 | 45120 | 0 | 24 | 0 |          -1 | 0 |               -1 | 0 |                -1 | 0 | 0 | 
 0 | 0 | 0 | 0 | 0 | 0
 user_default | 0 | 24643 | 0 | 16 | 0 |          -1 | 0 |               -1 | 0 |                -1 | 0 | 0 | 
 0 | 0 | 0 | 0 | 0 | 0
 wjx | 0 | 24643 | 0 | 16 | 0 |          -1 | 0 |               -1 | 0 |                -1 | 0 | 0 | 
 0 | 0 | 0 | 0 | 0 | 0
(10 rows)
postgres=# select * from GS_WLM_USER_RESOURCE_HISTORY;
     username     |           timestamp           | used_memory | total_memory | used_cpu | total_cpu | used_space | total_space | used_temp_space | total_temp_space | used_spill_space | total_spill_space | read_
kbytes | write_kbytes | read_counts | write_counts | read_speed | write_speed | send_speed | recv_speed
------------------+-------------------------------+-------------+--------------+----------+-----------+------------+-------------+-----------------+------------------+------------------+-------------------+------
-------+--------------+-------------+--------------+------------+-------------+------------+------------
 user_grp_1       | 2023-05-22 16:51:03.380482+08 | 0 | 4928 | 0 | 16 | 1573880 |          -1 | 0 |               -1 | 0 |                -1 | 
 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
 wjx | 2023-05-22 16:51:03.380482+08 | 0 | 24643 | 0 | 16 | 0 |          -1 | 0 |               -1 | 0 |                -1 | 
 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
 user_default | 2023-05-22 16:51:03.380482+08 | 0 | 24643 | 0 | 16 | 0 |          -1 | 0 |               -1 | 0 |                -1 | 
 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
 logical_cluster2 | 2023-05-22 16:51:03.380482+08 | 0 | 45120 | 0 | 24 | 0 |          -1 | 0 |               -1 | 0 |                -1 | 
 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
 user_1           | 2023-05-22 16:51:03.380482+08 | 0 | 3942 | 0 | 16 | 1573880 |          -1 | 0 |               -1 | 0 |                -1 | 
 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
 user_2           | 2023-05-22 16:51:03.380482+08 | 0 | 985 | 0 | 16 | 0 |          -1 | 0 |               -1 | 0 |                -1 | 
 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
 logical_cluster1 | 2023-05-22 16:51:03.380482+08 | 0 | 24643 | 0 | 16 | 1834424 |          -1 | 0 |               -1 | 0 |                -1 | 
 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
 usr1             | 2023-05-22 16:51:03.380482+08 | 0 | 69763 | 0 | 40 | 0 |          -1 | 0 |               -1 | 0 |                -1 | 
 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
 user_normal | 2023-05-22 16:51:03.380482+08 | 0 | 24643 | 0 | 16 | 0 |          -1 | 0 |               -1 | 0 |                -1 | 
 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0

2.3 監控原理

內核在作業運行時,依據作業攜帶的用戶信息,進行相關資源欄位的累計,每隔一段時間將信息彙總至用戶監控歷史表中。此外,該功能的使用有些規格:

2.3.1 相關GUC參數

enable_logical_io_statistics:用戶資源監控和資源池資源監控IO相關數值的開關,預設為on,開啟後用戶監控中io相關記錄(read_kbytes、write_kbytes、read_counts、write_counts、read_speed和write_speed)會進行統計。

enable_user_metric_persistent:否開啟用戶/資源池歷史資源監控轉存功能,開啟後會將監控記錄轉存到歷史表中。

user_metric_retention_time:設置用戶歷史資源監控數據的保存天數,預設為7天

2.3.2 相關說明

當前用戶監控可同時監控快慢車道的所有作業的CPU、IO和記憶體使用情況。

當用戶在CN上進行查詢時,顯示的為所有DN資源池使用和資源限制的累積和。在DN查詢時僅統計本DN上資源池使用和資源限制信息。

DN上數據收集周期為5s,CN每隔5s從DN上收集一次信息。輔助線程每30s自動進行持久化操作,持久化用戶監控數據。

對於初始管理用戶暫不進行資源監控,因為該用戶是超級管理員用戶,沒必要監控。

2.4 案例分析

2.4.1 當出現記憶體不可用時,可通過該視圖查看是哪個用戶使用的記憶體過高

2.4.2 可以監控用戶網路使用情況,比如網路的收發速率等。

 

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


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

-Advertisement-
Play Games
更多相關文章
  • 我們都知道,預設情況下,nginx的項目log是一直被累計寫入的,隨著時間越久,那麼這個文件就會越大,這個時候如果我們要去做一些查找和排查就會比較困難,因為日誌文件太大,操作起來比較費勁。 因此我們為了規避這個問題,提出日誌切割的方案。 那日誌切割的原理是怎麼樣的,我們來分析一下,我們先統計下連續1 ...
  • 在上篇文章 [《深入理解 slab cache 記憶體分配全鏈路實現》](https://mp.weixin.qq.com/s?__biz=Mzg2MzU3Mjc3Ng==&mid=2247488152&idx=1&sn=7c65f8ee28e9cc14a86e9df92b6d2b93&chksm=c ...
  • ![](https://img2023.cnblogs.com/blog/3076680/202305/3076680-20230516151258933-1445766867.png) # 1. 基本信息 SQL進階教程 [日]MICK 人民郵電出版社,2017年11月出版,**1版** ## 1 ...
  • ## Doris 簡介 ### Doris 概述 Apache Doris 由百度大數據部研發 (之前叫百度 Palo,2018 年貢獻到 Apache 社區後,更名為 Doris), 在百度內部,有超過 200 個產品線在使用,部署機器超過 1000 台,單一業務最大可達到上百 TB。 Apach ...
  • 我們介紹一下SeaTunnel支持的第一個同步場景:離線批量同步。顧名思意,離線批量同步需要用戶定義好SeaTunnel JobConfig,選擇批處理模式,作業啟動後開始同步數據,當數據同步完成後作業完成退出。 ...
  • 雖然感覺生活小知識沒有多少人喜歡看,這主要是因為生活小知識的策略不對,比如你要讓別人一時間接受20條還不如一天推一條,讓別人20天記住20條來得好,也不會讓訪客感到厭煩。 一級分類包含:安全急救(1445)、奧運知識(206)、服飾裝扮(512)、家電電腦(555)、健康養生(4390)、經營理財( ...
  • 摘要:此篇文章分別從sql執行過程、執行計劃、索引數據結構、索引查詢提速原理、聚焦索引、左首碼優化原則、自增主鍵索引這些角度談一談我們對資料庫優化的理解。 本文分享自華為雲社區《工程應用中資料庫性能優化經驗小結》,作者: 葉工 。 1、前言 現階段交付的演算法產品,絕大多數涉及到資料庫的使用。它承載的 ...
  • 中醫古文字經過千年的演變,字的本義與現在的含義已相去甚遠,中醫專業的學生或中醫愛好者研習傳統醫學經典,必需有一個方便易用的字典工具,《近萬條中醫名詞術語大全ACCESS資料庫》就能幫你實現。欄位信息、每個欄位的內容信息、記錄數信息等都請觀看截圖。 本資料庫是由 Microsoft Access 20 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...