使用Powershell Azure ARM启用/禁用AppInsights可用性测试

时间:2018-09-10 19:48:46

标签: azure powershell azure-application-insights azure-powershell

一个简单的问题,尝试使用Powershell Azure ARM禁用/启用我的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

https://docs.microsoft.com/en-us/powershell/module/azurerm.insights/add-azurermwebtestalertrule?view=azurermps-6.8.1

但我回来了

  

警告:下午3:34:18-所有模型类的名称空间将   从Microsoft.Azure.Management.Monitor.Management.Models更改为   未来版本中的Microsoft.Azure.Management.Monitor.Models。

     

警告:下午3:34:18-输出类的名称空间在将来的发行版中对于所有类都是统一的,以使其独立于   在模型类中进行修改。

     

详细:在目标“创建/更新警报规则”上执行“创建/更新警报规则”操作:azecdag02 isalive-sitecore   资源组中的production-2c06a496-3567-4871-a57c-2c516c0ccfef:   OAT_Website”。

     

VERBOSE:下午3:34:18-CreateRuleCondition:创建位置阈值规则条件(网络测试规则)

     

VERBOSE:下午3:34:18-CreateSdkCallParameters:创建规则对象

     

Add-AzureRmWebtestAlertRule:异常类型:ErrorResponseException,消息:该设置已存在。,代码:   SettingAlreadyExists,状态代码:冲突,原因短语:冲突       在第1行:char:1       + Add-AzureRmWebtestAlertRule`       + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~           + CategoryInfo:CloseError :( :) [Add-AzureRmWebtestAlertRule],PSInvalidOperationException           + FullyQualifiedErrorId:Microsoft.Azure.Commands.Insights.Alerts.AddAzureRmWebtestAlertRuleCommand

如果我尝试Resolve-AzureRmError -Last我会得到

  

HistoryId:80

     

消息:异常类型:ErrorResponseException,消息:   设置已经存在。,代码:SettingAlreadyExists,状态   代码:冲突,原因短语:冲突StackTrace:位于   Microsoft.Azure.Commands.Insights.MonitorCmdletBase.ExecuteCmdlet()                       在Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet.ProcessRecord()   例外情况:   System.Management.Automation.PSInvalidOperationException   InvocationInfo:{Add-AzureRmWebtestAlertRule}行:   Add-AzureRmWebtestAlertRule`                     位置:在线:1字符:1                    + Add-AzureRmWebtestAlertRule                    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HistoryId:80

     

消息:操作返回了无效的状态码“冲突”   StackTrace:位于   Microsoft.Azure.Management.Monitor.AlertRulesOperations.d__5.MoveNext()   例外情况:   Microsoft.Azure.Management.Monitor.Models.ErrorResponseException   InvocationInfo:{Add-AzureRmWebtestAlertRule}行:   Add-AzureRmWebtestAlertRule`                     位置:在线:1字符:1                    + Add-AzureRmWebtestAlertRule                    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HistoryId:80

1 个答案:

答案 0 :(得分:1)

我终于能够使它正常工作,请参见以下脚本。

https://feedback.azure.com/forums/357324-application-insights/suggestions/16304431-possibility-to-enable-disable-availability-web-tes

#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
}