數據庫的指標體系設計攻略
作為運維對象的數據庫是數據化存在的,這些數據包括配置數據、運行數據、變更數據以及分析診斷數據等等,貫穿了運維對象的全生命周期,是數據庫數字化運維與優化的基礎和核心。對于數據庫運維部門而言主要關注點是運行數據,通過指標的形式進行獲取,在此基礎上可以產生診斷、告警之類的數據,如果配合AI技術,甚至可以進行一些預測。
數據庫指標集的構建是數據庫運維自動化和智能化的基礎,因此必須加以重視。在做數據庫指標設計的時候,往往會受限于早些年的網管系統建設思路,過度借鑒SNMP的MIB庫。這些基于傳統思路設計的指標集在靜態配置信息上十分值得借鑒,但是動態指標往往過于簡單,無法適應當前數據庫運維的需要。在做數據庫指標集設計的時候,要從運維工作的要點出發同時結合當前數字化運維的需求,從對數據庫系統進行全面的數字化描述的角度入手,才能讓數據庫的指標集在實際運維工作中實用、好用。
在實際運維工作中,指標并非空中樓閣,也并非學術范疇,如果一個指標在監控、運維、優化、評估、審計等工作中沒有使用場景,那么這個指標可能是沒有任何采集價值的。而分析某個重要問題所需要的指標不存在 或者無法直接采集到,那么我們就需要想盡一切辦法將其指標化。
數據庫內部會存在多個組件,因此運行時需要采集的指標數量還是非常多的,少的幾十個,多的能上千,為了便于管理,需要對這些指標進行分類。比如對于某個國產數據庫,一般在運維時會關注數據庫以下方面的運行情況:
- 配置:影響對象運行的主要參數、資源設置,有些配置是動態的,不能只做一次性采集
- 資源:運維對象涉及的各種內外資源的使用情況
- 負載:運維對象及其所有組件的活動量統計
- 性能:主要是指運維對象執行各項任務的響應時間
- 效率:主要是指運維對象在進行內部處理時最優路徑的選擇比率
- 并發:內部資源或數據結構的爭用情況
- 集群:集群中的成員對象之間發生的活動統計
- 總體:包括總體運行狀態、復制狀態、備份情況、日志錯誤統計、安全類統計之類的指標
圖片
對數據庫的指標進行梳理,可以將數據庫的指標按照管理類、配置類和技術類三大類進行歸類。管理類指標主要體現數據庫與上下游之間的關聯關系,數據庫不能脫離存儲、服務器等獨立存在,因此必須關心其關聯對象的指標,另外在運維方面有什么關注點,也應該進行指標化。比如容量、負載、資源等,要根據管理特性設計相關的指標進行管理。數據庫的配置文件、配置信息等也需要指標化管理,指標化管理有助于對數據庫對象進行全面的數字化描述和展示,同時一些負載和并發相關的指標的基線與波動特性也與配置有關。技術類的指標包含來自于數據庫本身的指標和通過對日志分析產生的指標,日志事件指標化是對日志進行強管理的有效措施。
在指標設計的時候還要關注的就是指標的可觀測性和可評估性。指標所表達的含義一定是DBA可觀測的,或者是自動化算法可評估的。比如數據庫啟動以來的總執行數,這個指標的可觀測性和可評估性都不佳,因此我們需要通過這個指標和時間戳計算出某個時間段內平均每秒的執行數,這個指標的可觀測性就優于總執行數。最近一分鐘內CURSOR緩沖的平均命中數和平均丟失數指標的可觀測性是不錯的,但是不同負載的系統這些指標的差異很大,因此其可評估性不佳。如果計算出最近一分鐘內CURSOR緩沖的命中率,就可以很方便地用于評估CURSOR緩沖的效率了。