星期六, 1月 29, 2022

[SQL] 警示應用 - 監測 CPU 使用

在研討會上聽到的管理手法,找資料實作練習,處理情境為當 CPU 使用莫名升高要如何處理,主要分為兩個部分
  • 監控 CPU 使用
  • CPU 升高時處理流程

利用 Alter 來監控 CPU 使用

建立 Alter - [CPU High] 並選擇 [WMI 事件警示] 來進行監控
  • 命名空間:\\.\root\cimv2
  • 查詢:透過 WQL 每 5 秒查詢 CPU loading 是否超過 50%
SELECT * 
FROM __InstanceModificationEvent WITHIN 5 
WHERE TargetInstance ISA 'Win32_Processor' 
	AND TargetInstance.loadpercentage > 50  
回應
  • 執行 Job - CPU High Process (後面介紹)
  • 使用 [通知操作員] 來發 Mail 通知 DBA
選項
  • 將警示的錯誤文字包含於:可以把特定訊息或是語法塞在這,以該練習為例,可以塞擴充事件查詢語法,收到 mail 當下就可以抓出來查詢
  • 回應之間延遲:避免 Alter 一直觸發,依管理需求設定多久間隔觸發一次,該練習是設定 10分鐘

CPU 升高時處理流程

建立 Job - CPU High Process,並設定處理流程,該練習只有一個步驟,開啟事先建立的擴充事件收集 TSQL


啟用擴充事件
ALTER EVENT SESSION TSQLCollection ON SERVER  
STATE = start;  
GO


收集 TSQL 語法除了擴充事件,也可以利用 SQL Trace 或是 WhoIsActive 來達成喔。

另外發信通知部分,不使用操作員的話,也可以在 Job 內建立一個步驟,透過 sp_send_dbmail 來送出通知信

監控測試

該 文章 內有 CPU High 語法可以使用,當 CPU 超過設定的 50% 就會發出 mail 通知囉


有主動 mail 通知,也有發生當下的 TSQL 語法側錄,就可以知道當下 SQL Server 情況,方便釐清問題點囉

其他相關測試紀錄

一開始其實是朝 Alert 搭配 [SQL Server 效能條件警示] 來偵測 CPU High,測試過程一直沒有辦法觸發 Alert,後來才轉向 WMI,記錄這三篇參考資料

沒有留言:

張貼留言