2016年8月16日

用Azure Alert與Azure Automation自動回應系統警告

Azure Alert可以讓我們針對系統的效能指標設定警告,例如當CPU五分鐘內平均用量大於90時,發出一個警告;這時我們通常會希望系統自動將機器提升到更高等級。或是例如當Azure Service Bus Queue用量到達一定程度時,發出警告郵件給管理者等等。

這類自動針對警告做出相對動作的機制,在Azure上可以透過Azure Automation的WebHook來達成;以下我會以Azure SQL Database作為範例,展示當Azure SQL Database的Storage用量到達一定程度時,透過Automation Webhook自動調升SQL等級。

當然,上述功能也可以透過Azure SQL Database的Elastic Database Pool讓我們更彈性的使用保留的DTU,特別是當我們有多個資料庫時,Elastic Database Pool可以更有效的運用資源並節省成本。但當我們只有一個SQL Database時,透過Automation + Alert可能更為節省資源成本。

  • 首先,我們先建立一個Azure Automation Account;在建立時,我們要順便建立一個Service Principle,這個Service Principle可以提供稍後我們所需要的Azure連線身分

  • 建立完成之後,會產生兩個Connection Asset,分別對應到Classic與AAD模式的連線方式。稍後我們在Run book中會用它來連接到我們的Azure訂閱

$servicePrincipalConnection=Get-AutomationConnection -Name "AzureRunAsConnection" 
Add-AzureRmAccount `
    -ServicePrincipal `
    -TenantId $servicePrincipalConnection.TenantId `
    -ApplicationId $servicePrincipalConnection.ApplicationId `
    -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint

  • 接著,建立一個WebHook

  • 將這串位址記錄下來並完成建立

  • 接著,回到Azure SQL Database的設定頁面,建立一個Alert規則

  • 設定完規則定義之後,將剛剛紀錄的WebHook位址貼上來;這樣每次規則被Trigger時,系統便會呼叫這個API並將Alert資料傳進去。

  • 記得啟用規則;接著,當設定的條件達到時,就可以看到Automation Runbook被呼叫執行了

沒有留言:

Blog Archive

About Me