Проблема в основном заключается в том, что я пытался обновить уже существующий ресурс «Microsoft.Insights/scheduledQueryRules» в Azure, но получил ошибку: «Область не может быть обновлена (неверный запрос)».
Я загрузил ARM для обновления уже существующего ресурса, надеясь, что смогу изменить область действия, потому что я создал новый AppInisghts, но он выдал ошибку выше.
Я почти уверен, что ответ заключается в том, что такого рода ресурсы не могут обновлять свои области действия. Но почему? «Microsoft.Insights/metricAlerts» может это сделать :(
После небольшого исследования я нашел эту проблему в соответствующей документации по переносу оповещений https://github.com/MicrosoftDocs/azure-docs/issues/108608
Просто хотел убедиться, что я не могу обновить область действия, и если это правда, предупредите всех этим сообщением, чтобы они не теряли время на поиск решения (потому что я не нашел ничего проясняющего в официальных документах).
Спасибо всем.
ПД: Я уверен, что удаление ресурса и его повторное создание помогут, но сейчас я не могу этого сделать.
Код ARM, который вы можете использовать для проверки моей проблемы:
Предварительное условие: иметь существующий ресурс с установленной областью действия.
{
"type": "Microsoft.Insights/scheduledQueryRules",
"apiVersion": "2022-08-01-preview",
"name": "string",
"location": "string",
"tags": {
"tagName1": "tagValue1",
"tagName2": "tagValue2"
},
"kind": "string",
"identity": {
"type": "string",
"userAssignedIdentities": {}
},
"properties": {
"actions": {
"actionGroups": [ "string" ],
"customProperties": {}
},
"scopes": [ PUT NEW SCOPE HERE ],
}
}


Если вы хотите обновить существующий код в ARM, вам необходимо выполнить следующие шаги, поскольку невозможно обновить свойство scope напрямую после завершения развертывания.
Обратитесь к MSDoc для получения информации о соответствующих функциях.
Если ресурс уже существует в группе ресурсов и его параметры не изменились, для этого ресурса не выполняется никаких операций. Если вы измените значения свойств ресурса, ресурс обновится с использованием этих новых значений.
Если вы попытаетесь обновить расположение, тип или область существующего ресурса, развертывание завершится ошибкой. Вместо этого разверните новый ресурс с нужным вам расположением или типом.
Но описанная выше функциональность не подходит для вашей среды, как вы упомянули в этом утверждении.
Я уверен, что удаление ресурса и его повторное создание помогут, но сейчас я не могу этого сделать.
Альтернативный подход — использование опции export template под ресурсом.
Чтобы добиться этого, сначала я развернул правило запланированного запроса Insight с областью действия в качестве идентификатора ресурса виртуальной машины, и развертывание завершилось успешно, как показано ниже.

Теперь перейдите на этот развернутый ресурс на портале и посетите Automation >> Export Template, как показано ниже.
См. Шаблон экспорта MS Doc.

После создания соответствующего шаблона Json нажмите кнопку Deploy, и вы перенаправитесь на страницу custom deployment. Теперь выберите опцию Edit template в верхней части страницы и добавьте приведенный ниже код с измененной областью действия (workspace ID), как показано ниже.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"metricAlerts_mylatalertj_name": {
"defaultValue": "mylatalertj",
"type": "String"
},
"workspace_externalid": {
"defaultValue": "/subscriptions/xxxxx/resourcegroups/xxxxx/providers/microsoft.operationalinsights/workspaces/newwsj",
"type": "String"
},
"actiongroups_newact_externalid": {
"defaultValue": "/subscriptions/xxxxx/resourceGroups/xxxxx/providers/microsoft.insights/actiongroups/newact",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Insights/metricAlerts",
"apiVersion": "2018-03-01",
"name": "[parameters('metricAlerts_mylatalertj_name')]",
"location": "global",
"tags": {
"Reason": "Repro",
"CreatedDate": "2/26/2024 8:08:20 AM",
"CreatedBy": "NA",
"OwningTeam": "NA"
},
"properties": {
"description": "This is a metric alert",
"severity": 3,
"enabled": true,
"scopes": [
"[parameters('workspace_externalid')]"
],
"evaluationFrequency": "PT1M",
"windowSize": "PT5M",
"criteria": {
"allOf": [
{
"threshold": 0,
"name": "1st criterion",
"metricName": "<Metric Name>", //As per your requirement
"operator": "GreaterThan",
"timeAggregation": "Average",
"criterionType": "StaticThresholdCriterion"
}
],
"odata.type": "Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria"
},
"actions": [
{
"actionGroupId": "[parameters('actiongroups_newact_externalid')]"
}
]
}
}
]
}
После применения изменений нажмите Save и перейдите к Review + create,, затем выберите Create. Это инициирует развертывание обновленного ресурса с существующей конфигурацией путем изменения нового свойства scope и значения.

Как и в случае с оповещениями о метриках, вы можете попробовать использовать правила запланированных запросов, и они будут работать через собственный шаблон портала. Можете ли вы попробовать один раз? @jaumecen
Я также обновлю правило запланированного запроса. @jaumecen
Возможно, я не совсем ясно выразился по исходному вопросу, но моя цель здесь — обновить сам ресурс. Если это невозможно сделать, это нормально, я хотел бы знать, почему с помощью «metricAlert» вы можете и почему «scheduledqueryrule» нет (если вы мне не верите, зайдите на портал и попробуйте отредактировать оба этих ресурса, и вы увидите, что он неактивен для «scheduledqueryrule». Я очень ценю вашу помощь @jahnavi.
К сожалению, это не решило проблему
Пробовали ли вы ту же функциональность для правила запланированного запроса? @jaumecen
Да, я получаю сообщение об ошибке «Область не может быть обновлена» в сведениях о развертывании.
Я только что попробовал простой Microsoft.Insights/scheduledQueryRules rest API
Простой API для отдыха устраняет неопределенность, вызванную шаблоном руки.
повторно выдает то же сообщение об ошибке, я думаю, что это встроенная функция. Рекомендуется напрямую изменить имя оповещения и повторно развернуть новое оповещение.
Да, я так и думал... Хуже всего то, что я не нашел этого явно ни в одной документации, я ценю это и отмечу это как ответ.
Спасибо большое за ответ, но поправьте меня, если я ошибаюсь. Разве ваше решение не основано на metricAlert? Фактически metricAlerts позволяет изменять область действия как угодно, через портал и через ARM. Моя проблема связана с «Microsoft.Insights/scheduledQueryRules», в частности, с этим, даже если вы зайдете на портал и попытаетесь отредактировать область вручную, вы увидите неактивную «область редактирования». Возможно, я что-то упускаю из вашего ответа, но на ваших изображениях я вижу только metricAlert.