Enable/Disable 使用 Powershell Azure ARM 进行 AppInsights 可用性测试
Enable/Disable AppInsights Availability Tests with Powershell Azure ARM
简单的问题,尝试使用 Powershell Azure ARM Disable/Enable 我的 Application Insights 可用性测试。我们已经安排了服务器的重启,我想把这些时间涂黑,这样我们就不会记录错误。
我尝试了以下方法
$alert = Get-AzureRmAlertRule -ResourceGroupName $resourceGroup `
| Where-Object {$_.Name -like '*isalive*'} `
| Where-Object {$_.Name -like "*$vmName*"}
Add-AzureRmWebtestAlertRule -Name $alert.Name `
-Location $alert.Location `
-ResourceGroupName $resourceGroup `
-WindowSize $alert.Condition.WindowSize `
-MetricName $alert.Condition.DataSource.MetricName `
-TargetResourceUri $alert.Id `
-FailedLocationCount $alert.Condition.FailedLocationCount `
-DisableRule `
-Verbose
但我回来了
WARNING: 3:34:18 PM - The namespace for all the model classes will
change from Microsoft.Azure.Management.Monitor.Management.Models to
Microsoft.Azure.Management.Monitor.Models in future releases.
WARNING: 3:34:18 PM - The namespace for output classes will be uniform for all classes in future releases to make it independent of
modifications in the model classes.
VERBOSE: Performing the operation "Create/update an alert rule" on target "Create/update an alert rule: azecdag02 isalive-sitecore
production-2c06a496-3567-4871-a57c-2c516c0ccfef from resource group:
OAT_Website".
VERBOSE: 3:34:18 PM - CreateRuleCondition: Creating location threshold rule condition (webtest rule)
VERBOSE: 3:34:18 PM - CreateSdkCallParameters: Creating rule object
Add-AzureRmWebtestAlertRule : Exception type: ErrorResponseException, Message: The setting already exists., Code:
SettingAlreadyExists, Status code:Conflict, Reason phrase: Conflict
At line:1 char:1
+ Add-AzureRmWebtestAlertRule `
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Add-AzureRmWebtestAlertRule], PSInvalidOperationException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Insights.Alerts.AddAzureRmWebtestAlertRuleCommand
如果我尝试 Resolve-AzureRmError -Last
我会得到
HistoryId: 80
Message : Exception type: ErrorResponseException, Message: The
setting already exists., Code: SettingAlreadyExists, Status
code:Conflict, Reason phrase: Conflict StackTrace : at
Microsoft.Azure.Commands.Insights.MonitorCmdletBase.ExecuteCmdlet()
at Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet.ProcessRecord()
Exception :
System.Management.Automation.PSInvalidOperationException
InvocationInfo : {Add-AzureRmWebtestAlertRule} Line :
Add-AzureRmWebtestAlertRule `
Position : At line:1 char:1
+ Add-AzureRmWebtestAlertRule
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HistoryId : 80
Message : Operation returned an invalid status code 'Conflict'
StackTrace : at
Microsoft.Azure.Management.Monitor.AlertRulesOperations.d__5.MoveNext()
Exception :
Microsoft.Azure.Management.Monitor.Models.ErrorResponseException
InvocationInfo : {Add-AzureRmWebtestAlertRule} Line :
Add-AzureRmWebtestAlertRule `
Position : At line:1 char:1
+ Add-AzureRmWebtestAlertRule
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HistoryId : 80
我终于能够让它工作了,请看下面的脚本。
#later versions of AzureRM don't support Find
#Get-AzureRmResources -ResourceGroupName "My_Website"
$allAlerts = Find-AzureRmResource -ResourceGroupNameEquals "OAT_Website" `
| Where-Object -Property ResourceType -EQ "microsoft.insights/webtests" ;
$vmPrefix = "azesc"
$color = "blue"
$status = "True"
$alertIDs = $allAlerts | Where-Object {$_.Name -like "*$vmPrefix*" -or $_.Name -like "*$color*" } `
| Select-Object -ExpandProperty ResourceId
ForEach ($alertID in $alertIDs) {
$alert = Get-AzureRMResource -ResourceId $alertID
$alert.Properties.Enabled = $status
$alert | Set-AzureRMResource -Force
}
$vmPrefix = "azec"
$color = "green"
$status = "False"
$alertIDs = $allAlerts | Where-Object {$_.Name -like "*$vmPrefix*" -or $_.Name -like "*$color*" } `
| Select-Object -ExpandProperty ResourceId
ForEach ($alertID in $alertIDs) {
$alert = Get-AzureRMResource -ResourceId $alertID
$alert.Properties.Enabled = $status
$alert | Set-AzureRMResource -Force
}
简单的问题,尝试使用 Powershell Azure ARM Disable/Enable 我的 Application Insights 可用性测试。我们已经安排了服务器的重启,我想把这些时间涂黑,这样我们就不会记录错误。
我尝试了以下方法
$alert = Get-AzureRmAlertRule -ResourceGroupName $resourceGroup `
| Where-Object {$_.Name -like '*isalive*'} `
| Where-Object {$_.Name -like "*$vmName*"}
Add-AzureRmWebtestAlertRule -Name $alert.Name `
-Location $alert.Location `
-ResourceGroupName $resourceGroup `
-WindowSize $alert.Condition.WindowSize `
-MetricName $alert.Condition.DataSource.MetricName `
-TargetResourceUri $alert.Id `
-FailedLocationCount $alert.Condition.FailedLocationCount `
-DisableRule `
-Verbose
但我回来了
WARNING: 3:34:18 PM - The namespace for all the model classes will change from Microsoft.Azure.Management.Monitor.Management.Models to Microsoft.Azure.Management.Monitor.Models in future releases.
WARNING: 3:34:18 PM - The namespace for output classes will be uniform for all classes in future releases to make it independent of modifications in the model classes.
VERBOSE: Performing the operation "Create/update an alert rule" on target "Create/update an alert rule: azecdag02 isalive-sitecore production-2c06a496-3567-4871-a57c-2c516c0ccfef from resource group: OAT_Website".
VERBOSE: 3:34:18 PM - CreateRuleCondition: Creating location threshold rule condition (webtest rule)
VERBOSE: 3:34:18 PM - CreateSdkCallParameters: Creating rule object
Add-AzureRmWebtestAlertRule : Exception type: ErrorResponseException, Message: The setting already exists., Code: SettingAlreadyExists, Status code:Conflict, Reason phrase: Conflict At line:1 char:1 + Add-AzureRmWebtestAlertRule ` + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : CloseError: (:) [Add-AzureRmWebtestAlertRule], PSInvalidOperationException + FullyQualifiedErrorId : Microsoft.Azure.Commands.Insights.Alerts.AddAzureRmWebtestAlertRuleCommand
如果我尝试 Resolve-AzureRmError -Last
我会得到
HistoryId: 80
Message : Exception type: ErrorResponseException, Message: The setting already exists., Code: SettingAlreadyExists, Status code:Conflict, Reason phrase: Conflict StackTrace : at Microsoft.Azure.Commands.Insights.MonitorCmdletBase.ExecuteCmdlet() at Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet.ProcessRecord() Exception : System.Management.Automation.PSInvalidOperationException InvocationInfo : {Add-AzureRmWebtestAlertRule} Line : Add-AzureRmWebtestAlertRule ` Position : At line:1 char:1 + Add-AzureRmWebtestAlertRule + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HistoryId : 80
Message : Operation returned an invalid status code 'Conflict' StackTrace : at Microsoft.Azure.Management.Monitor.AlertRulesOperations.d__5.MoveNext() Exception : Microsoft.Azure.Management.Monitor.Models.ErrorResponseException InvocationInfo : {Add-AzureRmWebtestAlertRule} Line : Add-AzureRmWebtestAlertRule ` Position : At line:1 char:1 + Add-AzureRmWebtestAlertRule + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HistoryId : 80
我终于能够让它工作了,请看下面的脚本。
#later versions of AzureRM don't support Find
#Get-AzureRmResources -ResourceGroupName "My_Website"
$allAlerts = Find-AzureRmResource -ResourceGroupNameEquals "OAT_Website" `
| Where-Object -Property ResourceType -EQ "microsoft.insights/webtests" ;
$vmPrefix = "azesc"
$color = "blue"
$status = "True"
$alertIDs = $allAlerts | Where-Object {$_.Name -like "*$vmPrefix*" -or $_.Name -like "*$color*" } `
| Select-Object -ExpandProperty ResourceId
ForEach ($alertID in $alertIDs) {
$alert = Get-AzureRMResource -ResourceId $alertID
$alert.Properties.Enabled = $status
$alert | Set-AzureRMResource -Force
}
$vmPrefix = "azec"
$color = "green"
$status = "False"
$alertIDs = $allAlerts | Where-Object {$_.Name -like "*$vmPrefix*" -or $_.Name -like "*$color*" } `
| Select-Object -ExpandProperty ResourceId
ForEach ($alertID in $alertIDs) {
$alert = Get-AzureRMResource -ResourceId $alertID
$alert.Properties.Enabled = $status
$alert | Set-AzureRMResource -Force
}