Azure StackのアラートをPowerShellで操作する

azurestack
Published: 2018-09-05

はじめに

Azure Stackは、異常を検知するとアラートを生成します。Azure Stack OperatorはこのアラートをAdmin Portalで簡単に確認できます。

アラートのトリガーとなった事象が解決されると、これらのアラートは自動的にクローズされます。ただし、まれに自動的にクローズされない場合があります。その時はアラートを手動でクローズする必要があります。

にもかかわらず、直近でデプロイしたAzure Stack Development Kit 1807では、Admin Portalでアラートを手動クローズできません。困りました。そこで、PowerShellでアラートを操作してみました。

環境

  • Azure Stack:ASDK 1.1807.0.76
  • PowerShell: Azure Stack Admin 1.4.0

アラートを表示する

“Get-AzsAlert"を利用します。

Get-AzsAlert | Sort-Object { $_.CreatedTimestamp } -Descending

アラートを抽出する

“-Filter"オプションを使うと特定条件のアラートを抽出できます。当然、なじみのある"Where-Object"でも抽出できます。

Get-AzsAlert -Filter "Properties/State eq 'Active'" | Sort-Object { $_.CreatedTimestamp } -Descending
Get-AzsAlert | Where-Object { $_.State -eq "Active"} | Sort-Object { $_.CreatedTimestamp } -Descending

アラートをクローズする

“Close-AzsAlert"を利用します。"-Name"オプションにアラートのIDを渡します。

Close-AzsAlert -name ec7cbbb7-1581-41ad-bb75-37349abd4434 -Force -Verbose

クローズしたいアラートを抽出したうえでforeachでループさせれば、対象のアラートを一括でクローズできます。

$alerts = Get-AzsAlert | Where-Object { $_.State -eq "Active"} 
$alerts | ForEach-Object {
    Close-AzsAlert -Name $_.AlertId -Force -Verbose
}

終わりに

Azure StackのアラートをPowerShellで操作する方法をまとめました。複数のアラートをまとめてクローズしなければならないシーンや、アラートをトリガーとした自動化で活躍すると思います。