Включение / отключение тестов доступности AppInsights с Powershell Azure ARM - PullRequest
0 голосов
/ 10 сентября 2018

Простой вопрос: попытка использовать 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

Но я вернулся

ПРЕДУПРЕЖДЕНИЕ: 15:34:18 -Пространство имен для всех классов модели изменится с Microsoft.Azure.Management.Monitor.Management.Models на Microsoft.Azure.Management.Monitor.Models в будущих выпусках.

ПРЕДУПРЕЖДЕНИЕ: 15:34:18 PM -Пространство имен для выходных классов будет единообразным для всех классов в будущих выпусках, чтобы сделать его независимым от изменений в классах модели.

VERBOSE: Выполнение операции «Создать / обновить правило предупреждения» для цели «Создать / обновить»правило оповещения: azecdag02 isalive-sitecore production-2c06a496-3567-4871-a57c-2c516c0ccfef из группы ресурсов: OAT_Website ".

VERBOSE: 15:34:18 PM - CreateRuleCondition: создание условия правила порога местоположения (веб-тестированиеrule)

VERBOSE: 15:34:18 PM - CreateSdkCallParameters: создание объекта правила

Add-AzureRmWebtestAlertRule: тип исключения: ErrorResponseException, сообщение: наборtting уже существует., код: SettingAlreadyExists, код состояния: конфликт, фраза причины: конфликт в строке: 1 символ: 1 + Add-AzureRmWebtestAlertRule `+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: CloseError: (:) [Add-AzureRmWebtestAlertRule], PSInvalidOperationException + FullyQualifiedErrorId: Microsoft.Azure.Commands.Insights.Alerts.AddAzureRmWebtestAlert23 * 10 * 10 10 22Я пытаюсь Resolve-AzureRmError -Last Я получаю

HistoryId: 80

Сообщение: Тип исключения: ErrorResponseException, Сообщение: Настройка уже существует., Код: SettingAlreadyExists, Код состояния: Конфликт, ПричинаФраза: Конфликт StackTrace: в Microsoft.Azure.Commands.Insights.MonitorCmdletBase.ExecuteCmdlet () в Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet.ProcessRecord () Исключение: исключение System.Management.AuidInception.Inception.Ru} Строка: 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} Линия: Atr: 1char: 1 + Add-AzureRmWebtestAlertRule + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HistoryId: 80

1 Ответ

0 голосов
/ 18 июня 2019

Я наконец-то смог заставить это работать, см. Скрипт ниже.

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