前言
在 Azure SQL Database 系列文章最後一篇,我們將簡單介紹 Azure SQL Database 監控相關功能,包含:進階威脅防護、警示、指標(matrics)與動態管理檢視。讓您將資料庫轉移至 Azure SQL Database 後,能透過這些功能進行監控,快速發現警覺系統異常,並能進行前置作業與預防工作。本篇文章若有錯誤或任何建議,請各位先進不吝提出。在 Azure SQL Database 概觀畫面,也能透過儀錶板方式檢視資料庫狀況 |
介紹
進階威脅防護
進階威脅防護是一套安全功能整合套件,主要用於偵測對資料庫有威歇的異常活動,找出敏感資料與評估資料庫弱點,進而寄送報表提供管理者參考。ATP 的定價每一節點每月 15 美元;每一個受保護的 SQL Database 伺服器計為一個節點。 啟用後的 60 天內視為免費試用期。
Step 1.您能在 SQL Database 選單上 → 進階威脅防護 → 啟用進階威脅防護,開始使用這個功能:
Step 2. 輸入相關設定,如訂閱帳戶、儲存體帳戶與信箱
Step 3.掃描後即可看見弱點報告
傳統警示
您可以依據監控內容或事件建立警示規則,當伺服器監控值超過指定門檻,警示規則會啟動並寄送通知。對於事件的警示規則,可以對於每個事件個別發送通知,或發生一定數量事件的時候發送通知。建立警示規則十,你可以選擇發送電子郵件通知給 管理者 (Administrator)、共同管理者,或指定管理者。舉例來說:當資料庫在 5分鐘內有 5個防火牆阻擋觸發時,監控規則將會祭出信件進行通知。通常當警示發生或問題解決時發送警示通知郵件
Step 1. 您可以在 Azure SQL Database 操作面板上,點選 警示(傳統) → 新增計量警示
Step 2. 輸入相關資訊以建立警示規則,如名稱、計量、條件與門檻值、信箱...等,點選確定完成建立警示規則。
指標 (matrics)
您可以在您可以在 Azure SQL Database 操作面板上,點選 matrics(Preview) → 輸入條件後進行檢視如上圖所示,有許多專門對於 SQL Database 檢視指標,您可能需要花一點時間了解資料庫警示值與門檻值。詳細資料可以參考:使用 Azure 入口網站建立 Azure SQL Database 和資料倉儲警示。
動態管理檢視 (dynamic management views)
Azure SQL Database 可使用動態管理檢視來檢查效能問題,包含可能因為封鎖或長時間執行的查詢、是否達到資源瓶頸、不良的查詢計畫…等。SQL Database 支援動態管理檢視的三個類別:
- 資料庫相關的動態管理檢視
- 執行相關的動態管理檢視
- 交易相關的動態管理檢視
在執行查詢之前,您必須要有 VIEW DATABASE STATE 權限,你可以透過下列指令獲取權限:
GRANT VIEW DATABASE STATE TO database_user;
下列我們簡單使用相關語法
回傳資料庫大小:
SELECT SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS bigint) * 8192.) / 1024 / 1024 AS DatabaseSizeInMB FROM sys.database_files WHERE type_desc = 'ROWS'; GO
監視連線:
SELECT c.session_id, c.net_transport, c.encrypt_option, c.auth_scheme, s.host_name, s.program_name, s.client_interface_name, s.login_name, s.nt_domain, s.nt_user_name, s.original_login_name, c.connect_time, s.login_time FROM sys.dm_exec_connections AS c JOIN sys.dm_exec_sessions AS s ON c.session_id = s.session_id WHERE c.session_id = @@SPID;
尋找平均 CPU 時間前五個查詢資訊:
SELECT TOP 5 query_stats.query_hash AS "Query Hash", SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS "Avg CPU Time", MIN(query_stats.statement_text) AS "Statement Text" FROM (SELECT QS.*, SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1, ((CASE statement_end_offset WHEN -1 THEN DATALENGTH(ST.text) ELSE QS.statement_end_offset END - QS.statement_start_offset)/2) + 1) AS statement_text FROM sys.dm_exec_query_stats AS QS CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST) as query_stats GROUP BY query_stats.query_hash ORDER BY 2 DESC;
更多動態監視器檢視可以參考:使用動態管理檢視監視 Azure SQL Database - Microsoft Docs
0 留言