В этой статье объясняется, как создавать правила генерации оповещений метрик на основе запросов в Azure Monitor с помощью PromQL, охватывающих предварительные требования, параметры конфигурации правил, требования к управляемому удостоверению, методы развертывания и просмотр оповещений и управление ими на портале Azure.
Предпосылки
- Ознакомьтесь с обзором метрик оповещений на основе запросов.
- Управляемая идентификация, назначаемая системой или пользователем. Чтобы использовать назначенное пользователем управляемое удостоверение с правилами оповещений на основе запросов, создайте управляемое удостоверение заранее и настройте его с помощью роли Читателя мониторинга (или эквивалентных разрешений) в рамках области действия правила. Дополнительные сведения о создании и использовании управляемых удостоверений см. в статье об управляемых удостоверениях Azure.
- Ресурс, передающий метрики на основе Prometheus или OTel в рабочее пространство Azure Monitor (AMW). В настоящее время поддерживаются следующие ресурсы: Azure Kubernetes Service (AKS), виртуальные машины Azure, серверы с поддержкой Arc или кластеры с поддержкой Arc. Также поддерживаются пользовательские метрики OTel, отправляемые непосредственно в AMW вашей рабочей нагрузкой. Для получения дополнительной информации см.:
- Чтобы создать правила оповещений на основе ресурсов, рабочая область Azure Monitor должна быть включена для маркировки и доступа, ориентированных на ресурсы.
Включение ресурсо-ориентированного назначения меток и доступа в рабочей области
Включите метку и доступ на основе ресурсов для рабочей области с помощью одного из следующих методов:
В следующем примере Azure CLI используется az rest для вызова Azure Monitor Workspaces - Create Or Update операции REST API.
# Set variables
resourceGroupName="<ResourceGroupName>"
accountName="<AccountName>"
apiVersion="<ApiVersion>"
payloadFile="./enable-stamping.json"
# Get the subscription ID from the current Azure CLI context
subscriptionId=$(az account show --query id --output tsv)
# Build the full resource ID for the Azure Monitor workspace
path="/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName"
provider="Microsoft.Monitor/accounts/$accountName"
url="$path/providers/$provider"
# Enable resource-centric stamping and access
az rest --method put --url "$url?api-version=$apiVersion" --body "@$payloadFile"
Файл полезных данных (enable-stamping.json):
{
"location": "<Location>",
"properties": {
"metrics": {
"enableAccessUsingResourcePermissions": true
}
}
}
В следующем Azure PowerShell примере используется Invoke-AzRestMethod для вызова Azure Monitor Workspaces - Create Or Update операции REST API.
# Set variables
$resourceGroupName = "<ResourceGroupName>"
$accountName = "<AccountName>"
$apiVersion = "<ApiVersion>"
$payloadFile = "./enable-stamping.json"
# Get the subscription ID from the current Azure PowerShell context
$subscriptionId = (Get-AzContext).Subscription.Id
# Build request URL
$apiEndpoint = "https://management.azure.com"
$path = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName"
$provider = "Microsoft.Monitor/accounts/$accountName"
$queryString = "?api-version=$apiVersion"
$url = "$apiEndpoint$path/providers/$provider$queryString"
# Send request
$invokeAzRestMethodParams = @{
Method = "PUT"
Uri = $url
Payload = Get-Content -Raw -Path $payloadFile
}
Invoke-AzRestMethod @invokeAzRestMethodParams
Файл полезных данных (enable-stamping.json):
{
"location": "<Location>",
"properties": {
"metrics": {
"enableAccessUsingResourcePermissions": true
}
}
}
В следующем примере REST используется операция REST API Azure Monitor Workspaces - Create Or Update.
PUT https://management.azure.com/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Monitor/accounts/{AccountName}?api-version={apiVersion}
Authorization: Bearer {AccessToken}
Content-Type: application/json
{
"location": "<Location>",
"properties": {
"metrics": {
"enableAccessUsingResourcePermissions": true
}
}
}
Замечание
Развертывания шаблонов — это операции создания или обновления. Развертывание этого шаблона обновляет существующую рабочую область Azure Monitor, а не вносит частичные изменения.
В следующем примере Bicep используется тип ресурса Microsoft.Monitor accounts.
param accountName string = '<AccountName>'
param location string = '<Location>'
resource monitorWorkspace 'Microsoft.Monitor/accounts@<ApiVersion>' = {
name: accountName
location: location
properties: {
metrics: {
enableAccessUsingResourcePermissions: true
}
}
}
Замечание
Развертывания шаблонов — это операции создания или обновления. Развертывание этого шаблона обновляет существующую рабочую область Azure Monitor, а не вносит частичное изменение.
В следующем примере шаблона ARM используется тип ресурса Microsoft.Monitor accounts.
Включение маркировки с ориентацией на ресурсы и доступа к ним в рабочей области Azure Monitor
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"accountName": {
"type": "string",
"defaultValue": "<AccountName>"
},
"location": {
"type": "string",
"defaultValue": "<Location>"
}
},
"resources": [
{
"type": "Microsoft.Monitor/accounts",
"apiVersion": "<ApiVersion>",
"name": "[parameters('accountName')]",
"location": "[parameters('location')]",
"properties": {
"metrics": {
"enableAccessUsingResourcePermissions": true
}
}
}
]
}
Развертывание оповещения метрик на основе запросов
Создание и настройка правил генерации оповещений метрик на основе запросов с помощью портала Azure или одного из программных подходов в этом разделе. Примеры REST, Azure CLI и Azure PowerShell используют прямые запросы REST для создания или обновления правила генерации оповещений, а примеры шаблонов Bicep и ARM используют шаблоны развертывания.
В этом разделе приведены примеры создания правила оповещения о метриках на основе запросов, ориентированного на ресурс, в котором в качестве области действия используется кластер Azure Kubernetes Service (AKS), а также управляемое удостоверение, назначенное пользователем. В следующих разделах описаны некоторые необходимые свойства и параметры конфигурации. Измените примеры, чтобы использовать собственную область, расположение, запрос, группы действий и другие значения.
Замечание
На портале Azure выберите только один тип ресурса одновременно. Например, нельзя выбирать виртуальные машины и службы Kubernetes.
На странице создания правила генерации оповещений :
Выберите область выбора. Откроется экран выбора ресурса.
В раскрывающемся списке Подписки выберите один или несколько флажков. Отображаются все группы ресурсов в выбранной подписке.
В раскрывающемся списке типов ресурсов отфильтруйте Виртуальные компьютеры, Azure Monitor рабочие области, Kubernetes services или выберите всю группу ресурсов или подписку.
Установите флажок рядом с ресурсами, которые вы хотите использовать.
Нажмите кнопку "Применить".
Нажмите кнопку "Далее": условие или вкладка "Условие ".
В раскрывающемся списке Signal либо:
- Просмотрите все сигналы для использования ранее созданного запроса PromQL, а затем выберите нужный запрос. Поле PromQL заполнено запросом. Затем перейдите к изменению запроса в поле редактора.
- Пользовательский запрос PromQL для создания нового запроса. Поле PromQL отображается пустым и готовым к редактированию запроса. Введите запрос PromQL в поле.
Выберите параметры оповещения:
- В раскрывающемся списке Проверять каждые выберите интервал проверки.
- В раскрывающемся списке "Ожидание" выберите время задержки оповещения. Значение по умолчанию — отсутствие задержки.
Здесь настройте оповещение так же, как и любое другое оповещение. См. другие руководства по созданию оповещений в документации.
В следующем примере Azure CLI используется az rest для вызова Metric Alerts - Create Or Update операции REST API.
# Set variables
resourceGroupName="<ResourceGroupName>"
ruleName="<RuleName>"
apiVersion="<ApiVersion>"
payloadFile="./query-based-metric-alert.json"
# Get the subscription ID from the current Azure CLI context
subscriptionId=$(az account show --query id --output tsv)
# Build the full resource ID for the metric alert rule
path="/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName"
provider="Microsoft.Insights/metricAlerts/$ruleName"
url="$path/providers/$provider"
# Create the query-based metric alert rule
az rest --method put --url "$url?api-version=$apiVersion" --body "@$payloadFile"
Файл полезной нагрузки (query-based-metric-alert.json):
Создать правило оповещения по метрике на основе запроса с ориентацией на ресурс с пользовательским назначаемым удостоверением
{
"location": "<Location>",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UserAssignedMiName>": {}
}
},
"properties": {
"enabled": true,
"description": "Sample query-based metric alert rule",
"severity": 3,
"targetResourceType": "microsoft.monitor/accounts",
"scopes": [
"/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ContainerService/managedClusters/<ClusterName>"
],
"evaluationFrequency": "PT1M",
"criteria": {
"allOf": [
{
"name": "KubeContainerOOMKilledCount",
"query": "sum by (cluster,container,controller,namespace)(kube_pod_container_status_last_terminated_reason{reason=\"OOMKilled\"} * on(cluster,namespace,pod) group_left(controller) label_replace(kube_pod_owner, \"controller\", \"$1\", \"owner_name\", \"(.*)\")) > 0",
"criterionType": "StaticThresholdCriterion"
}
],
"odata.type": "Microsoft.Azure.Monitor.PromQLCriteria",
"failingPeriods": {
"for": "PT5M"
}
},
"resolveConfiguration": {
"autoResolved": true,
"timeToResolve": "PT2M"
},
"actions": [
{
"actionGroupId": "/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.Insights/actionGroups/<ActionGroupName>"
}
],
"actionProperties": {
"Email.Subject": "Prometheus alert - Container killed due to OOM in cluster: ${data.alertContext.condition.allOf[0].dimensions.cluster} in pod: ${data.alertContext.condition.allOf[0].dimensions.pod} container: ${data.alertContext.condition.allOf[0].dimensions.container}"
},
"customProperties": {
"Alert Summary": "Prometheus alert - Container killed due to OOM in cluster: ${data.alertContext.condition.allOf[0].dimensions.cluster} in pod: ${data.alertContext.condition.allOf[0].dimensions.pod} container: ${data.alertContext.condition.allOf[0].dimensions.container}"
}
}
}
В следующем Azure PowerShell примере используется Invoke-AzRestMethod для вызова Metric Alerts - Create Or Update операции REST API.
# Set variables
$resourceGroupName = "<ResourceGroupName>"
$ruleName = "<RuleName>"
$apiVersion = "<ApiVersion>"
$payloadFile = "./query-based-metric-alert.json"
# Get the subscription ID from the current Azure PowerShell context
$subscriptionId = (Get-AzContext).Subscription.Id
# Build request URL
$apiEndpoint = "https://management.azure.com"
$path = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName"
$provider = "Microsoft.Insights/metricAlerts/$ruleName"
$queryString = "?api-version=$apiVersion"
$url = "$apiEndpoint$path/providers/$provider$queryString"
# Send request
$invokeAzRestMethodParams = @{
Method = "PUT"
Uri = $url
Payload = Get-Content -Raw -Path $payloadFile
}
Invoke-AzRestMethod @invokeAzRestMethodParams
Файл полезной нагрузки (query-based-metric-alert.json):
Создать правило оповещения о метрике на основе запроса, ориентированное на ресурс, с помощью удостоверения, назначаемого пользователем
{
"location": "<Location>",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UserAssignedMiName>": {}
}
},
"properties": {
"enabled": true,
"description": "Sample query-based metric alert rule",
"severity": 3,
"targetResourceType": "microsoft.monitor/accounts",
"scopes": [
"/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ContainerService/managedClusters/<ClusterName>"
],
"evaluationFrequency": "PT1M",
"criteria": {
"allOf": [
{
"name": "KubeContainerOOMKilledCount",
"query": "sum by (cluster,container,controller,namespace)(kube_pod_container_status_last_terminated_reason{reason=\"OOMKilled\"} * on(cluster,namespace,pod) group_left(controller) label_replace(kube_pod_owner, \"controller\", \"$1\", \"owner_name\", \"(.*)\")) > 0",
"criterionType": "StaticThresholdCriterion"
}
],
"odata.type": "Microsoft.Azure.Monitor.PromQLCriteria",
"failingPeriods": {
"for": "PT5M"
}
},
"resolveConfiguration": {
"autoResolved": true,
"timeToResolve": "PT2M"
},
"actions": [
{
"actionGroupId": "/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.Insights/actionGroups/<ActionGroupName>"
}
],
"actionProperties": {
"Email.Subject": "Prometheus alert - Container killed due to OOM in cluster: ${data.alertContext.condition.allOf[0].dimensions.cluster} in pod: ${data.alertContext.condition.allOf[0].dimensions.pod} container: ${data.alertContext.condition.allOf[0].dimensions.container}"
},
"customProperties": {
"Alert Summary": "Prometheus alert - Container killed due to OOM in cluster: ${data.alertContext.condition.allOf[0].dimensions.cluster} in pod: ${data.alertContext.condition.allOf[0].dimensions.pod} container: ${data.alertContext.condition.allOf[0].dimensions.container}"
}
}
}
В следующем примере REST используется операция REST API Metric Alerts - Create Or Update.
Создать ориентированное на ресурс правило оповещения о метрике на основе запроса с использованием удостоверения, назначаемого пользователем
PUT https://management.azure.com/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Insights/metricAlerts/{RuleName}?api-version={apiVersion}
Authorization: Bearer {AccessToken}
Content-Type: application/json
{
"location": "<Location>",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UserAssignedMiName>": {}
}
},
"properties": {
"enabled": true,
"description": "Sample query-based metric alert rule",
"severity": 3,
"targetResourceType": "microsoft.monitor/accounts",
"scopes": [
"/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ContainerService/managedClusters/<ClusterName>"
],
"evaluationFrequency": "PT1M",
"criteria": {
"allOf": [
{
"name": "KubeContainerOOMKilledCount",
"query": "sum by (cluster,container,controller,namespace)(kube_pod_container_status_last_terminated_reason{reason=\"OOMKilled\"} * on(cluster,namespace,pod) group_left(controller) label_replace(kube_pod_owner, \"controller\", \"$1\", \"owner_name\", \"(.*)\")) > 0",
"criterionType": "StaticThresholdCriterion"
}
],
"odata.type": "Microsoft.Azure.Monitor.PromQLCriteria",
"failingPeriods": {
"for": "PT5M"
}
},
"resolveConfiguration": {
"autoResolved": true,
"timeToResolve": "PT2M"
},
"actions": [
{
"actionGroupId": "/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.Insights/actionGroups/<ActionGroupName>"
}
],
"actionProperties": {
"Email.Subject": "Prometheus alert - Container killed due to OOM in cluster: ${data.alertContext.condition.allOf[0].dimensions.cluster} in pod: ${data.alertContext.condition.allOf[0].dimensions.pod} container: ${data.alertContext.condition.allOf[0].dimensions.container}"
},
"customProperties": {
"Alert Summary": "Prometheus alert - Container killed due to OOM in cluster: ${data.alertContext.condition.allOf[0].dimensions.cluster} in pod: ${data.alertContext.condition.allOf[0].dimensions.pod} container: ${data.alertContext.condition.allOf[0].dimensions.container}"
}
}
}
Замечание
Развертывания шаблонов — это операции создания или обновления. При развертывании этого шаблона обновляется существующее правило генерации оповещений, а не применение частичного изменения.
В следующем примере Bicep используется тип ресурса Microsoft.Insights metricAlerts.
Создать правило оповещения на основе запроса к метрикам с ориентацией на ресурс и с назначаемым пользователем удостоверением
param subscriptionId string = '<SubscriptionId>'
param resourceGroupName string = '<ResourceGroupName>'
param ruleName string = '<RuleName>'
param userAssignedMiName string = '<UserAssignedMiName>'
param clusterName string = '<ClusterName>'
param actionGroupName string = '<ActionGroupName>'
param location string = '<Location>'
resource sampleQueryBasedAlertRule 'Microsoft.Insights/metricAlerts@<ApiVersion>' = {
name: ruleName
location: location
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/${userAssignedMiName}': {}
}
}
properties: {
enabled: true
description: 'Sample query-based metric alert rule'
severity: 3
targetResourceType: 'microsoft.monitor/accounts'
scopes: [
'/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/${clusterName}'
]
evaluationFrequency: 'PT1M'
criteria: {
allOf: [
{
name: 'KubeContainerOOMKilledCount'
query: 'sum by (cluster,container,controller,namespace)(kube_pod_container_status_last_terminated_reason{reason="OOMKilled"} * on(cluster,namespace,pod) group_left(controller) label_replace(kube_pod_owner, "controller", "$1", "owner_name", "(.*)")) > 0'
criterionType: 'StaticThresholdCriterion'
}
]
'odata.type': 'Microsoft.Azure.Monitor.PromQLCriteria'
failingPeriods: {
for: 'PT5M'
}
}
resolveConfiguration: {
autoResolved: true
timeToResolve: 'PT2M'
}
actions: [
{
actionGroupId: '/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.Insights/actionGroups/${actionGroupName}'
}
]
actionProperties: {
'Email.Subject': 'Prometheus alert - Container killed due to OOM in cluster: \${data.alertContext.condition.allOf[0].dimensions.cluster} in pod: \${data.alertContext.condition.allOf[0].dimensions.pod} container: \${data.alertContext.condition.allOf[0].dimensions.container}'
}
customProperties: {
'Alert Summary': 'Prometheus alert - Container killed due to OOM in cluster: \${data.alertContext.condition.allOf[0].dimensions.cluster} in pod: \${data.alertContext.condition.allOf[0].dimensions.pod} container: \${data.alertContext.condition.allOf[0].dimensions.container}'
}
}
}
Замечание
Развертывания шаблонов — это операции создания или обновления. При развертывании этого шаблона обновляется существующее правило генерации оповещений, а не применение частичного изменения.
В следующем примере шаблона ARM используется тип ресурса Microsoft.Insights metricAlerts.
Создание ориентированного на ресурс правила генерации оповещений на основе запросов к метрикам с удостоверением, назначаемым пользователем
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"subscriptionId": {
"type": "string",
"defaultValue": "<SubscriptionId>"
},
"resourceGroupName": {
"type": "string",
"defaultValue": "<ResourceGroupName>"
},
"ruleName": {
"type": "string",
"defaultValue": "<RuleName>"
},
"userAssignedMiName": {
"type": "string",
"defaultValue": "<UserAssignedMiName>"
},
"clusterName": {
"type": "string",
"defaultValue": "<ClusterName>"
},
"actionGroupName": {
"type": "string",
"defaultValue": "<ActionGroupName>"
},
"location": {
"type": "string",
"defaultValue": "<Location>"
}
},
"resources": [
{
"name": "[parameters('ruleName')]",
"type": "Microsoft.Insights/metricAlerts",
"apiVersion": "<ApiVersion>",
"location": "[parameters('location')]",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[format('/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{2}', parameters('subscriptionId'), parameters('resourceGroupName'), parameters('userAssignedMiName'))]": {}
}
},
"properties": {
"enabled": true,
"description": "Sample query-based metric alert rule",
"severity": 3,
"targetResourceType": "microsoft.monitor/accounts",
"scopes": [
"[format('/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.ContainerService/managedClusters/{2}', parameters('subscriptionId'), parameters('resourceGroupName'), parameters('clusterName'))]"
],
"evaluationFrequency": "PT1M",
"criteria": {
"allOf": [
{
"name": "KubeContainerOOMKilledCount",
"query": "sum by (cluster,container,controller,namespace)(kube_pod_container_status_last_terminated_reason{reason=\"OOMKilled\"} * on(cluster,namespace,pod) group_left(controller) label_replace(kube_pod_owner, \"controller\", \"$1\", \"owner_name\", \"(.*)\")) > 0",
"criterionType": "StaticThresholdCriterion"
}
],
"odata.type": "Microsoft.Azure.Monitor.PromQLCriteria",
"failingPeriods": {
"for": "PT5M"
}
},
"resolveConfiguration": {
"autoResolved": true,
"timeToResolve": "PT2M"
},
"actions": [
{
"actionGroupId": "[format('/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Insights/actionGroups/{2}', parameters('subscriptionId'), parameters('resourceGroupName'), parameters('actionGroupName'))]"
}
],
"actionProperties": {
"Email.Subject": "Prometheus alert - Container killed due to OOM in cluster: ${data.alertContext.condition.allOf[0].dimensions.cluster} in pod: ${data.alertContext.condition.allOf[0].dimensions.pod} container: ${data.alertContext.condition.allOf[0].dimensions.container}"
},
"customProperties": {
"Alert Summary": "Prometheus alert - Container killed due to OOM in cluster: ${data.alertContext.condition.allOf[0].dimensions.cluster} in pod: ${data.alertContext.condition.allOf[0].dimensions.pod} container: ${data.alertContext.condition.allOf[0].dimensions.container}"
}
}
}
]
}
Сведения о конфигурации оповещений метрик на основе запросов
Замечание
В следующих разделах примеры JSON относятся к шаблонам ARM, а также к текстам запросов JSON, используемым в REST, Azure CLI с az rest и Azure PowerShell с Invoke-AzRestMethod. Примеры Bicep показывают эквивалентную конфигурацию в синтаксисе Bicep.
Управляемая идентификация, назначаемая пользователем
Создайте и настройте пользовательское управляемое удостоверение с соответствующими разрешениями перед его включением в конфигурацию правила. Установите identity ->type на UserAssigned и включите идентификатор ресурса MI в identity ->userAssignedIdentities, как показано в следующем примере:
{
identity: {
type: 'UserAssigned',
userAssignedIdentities: {
'/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UserAssignedMiName>': {}
}
}
}
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UserAssignedMiName>": {}
}
}
}
Замечание
Если управляемое удостоверение настроено неправильно с необходимыми разрешениями и ролью, правило оповещения может быть создано успешно, но оценка оповещений может завершиться неудачно, так как доступ к метрикам невозможен.
Назначаемое системой управляемое удостоверение
Правила оповещений по метрикам поддерживают автоматическое назначение ролей для удостоверений, назначаемых системой.
Эта функция упрощает процесс предоставления разрешений управляемым личностям и позволяет правилу уведомлений действовать сразу после создания.
Для успешного автоматического назначения ролей необходимо иметь одну из следующих ролей в пределах действия правила.
-
Owner
-
Администратор доступа пользователей
- Настраиваемая роль с разрешением Microsoft.Authorization/roleAssignments/write
-
Делегированные разрешения администратора для целевой области. Чтобы создать правило оповещения по метрикам с управляемым удостоверением, назначаемым системой, которому автоматически назначается соответствующая роль, у вас должно быть разрешение на назначение роли "Читатель мониторинга" для целевой области.
Замечание
Если вы пытаетесь создать правило, использующее управляемое удостоверение, назначаемое системой, и у вас нет разрешений для автоматического назначения ролей, создание правила завершается ошибкой.
Задайте для свойства identity ->type значение SystemAssigned, как показано в следующем примере:
{
identity: {
type: 'SystemAssigned'
}
}
{
"identity": {
"type": "SystemAssigned"
}
}
С правилом создается новый системно назначенный управляемый идентификатор.
Условия правила на основе запросов
Чтобы создать условие правила генерации оповещений на основе запросов, задайте значение odata.typeMicrosoft.Azure.Monitor.PromQLCriteria. В этом случае определите условие с помощью выражения PromQL в свойстве запроса.
Необязательное свойство for заставляет правило оповещения ожидать в течение определённого времени после того, как условие впервые выполнено, прежде чем будет отправлено оповещение. Например, если для for задано значение 10 минут, условие правила оповещения должно выполняться при каждой проверке в течение 10 минут, прежде чем оповещение сработает.
Замечание
Запрос правила генерации оповещений метрик и свойств эквивалентен выражению правила генерации оповещений Prometheus и предложениям соответственно.
Типы областей правил, ориентированных на ресурсы и рабочие области
Правило генерации оповещений метрик на основе запросов поддерживает два типа области запроса:
Область ресурсов (правила, ориентированные на ресурсы)
Метрики запросов отправляются в любую рабочую область следующими способами:
- конкретным ресурсом Azure или несколькими ресурсами из одной подписки, или
- группа ресурсов, например кластеры Azure Kubernetes (AKS), или
- виртуальная машина (ВМ).
Для правил, ориентированных на ресурсы, поддерживаются следующие параметры области:
| Объем |
Пример |
| Один ресурс |
scopes: ['/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ContainerService/managedClusters/<ClusterName>'] |
| Группа ресурсов |
scopes: ['/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>'] |
| Подписка |
scopes: ['/subscriptions/<SubscriptionId>'] |
| Объем |
Пример |
| Один ресурс |
"scopes": ["/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ContainerService/managedClusters/<ClusterName>"] |
| Группа ресурсов |
"scopes": ["/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>"] |
| Подписка |
"scopes": ["/subscriptions/<SubscriptionId>"] |
Система находит рабочую область, в которой находятся метрики ресурсов. Запрос правила должен ссылаться только на метрики, создаваемые ресурсом в рамках области.
Область рабочей области Azure Monitor (правила, ориентированные на рабочую область)
Метрики запросов, отправляемые в конкретную рабочую область Azure Monitor, независимо от ресурсов, которые их отправляют.
Для области пространства включите идентификатор рабочей области Azure Resource Manager в список Scopes[].
Пример: scopes: ['/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.Monitor/accounts/<AzureMonitorWorkspaceName>']
Пример: "scopes": ["/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.Monitor/accounts/<AzureMonitorWorkspaceName>"]
Запрос правила может ссылаться на любые метрики, хранящиеся в рабочей области Azure Monitor.
Просмотр оповещений на основе запросов на портале Azure
Просмотр сработавших оповещений о метриках на основе запросов
Просмотр сработавших и разрешенных оповещений метрик на основе запросов в портале Azure вместе со всеми другими типами оповещений:
- В меню "Монитор" на портале Azure выберите "Оповещения".
- Если служба Monitor не отображается в качестве параметра фильтра, выберите "Добавить фильтр " и добавьте его.
- Установите фильтр службы Monitor на запрос метрик.
- Выберите имя оповещения, чтобы просмотреть сведения о конкретном сработавшем или решённом оповещении.
Оповещения, запущенные для определенного ресурса, также доступны из самого ресурса. В меню ресурсов на портале Azure выберите оповещения и отфильтруйте службу мониторинга запросов метрик.
Просмотр сведений о правиле генерации оповещений на портале Azure
Просмотрите правила генерации оповещений метрик на основе запросов на портале Azure вместе со всеми другими правилами генерации оповещений. Отфильтруйте только правила метрик, основанные на запросах, и установите фильтр Типы сигналов на Метрики, чтобы увидеть все правила оповещения метрик, включая правила, основанные на запросах.
Изменение оповещения на основе запросов
Замечание
Чтобы изменить существующее правило в вашей подписке с помощью шаблона ARM или шаблона Bicep, измените файл шаблона и повторите процедуру развертывания.
Чтобы изменить правило генерации оповещений метрик на основе запросов на портале Azure, выполните следующие действия.
- На домашнем экране на портале Azure найдите или выберите "Монитор". Откроется начальный экран Azure Monitor.
- Выберите оповещения. Список всех оповещений, к которых у вас есть доступ.
- Выберите оповещение, с которым вы хотите работать. Откроется экран свойств оповещения.
- Выберите "Перейти к правилу генерации оповещений". Откроется экран правила оповещения.
- Выберите Изменить. Откроется экран редактирования оповещений.
- Продолжайте, как и при создании нового правила оповещения.