- 一、前言
- gpcc特性總覽
- 幫助文檔
- 二、gpcc安裝步驟
- 0. 安裝先決條件
- 1. 下載下傳安裝包
- 2. 上傳安裝包
- 3. 建立安裝路徑
- 4. 運作安裝程式
- 5. 更新/安裝 Metrics Collector Extension
- 6. 啟動gpcc
- 7. 安裝中可能遇到的問題
- 三、gpcc使用手冊
- 1. 系統監控功能
- 1.1. Dashboard
- 1.2. Cluster Metrics
- 1.3. Host Metrics
- 1.4. Segment Status
- 1.5. Recommendations
- 2. 查詢監控功能
- 3. 系統告警
- 4. 資源組管理
- 5. 表資訊查詢
- 1. 系統監控功能
一、前言
Pivotal Greenplum Command Center(以下簡稱gpcc)是為Greenplum大資料平台開發的資料庫監控管理工具,可以從各個度量監控gp系統運作健康程度,也可以為DBA們提供簡單的gp叢集管理手段。對gp使用者來說是非常給力的工具!
gpcc的體系結構:
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-Bw59xtZ4-1614847907673)(png/gpcc4-arch.png)]
gpcc特性總覽
- gpcc直接繼承gp的認證與權限配置,通過直接操作pg_hba.conf檔案來實作gp的權限控制
- gpcc提供5個gpcc獨有的使用者權限來實作gpcc中菜單和操作權限的精分
- gpcc從5個地方“拿數”:OS,gp catalogs,Metrics Collector Extension,gpperfmon,Resource Group/queue
- 每隔15s,由主節點發送指令,實時搜集系統監控資訊
- gpcc專用資料庫gpperfmon由gpperfmon_install安裝程式建立,裡面由3種表組成:now, history, tail
- 主要功能點:
- 監控Greenplum資料庫性能
- 監控資料庫查詢
- 設計&推送系統性能告警
- 管理資源組,實時配置設定資源
- 表資訊等其他資訊的查詢統計
幫助文檔
https://tanzu.vmware.com/support
https://gpcc.docs.pivotal.io/630/topics/overview.html
二、gpcc安裝步驟
0. 安裝先決條件
- gp叢集必須安裝且正常運作
- 必須設定MASTER_DATA_DIRECTORY環境變量
- gpcc的安裝目錄(預設/usr/local)在gp所有節點都有gpadmin使用者的讀寫權
- mdw&smdw必須開放端口28080(BS模式通路端口,可以更改)
- 所有sdwN節點必須開放8899端口(RPC遠端調用接口)
-
所有節點必須安裝 Apache Portable Runtime Utility library 類庫
使用
安裝yum install apr-util 或 apt install libapr1
- 配置SSL秘鑰(非必須)
1. 下載下傳安裝包
下載下傳到官網:https://network.pivotal.io/products/pivotal-gpdb
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-U4ZhIb4W-1614847907674)(png/gpcc1.png)]
搜尋
"command center"
,按照對應的os版本下載下傳
檢視os發行版本
cat /etc/redhat-release
,
本文以紅帽7為例,下載下傳greenplum-cc-web-6.3.1-gp6-rhel7-x86_64.zip
下載下傳前必須要注冊使用者。
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-T0w4cT9t-1614847907676)(png/gpcc2.png)]
2. 上傳安裝包
上傳安裝包到mdw或smdw伺服器中 gpadmin 使用者的/home目錄下,解壓縮
$ unzip greenplum-cc-web-gp6-<version>-<platform>.zip
3. 建立安裝路徑
安裝要求在gp所有節點操作! 或者使用
gpssh
指令操作所有節點,其中hostfile為gp的host叢集配置檔案,每個ip獨占一行
$ source /usr/local/greenplum-db-<version>/greenplum_path.sh
$ gpssh -f <hostfile> 'sudo mkdir -p /usr/local/greenplum-cc-6.3.0'
$ gpssh -f <hostfile> 'sudo chown -R gpadmin:gpadmin /usr/local/greenplum-cc-6.3.0'
$ gpssh -f <hostfile> 'sudo ln -s /usr/local/greenplum-cc-6.3.0 /usr/local/greenplum-cc'
4. 運作安裝程式
gpcc總共四種安裝方式:
- 互動式安裝
- 靜默安裝,使用參數檔案
- 預設方式安裝 --auto
- 更新gpcc
# 使用“互動式”安裝程式:
$ source /usr/local/greenplum-db/greenplum_path.sh
$ cd greenplum-cc-<version>
$ ./gpccinstall-<version> -W
注意:
- 根據安裝程式的提示資訊,根據提示逐漸繼續即可完成安裝。
- gpmon在建立時首次輸入一定要記住密碼!
- 首次登陸gpcc需要超級使用者gpmon。若原來沒有,那麼gpcc安裝程式會自動建立這個使用者,但是密碼需要新輸入一遍,安裝過程會有提示使用 -W 參數
5. 更新/安裝 Metrics Collector Extension
如果預裝的gpcc版本比它支援的gp的版本更高,則在gpcc安裝之後需要更新metrics_collector這個擴充功能(即删除舊的metrics_collector,安裝新的)。此操作需要重新開機gp!
如果想用gpcc新版本特性則必須安裝新版本metrics_collector,如果不想用新特性可以使用舊的。
安裝方法:直接運作gpcc解壓包中/MetricsCollector檔案夾中的安裝腳本即可!腳本都是解壓好的,選擇對應的版本直接執行。
6. 啟動gpcc
# 安裝完成重新開機gp:
$ gpstop -a , gpstart -a
# 啟動gpcc:
$ gpcc start
gpcc登入位址:http://[master_ip or standby_master_ip]:28080/login
7. 安裝中可能遇到的問題
- 安裝前gpmon使用者沒有提前建立:
- 使用預設安裝方式 -auto 會自動建立gpmon使用者,但是需要指定密碼
- 用這種方式安裝的gpcc使用時需要加 -W 參數輸入密碼,如$ gpcc start -W
- 如果gpmon已經建立則不需要-W
- metrics_collector沒有提前建立:
- 原因:metrics_collector屬于gpdb的一個extension,在安裝gpcc的時候如果沒有安裝會提示是否終止安裝,這時可以選擇跳過繼續安裝gpcc,在安裝完成後再手動安裝metrics_collector。
- 解決方法:參考$GPCC_HOME下update-extension.txt腳本中的方法操作即可。
- 網址:http://gpcc.docs.pivotal.io/630/topics/install.html#setup_extensions
- 注意:手動安裝可能報錯
,需要修改配置檔案添加shared_preload_libraries參數,或者使用gpconfig -c shared_proload_libraries -v ‘metrics_collector’,重新開機gpdb和gpcc即可Error: Metrics_collector has not been added to shared_preload_libraries. Please add it to enable metrics collection
- resource group啟動:
# 變更資源管理方式為資源組: $ gpconfig -c gp_resource_manager -v "group" $ gpstop -ar # 檢視資源管理方式: $ gpconfig -s gp_resource_manager
- gpmon 和 gpadmin 使用者不能登入到gpcc
- 原因是gpmon和gpadmin兩個使用者屬于superuser,superuser建立時預設的登入方式都是trust
- 解決方法:修改 pg_hda.conf把gpmon使用者所有的trust方式改成md5
host all gpmon <IP_of_host>/32 md5
- 使配置檔案生效:gpstop -u
-
重新開機gpcc:gpcc start -W
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-36E2RjVZ-1614847907678)(png/gpcc3.png)]
- gpcc服務挂掉,啟動不了,gpcc start報錯command not found
- 原因:gpcc環境變量失效,可以通弄過指令echo $PATH檢視,環境變量預設安裝路徑:/usr/local/greenplum-cc-/bin
-
解決方法:使用官方腳本重新source下環境變量,再用echo $PATH檢視
參考官方文檔: https://gpcc.docs.pivotal.io/630/topics/setup-env.html
$ source /usr/local/greenplum-cc-<version>/gpcc_path.sh
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-kKCWR9m5-1614847907679)(png/gpcc_source.png)]
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-NVDdT7xk-1614847907681)(index_files/34221992-0131-4484-acef-1a8031bdfdcf.png)]
傳回目錄
三、gpcc使用手冊
1. 系統監控功能
1.1. Dashboard
- 系統總覽,滑鼠點選不同區域會跳轉到對應頁面
- Database State的幾種狀态:Normal, Segment(s) Down, Standby Down, Standby Not Syncing, Database Unreachable, Unbalanced, Resyncing
-
Segment Status的狀态:Up / Down
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-GcBJHNMm-1614847907682)(png/ui-dashboard-full.png)]
1.2. Cluster Metrics
- 統計範圍是所有host節點,mdw&smdw不包含在内
- 縱坐标中直線為平均值,圖形為(累加)最大值;橫坐标為時間,最右端為目前時間
- CPU圖表中不包含CPU等待IO所消耗的時間
- Memory圖表中不包含Buffer和Cache
- Load圖表為linux系統中的Load average,即對目前CPU工作量的度量,數值1~5為較健康的區間
-
Swap圖表為交換區使用率,在資料庫中要尤其警惕!
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-M0nydhOV-1614847907682)(png/ui-cluster-metrics-full.png)]
1.3. Host Metrics
-
Skew的四種狀态:Low/Moderate/High/Very High,其中Very High需要警惕!
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-1IAHkr6r-1614847907683)(png/ui-host-metrics-full.png)]
1.4. Segment Status
- Replication Mode: 主副節點的同步狀态,"Synced"為正常
- Preferred Role: 段主機是否運作在它應該運作的角色。比如主節點掉線之後,作為副節點的段主機接替它成為主節點,此時此副節點的狀态為"Not Preferred"
-
ContentID: 從0開始,主副節點相同,mdw&mdw不包含在内
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-Qj6ARte4-1614847907684)(png/ui-cluster-metrics-full.png)]
1.5. Recommendations
- 從Bloat,Accuracy,Skew三個次元,對資料庫表提出推薦運維操作
- 隻統計非空的表,不統計視圖和外部表
- 掃描隻在規定的時間段進行,優先掃描沒有被掃過或者近期有大量update操作的表
- 如果規定時間内沒有掃描完,下一次掃描會從上一次的斷點繼續
- Bloat:
- 定義:有頻繁DML操作,需要進行vacuum/vacuum-full操作的表
- 公式:Bloat Space = unused space + dead space
- 當Bloat比例 > 10%時,建議為Vacuum
- 當比例 > 50%時,建議為Vacuum-full
- 如果表近期沒有DML操作,則gpcc會更傾向于Vacuum
- 在gpcc中分别由參數bloat_threshold和bloat_vacuum_full_threshold控制
- [外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-ntWl95Ze-1614847907684)(png/bloat.png)]
- [外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-bHLvCzww-1614847907685)(png/vacuum.png)]
- Accuracy:
- 定義:統計資訊已失準,需要進行analyze的表
- 範圍:統計過去30天内執行過掃描且查詢過的表
- 公式:
inaccuracy = (MAX(plan_rows, actual_rows) - MIN(plan_rows, actual_rows)) / MAX(plan_rows, actual_rows)
- 在統計使用過某表的所有SQL時,未使用where子句的SQL會有更高權重,Inaccuracy的計算值也更準确
- inaccuracy > 10%才會上榜,在gpcc中由參數accuracy_threshold控制
- Skew:
- 定義:表示一個表資料的分布是否平均,如果過大則需要重選分部鍵或重配置設定
- 公式:Skew% = (1 - Avg / Max) / (1 - 1/n) * 100%
- 範圍是表中資料行數為節點數128倍的表
- 在gpcc中由參數skew_threshold和skew_tuple_per_segment控制
傳回目錄
2. 查詢監控功能
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-eJgYhbJ9-1614847907685)(png/ui-query-monitor-full.png)]
- Query ID:由
組成執行時間-sessionID-指令數量
- Stats:
-
狀态 說明 Queued 還未執行 Running 正在執行 Blocked 等待鎖釋放 Done 執行結束 Cancelling/Cancelled 取消 Idle 會話已打開且在等待 - 注意除了CPU Master%,CPU Segments%,CPU Skew%等名額為平均值,剩下的名額如CPU Time,Memory,Spill Files都是所有段主機的累加值
- Query Text:隻能顯示SQL的前100K字元,點選"COPY"可以下載下傳SQL全文,但隻有24h時效
- Textual Plan:同explain的功能,但若執行計劃過大或包含多條語句則gpcc不會顯示
傳回目錄
3. 系統告警
"Admin -> Alerts"管理者通過設定警報規則或參數門檻值來實作gp系統預警。當規則觸發時,gpcc會記一條記錄。告警記錄可以通過郵件、短信、或者腳本的方式推送給管理者。
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-vDlcJz3i-1614847907686)(png/ui-alerts.png)]
規則說明:
- Database connectivity failure:節點離線時候告警;前提是節點上的gpcc執行個體必須運作
- Number of connections exceeds [N]:連接配接總數超過N時告警,每30s檢查一次,如果觸發則每30m再檢查一次
- Master Panic/Fatal:Panic級别的告警會使gp叢集的所有session停止;Fatal級别的告警會使目前session停止(登入驗證錯誤屬于Fatal級别,但是不會觸發alter)
- Master CPU exceeds [%] for [N] min:注意門檻值是平均值而不是峰值
- Segment failure:segment離線則觸發,觸發後每30mins檢查一次
- Total disk space exceeds [%] on a segment host:所有節點的平均值,而不是單一節點;規則每24h查一次
- Segment Hosts Avg CPU exceeds [%] for [N] min:所有節點的平均值;每15s取樣一次
- Segment Hosts Avg Memory exceeds [%] for [N] min:同上
- Out of memory errors:OOM告警,因記憶體不夠而等待的SQL不會觸發此規則
- Spill files for a query exceeds [N] GB:因記憶體不夠而寫盤的SQL臨時檔案總大小超過N GB則觸發;屬于一次性告警
- Query runtime exceeds [N] min:一次性告警
- Query is blocked for [N] min:SQL在資源隊列中等待的時間不算;一個SQL可能出現多次
傳回目錄
4. 資源組管理
Resource Group(以下簡稱rg)是Greenplum的新特性,手段是通過把若幹個role組團成一個“組”,通過給“組”配置資源,進而達到gp整體資源配置設定的定性與定量。
gp的預設資源配置設定方式是Resource Queue,在安裝并啟用了Resource Group後才可以使用這部分功能!
- Resource Groups子產品功能:增加删除修改rg,也可以把role配置設定給不同的rg。對應pg_roles系統表。
-
Workload Mgmt子產品功能:根據不同的資源組/角色/Query标簽或以上三者組合條件,在會話級别建立規則,通過cpu,cost,io等名額,把不符合規則的會話停掉或遷移到其他資源組繼續運作(gp版本6.8+)。觸發規則時gpcc會記錄和顯示日志!
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-PLEvDUth-1614847907686)(png/ui-resource-group-editor.png)]
Resource Groups參數說明:
- Concurrency: rg的并發量極限,即rg中所有role的所有session的并發量之和,包括idle的會話!
- CPU%:對應rg中的CPU_RATE_LIMIT參數, 建議所有rg的此參數總和不要超過90%
- Memory%:對應rg中的MEMORY_LIMIT參數,建議總和不要超過100%
- Memory Spill Ratio%:對記憶體敏感類型的操作,如果超過這個值則會把資料向磁盤中寫(如果Memory%為0,則Memory Spill Ratio%必須為0)
- Statement Memory:為每個query配置設定的固定記憶體大小,其大小由其他參數共同決定
補充說明:
- Workload Mgmt中的Planner Cost名額分為兩個值,前面的值為使用GPORCA優化器的預估值,後面的值為傳統Postgres Planner優化器
- Query标簽是Query級别使用者自定義的若幹組鍵值對,前提是gp必須安裝gp_wlm擴充包,标簽設定方法:
=# SET gpcc.query_tags TO 'appName=tableau;appUser=bi_sales';
- 所有配置在gpperfmon.gpmetrics庫中可查,系統告警明細見gpcc_alert_* ,資源組配置見表gpcc_wlm_*
傳回目錄
5. 表資訊查詢
"Table Brower"檢視表資訊,包括字段、存儲類型、壓縮、分部鍵、分區等資訊,每隔5mins更新一次,并非實時統計,也非精确值!
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-8Rkt2ESg-1614847907687)(png/ui-table-browser-detail.png)]