在Managed Instance上使用 db_mail發送資源警報

by adonisy 9. 七月 2019 22:45

者:楊先民

審 稿:張智凱

您可能在Managed instance中遇到的最大問題之一是達到存儲限制或發現您沒有足夠的CPU。

在這種情況下,您需要獲得更大的 instance;但是,這不是即時操作。

在這篇文章中,您將了解如何監控資源使用情況並在可能達到限制的風險時發送電子郵件警報。

通過Azure SQL託管實例,您可以根據可以使用的最大存儲和最大內核來定義要配置的資源量。

如果達到存儲限制,則會出現幾個問題:

您的資料庫會處於“唯讀”的狀態,因為無法在交易日誌與資料庫文件中寫入任何內容。

某些讀取查詢無法運行,因為它們可能需要tempdb增長以存儲一些暫存的物件。

CHECKPOINT無法將記憶體中的資料存入到 mdf檔案中。

通常,這是您要避免的情況。雖然您依然可以透過升級服務層並獲得更多儲存空間或是CPU,但這不是Managed Instance中的
即時操作,因為必須在網絡中配置和注入新的主機VM。
因此,務必持續監控 instance並查找是否達到儲存的限制。
託管 instance 在master資料庫中提供名為sys.server_resource_stats的系統檢視,其中包含有關CPU使用率,保留和已經使用的儲存訊息,
使您能夠實時監視使用情況:
select top 1 avg_cpu_percent,
storage_space_used_mb / reserved_storage_mb
from master.sys.server_resource_stats
order by start_time desc

這個檢視表包含了過去兩週內 managed instance上5分鐘使用情況的快照,因此您只需獲取最新行並查看CPU和儲存使用情況。

 

您可以定期在“管理實例”上運行查詢,並在百分比變高時執行某些操作。

使用 db_mail傳送警示

作為替代方案,您可以啟用db_mail功能,並在接近資源限制時直接從 managed instance發送電子郵件警報。

如果您尚未在 managed instance上配置電子郵件,請看看這篇文章。

如果CPU使用率高於95%且儲存使用率高於90%,以下的 script將向您發送電子郵件:

declare @cpu_perc float, @storage_perc float;
declare @instance nvarchar(200) = @@SERVERNAME;

select top 1 @cpu_perc = avg_cpu_percent,
@storage_perc = storage_space_used_mb / reserved_storage_mb
from master.sys.server_resource_stats order by start_time desc

if(@cpu_perc > .95 or @storage_perc > .9)
begin

declare @msg nvarchar(max) = CONCAT('You are reaching the compute/storage limits of your instance ', @@SERVERNAME, ':
Storage ', @storage_perc, '%
CPU usage:', @cpu_perc, '%
Consider upgrading the instance.');
exec msdb.dbo.sp_notify_operator 
@profile_name = N'AzureManagedInstance_dbmail_profile', 
@name = N'DevOps team', 
@subject = N'Azure SQL Instance - Storage limit alert', 
@body = @msg;
end

CPU限制可能不是很嚴重,您可能會在過去幾個小時內找到平均CPU使用率。但是,如果達到儲存限制,

則應該更快地執行某些操作,並在instance上添加更多儲存空間或釋放一些空間。

您可以輕鬆地自動執行此查詢並將其複製/貼上到每15分鐘運行一次的SQL Agent Job中,並在達到限制時發送電子郵件

 

 

 

Tags:

SQL Server資料庫 | 楊先民Adonis Young

不允許評論

NET Magazine國際中文電子雜誌

NET Magazine國際中文電子版雜誌,由恆逸資訊創立於2000,自發刊日起迄今已發行超過500篇.NET相關技術文章,擁有超過40000名註冊讀者群。NET Magazine國際中文電子版雜誌希望藉於電子雜誌與NET Developer達到共同學習與技術新知分享,歡迎每一位對.NET 技術有興趣的朋友們多多支持本雜誌,讓作者群們可以有持續性的動力繼續爬文。<請加入免費訂閱>

月分類Month List