Управляемая служба Azure Monitor для групп правил Prometheus
Правила в Prometheus действуют по мере сбора данных. Они настраиваются как часть группы правил Prometheus, которая применяется к метрикам Prometheus в рабочей области Azure Monitor.
Типы правил
Существует два типа правил Prometheus, как описано в следующей таблице.
Тип | Описание |
---|---|
Предупреждение | Правила оповещений позволяют создавать оповещение Azure Monitor на основе результатов запроса Prometheus (Prom QL). Оповещения, запущенные правилами генерации оповещений Azure Prometheus, обрабатываются и активируют уведомления аналогично другим оповещениям Azure Monitor. |
Запись | Правила записи позволяют предварительно компютировать часто необходимые или вычислительные обширные выражения и хранить их результат в новом наборе временных рядов. Временные ряды, созданные правилами записи, возвращаются в рабочую область Azure Monitor в качестве новых метрик Prometheus. |
Создание правил Prometheus
Группы правил Управляемого prometheus Azure, правила записи и правила генерации оповещений можно создавать и настраивать с помощью типа ресурса Microsoft.AlertsManagement/prometheusRuleGroups, где правила генерации оповещений и правила записи определяются как часть свойств группы правил. Группы правил Prometheus определяются с областью определенной рабочей области Azure Monitor. Группы правил Prometheus можно создавать с помощью шаблонов Azure Resource Manager (ARM), API, Azure CLI или PowerShell.
Группы правил Prometheus в Azure соответствуют структуре и терминологии групп правил prometheus открытый код. Имена правил, выражение, предложение for, метки, заметки поддерживаются в версии Azure. Следует отметить следующие ключевые различия между группами правил OSS и Управляемым Prometheus Azure:
- Управляемые группы правил Prometheus Azure управляются как ресурсы Azure и включают необходимые сведения для управления ресурсами, например подписку и группу ресурсов, в которой должна находиться группа правил Azure.
- Правила генерации оповещений Prometheus в Azure включают выделенные свойства, которые позволяют обрабатывать оповещения, такие как другие оповещения Azure Monitor. Например, уровень серьезности оповещений, связь группы действий и настройка автоматического разрешения оповещений поддерживаются в рамках правил генерации оповещений Azure Prometheus.
Примечание.
Для кластеров AKS или ARC Kubernetes можно использовать некоторые из рекомендуемых правил оповещений. См. предварительно определенные правила генерации оповещений.
Ограничение правил в определенном кластере
При необходимости можно ограничить правила в группе правил для запроса данных, исходящих из одного конкретного кластера, добавив область кластера в группу правил и (или) используя свойство группы clusterName
правил.
Правила следует ограничить одним кластером, если рабочая область Azure Monitor содержит большой объем данных из нескольких кластеров. В таком случае возникает озабоченность по поводу того, что выполнение одного набора правил для всех данных может привести к проблемам с производительностью или регулированием. С помощью области кластера можно создать несколько групп правил, каждый из которых настроен с одинаковыми правилами, с каждой группой, охватывающими другой кластер.
Чтобы ограничить группу правил областью кластера с помощью шаблона ARM, необходимо добавить идентификатор ресурса Azure в список областей групп правил[] . Список областей по-прежнему должен содержать идентификатор ресурса рабочей области Azure Monitor. Следующие типы ресурсов кластера поддерживаются в качестве области кластера:
- кластеры Служба Azure Kubernetes (AKS) (Microsoft.ContainerService/managedClusters)
- Кластеры Kubernetes с поддержкой Azure Arc (Microsoft.kubernetes/connectedClusters)
- Подключенные устройства Azure (Microsoft.ResourceConnector/устройства)
Помимо идентификатора кластера можно настроить свойство clusterName группы правил. Свойство ClusterName должно соответствовать cluster
меткам, добавляемой в метрики при удалении из определенного кластера. По умолчанию эта метка имеет значение последней части (имя ресурса) идентификатора кластера. Если вы изменили эту метку с помощью параметра "cluster_alias" в конфигурации кластера, необходимо включить обновленное значение в свойство "clusterName". Если при очистке используется значение метки кластера по умолчанию, свойство clusterName является необязательным.
Ниже приведен пример настройки группы правил для ограничения запросов к конкретному кластеру:
{
"name": "sampleRuleGroup",
"type": "Microsoft.AlertsManagement/prometheusRuleGroups",
"apiVersion": "2023-03-01",
"location": "northcentralus",
"properties": {
"description": "Sample Prometheus Rule Group limited to a specific cluster",
"scopes": [
"/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.monitor/accounts/<azure-monitor-workspace-name>",
"/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.containerservice/managedclusters/<myClusterName>"
],
"clusterName": "<myCLusterName>",
"rules": [
{
...
}
]
}
}
Если область идентификатора кластера и clusterName
не указаны для группы правил, правила в данных запроса группы из всех кластеров в рабочей области из всех кластеров.
Вы также можете ограничить группу правил областью кластера с помощью пользовательского интерфейса портала.
Создание или изменение группы правил Prometheus в портал Azure
Чтобы создать новую группу правил на домашней странице портала, выполните следующие действия.
- На портале выберите "Мониторинг оповещений>".
- Выбор групп правил Prometheus
- Нажмите кнопку +Создать , чтобы открыть мастер создания группы правил
Чтобы изменить новую группу правил на домашней странице портала, выполните следующие действия.
- На портале выберите "Мониторинг оповещений>".
- Выберите группы правил Prometheus, чтобы просмотреть список существующих групп правил в подписке
- Выберите нужную группу правил, чтобы перейти к режиму редактирования.
Настройка области группы правил
На вкладке области группы правил:
- Выберите рабочую область Azure Monitor из списка рабочих областей, доступных в подписках. Правила в этой группе запрашивают данные из этой рабочей области.
- Чтобы ограничить группу правил областью кластера, выберите параметр "Конкретный кластер ".
- Выберите кластер из списка кластеров, которые уже подключены к выбранной рабочей области Azure Monitor.
- Для вас вводится значение имени кластера по умолчанию. Это значение следует изменить только в том случае, если вы изменили значение метки кластера с помощью cluster_alias.
- Нажмите кнопку "Далее ", чтобы настроить сведения о группе правил
Настройка сведений о группе правил
На вкладке сведений о группе правил:
- Выберите группу подписок и ресурсов, в которой должна храниться группа правил.
- Введите имя и описание группы правил. Имя группы правил нельзя изменить после создания группы правил.
- Выберите параметр "Оценить каждый период" для группы правил. По умолчанию используется 1 минута.
- Выберите, должна ли группа правил быть включена при создании.
- Нажмите кнопку "Далее ", чтобы настроить правила в группе.
Настройка правил в группе
На вкладке "Правила группы правил" вы увидите список правил записи и правил генерации оповещений в группе.
Правила можно добавить до предела 20 правил в одной группе.
Правила вычисляются в том порядке, в который они отображаются в группе. Вы можете изменить порядок правил с помощью параметров перемещения вверх и вниз .
Чтобы добавить новое правило записи:
- Нажмите кнопку + Добавить правило записи, чтобы открыть панель правил записи.
- Введите имя правила. Это имя метрики, созданной правилом.
- Введите выражение PromQL для правила.
- Выберите, следует ли включить правило при создании.
- Для правила можно ввести необязательные пары "Ключ-значение меток ". Эти метки добавляются в метрику, созданную правилом.
- Нажмите кнопку "Создать", чтобы добавить новое правило в список правил.
- Добавление нового правила генерации оповещений:
- Выберите и добавьте правило генерации оповещений, чтобы открыть панель "Создать правило генерации оповещений".
- Выберите уровень серьезности оповещений, запущенных этим правилом.
- Введите имя правила. Это имя оповещений, запущенных правилом.
- Введите выражение PromQL для правила.
- Выберите значение Для периода между выражением генерации оповещений сначала становится истинным и пока оповещение не будет запущено.
- Для правила можно ввести дополнительные пары ключей и значений примечаний . Эти заметки добавляются в оповещения, созданные правилом.
- Для правила можно ввести необязательные пары "Ключ-значение меток ". Эти метки добавляются в оповещения, запущенные правилом.
- Выберите группы действий, которые активирует правило.
- Выберите автоматическое разрешение оповещений для автоматического разрешения оповещений, если условие правила больше не соответствует времени автоматического разрешения .
- Выберите, следует ли включить правило при создании.
- Нажмите кнопку "Создать", чтобы добавить новое правило в список правил.
Завершение создания группы правил
- На вкладке "Теги" задайте все необходимые теги ресурсов Azure для добавления в ресурс группы правил.
- На вкладке "Рецензирование и создание " группа правил проверяется и сообщает о любых проблемах. На этой вкладке можно также выбрать параметр шаблона автоматизации представления и скачать шаблон для создаваемой группы.
- Если проверка пройдена и вы проверили параметры, выберите Создать.
- Вы можете следовать развертыванию группы правил, чтобы убедиться, что она успешно завершена или будет уведомлена об ошибке.
Создание группы правил Prometheus с помощью шаблона Resource Manager
Шаблон Resource Manager можно использовать для создания и настройки групп правил Prometheus, правил генерации оповещений и правил записи. Шаблоны Resource Manager позволяют программно создавать и настраивать группы правил в согласованном и воспроизводимом виде во всех средах.
Основные шаги следующие:
- Используйте следующий шаблон в виде JSON-файла, описывающего создание группы правил.
- Разверните шаблон с помощью любого метода развертывания, например портал Azure, Azure CLI, Azure PowerShell или REST API.
Пример шаблона для группы правил Prometheus
Ниже приведен пример шаблона, который создает группу правил Prometheus, включая одно правило записи и одно правило генерации оповещений. Этот шаблон создает ресурс типа Microsoft.AlertsManagement/prometheusRuleGroups
. Область этой группы ограничена одним кластером AKS. Правила выполняются в том порядке, в который они отображаются в группе.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
"name": "sampleRuleGroup",
"type": "Microsoft.AlertsManagement/prometheusRuleGroups",
"apiVersion": "2023-03-01",
"location": "northcentralus",
"properties": {
"description": "Sample Prometheus Rule Group",
"scopes": [
"/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.monitor/accounts/<azure-monitor-workspace-name>",
"/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.containerservice/managedclusters/<myClusterName>"
],
"enabled": true,
"clusterName": "<myCLusterName>",
"interval": "PT1M",
"rules": [
{
"record": "instance:node_cpu_utilisation:rate5m",
"expression": "1 - avg without (cpu) (sum without (mode)(rate(node_cpu_seconds_total{job=\"node\", mode=~\"idle|iowait|steal\"}[5m])))",
"labels": {
"workload_type": "job"
},
"enabled": true
},
{
"alert": "KubeCPUQuotaOvercommit",
"expression": "sum(min without(resource) (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\", resource=~\"(cpu|requests.cpu)\"})) / sum(kube_node_status_allocatable{resource=\"cpu\", job=\"kube-state-metrics\"}) > 1.5",
"for": "PT5M",
"labels": {
"team": "prod"
},
"annotations": {
"description": "Cluster has overcommitted CPU resource requests for Namespaces.",
"runbook_url": "https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubecpuquotaovercommit",
"summary": "Cluster has overcommitted CPU resource requests."
},
"enabled": true,
"severity": 3,
"resolveConfiguration": {
"autoResolved": true,
"timeToResolve": "PT10M"
},
"actions": [
{
"actionGroupID": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.insights/actiongroups/<action-group-name>"
}
]
}
]
}
}
]
}
В следующих таблицах описаны все свойства в определении правила.
Группа правил
Группа правил содержит следующие свойства.
имени | Обязательно | Type | Описание |
---|---|---|---|
name |
Истина | строка | Имя группы правил Prometheus |
type |
Истина | строка | Microsoft.AlertsManagement/prometheusRuleGroups |
apiVersion |
Истина | строка | 2023-03-01 |
location |
Истина | строка | Расположение ресурсов вне поддерживаемых регионов. |
properties.description |
False | строка | Описание группы правил. |
properties.scopes |
Истина | string[] | Должен включать целевой идентификатор рабочей области Azure Monitor. Также может включать еще один идентификатор кластера. |
properties.enabled |
False | boolean | Включение и отключение группы. Значение по умолчанию — "истина". |
properties.clusterName |
False | строка | Должен соответствовать cluster метки, добавляемой в метрики, сломанные из целевого кластера. По умолчанию задайте для последней части (имя ресурса) идентификатора кластера, который отображается в областях[]. |
properties.interval |
False | строка | Интервал оценки группы. Default = PT1M |
Правила записи
В rules
разделе содержатся следующие свойства для правил записи.
имени | Обязательно | Type | Описание |
---|---|---|---|
record |
Истина | строка | Имя правила записи. Это имя используется для новых временных рядов. |
expression |
Истина | строка | Выражение PromQL для вычисления нового значения временных рядов. |
labels |
Истина | строка | Пары "ключ-значение" для правил Prometheus. Эти метки добавляются в записанные временные ряды. |
enabled |
False | boolean | Включение и отключение группы. Значение по умолчанию — "истина". |
Правила оповещения
В rules
разделе содержатся следующие свойства для правил генерации оповещений.
имени | Обязательно | Type | Description | Основание |
---|---|---|---|---|
alert |
False | строка | Имя правила генерации оповещений | |
expression |
Истина | строка | Выражение PromQL для вычисления. | |
for |
False | строка | Время ожидания срабатывания оповещений. Значения — PT1M, PT5M и т. д. | |
labels |
False | объект | пары "ключ-значение" меток | Метки правил генерации оповещений Prometheus. Эти метки добавляются в оповещения, созданные этим правилом. |
rules.annotations |
False | объект | Примечания пары "ключ-значение", добавляемые в оповещение. | |
enabled |
False | boolean | Включение и отключение группы. Значение по умолчанию — "истина". | |
rules.severity |
False | integer | Серьезность оповещения. 0-4, по умолчанию — 3 (информационные) | |
rules.resolveConfigurations.autoResolved |
False | boolean | При включении оповещение автоматически разрешается, если условие больше не имеет значения true. Default = true | |
rules.resolveConfigurations.timeToResolve |
False | строка | Время ожидания автоматического разрешения оповещений. Default = "PT5M" | |
rules.action[].actionGroupId |
false | строка | Один или несколько идентификаторов ресурсов группы действий. Каждый активируется при срабатывании оповещения. |
Преобразование файла правил Prometheus в шаблон ARM группы правил Prometheus
Если у вас есть файл конфигурации правил Prometheus (в формате YAML), теперь его можно преобразовать в шаблон ARM группы правил Azure Prometheus, используя служебную программу az-prom-rules-converter. Файл правил может содержать определение одной или нескольких групп правил.
Помимо файла правил, необходимо предоставить служебную программу с другими свойствами, необходимыми для создания групп правил Azure Prometheus, включая подписку, группу ресурсов, расположение, целевую рабочую область Azure Monitor, идентификатор целевого кластера и имя кластера, а также группы действий (используемые для правил генерации оповещений). Программа создает файл шаблона, который можно развернуть непосредственно или в канале развертывания, предоставляя некоторые из этих свойств в качестве параметров. Свойства, предоставляемые служебной программе, используются для всех групп правил в шаблоне. Например, все группы правил в файле создаются в одной подписке, группе ресурсов и расположении, а также в одной рабочей области Azure Monitor. Если группа действий предоставляется в качестве параметра служебной программы, то та же группа действий используется во всех правилах генерации оповещений в шаблоне. Если вы хотите изменить эту конфигурацию по умолчанию (например, используйте разные группы действий в разных правилах), можно изменить полученный шаблон в соответствии с вашими потребностями перед развертыванием.
Примечание.
Az-prom-convert-utility предоставляется как любезное средство. Рекомендуется просмотреть полученный шаблон и проверить его соответствие выбранной конфигурации.
Создание группы правил Prometheus с помощью Azure CLI
Azure CLI можно использовать для создания и настройки групп правил Prometheus, правил генерации оповещений и правил записи. В следующих примерах кода используется Azure Cloud Shell.
На портале выберите Cloud Shell. В командной строке используйте следующие команды.
Чтобы создать группу правил Prometheus, используйте
az alerts-management prometheus-rule-group create
команду. Подробные сведения о команде создания группы правил Prometheus см. вaz alerts-management prometheus-rule-group create
разделе команд Azure CLI для создания групп правил Prometheus и управления ими.
Пример. Создание новой группы правил Prometheus с правилами
az alerts-management prometheus-rule-group create -n TestPrometheusRuleGroup -g TestResourceGroup -l westus --enabled --description "test" --interval PT10M --scopes "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/testrg/providers/microsoft.monitor/accounts/testaccount" --rules [{"record":"test","expression":"test","labels":{"team":"prod"}},{"alert":"Billing_Processing_Very_Slow","expression":"test","enabled":"true","severity":2,"for":"PT5M","labels":{"team":"prod"},"annotations":{"annotationName1":"annotationValue1"},"resolveConfiguration":{"autoResolved":"true","timeToResolve":"PT10M"},"actions":[{"actionGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/microsoft.insights/actionGroups/test-action-group-name1","actionProperties":{"key11":"value11","key12":"value12"}},{"actionGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/microsoft.insights/actionGroups/test-action-group-name2","actionProperties":{"key21":"value21","key22":"value22"}}]}]
Создание новой группы правил Prometheus с помощью PowerShell
Чтобы создать группу правил Prometheus с помощью PowerShell, используйте командлет new-azprometheusrulegroup .
Пример. Создание определения группы правил Prometheus с правилами.
$rule1 = New-AzPrometheusRuleObject -Record "job_type:billing_jobs_duration_seconds:99p5m"
$action = New-AzPrometheusRuleGroupActionObject -ActionGroupId /subscriptions/fffffffff-ffff-ffff-ffff-ffffffffffff/resourceGroups/MyresourceGroup/providers/microsoft.insights/actiongroups/MyActionGroup -ActionProperty @{"key1" = "value1"}
$Timespan = New-TimeSpan -Minutes 15
$rule2 = New-AzPrometheusRuleObject -Alert Billing_Processing_Very_Slow -Expression "job_type:billing_jobs_duration_seconds:99p5m > 30" -Enabled $false -Severity 3 -For $Timespan -Label @{"team"="prod"} -Annotation @{"annotation" = "value"} -ResolveConfigurationAutoResolved $true -ResolveConfigurationTimeToResolve $Timespan -Action $action
$rules = @($rule1, $rule2)
$scope = "/subscriptions/fffffffff-ffff-ffff-ffff-ffffffffffff/resourcegroups/MyresourceGroup/providers/microsoft.monitor/accounts/MyAccounts"
New-AzPrometheusRuleGroup -ResourceGroupName MyresourceGroup -RuleGroupName MyRuleGroup -Location eastus -Rule $rules -Scope $scope -Enabled
Просмотр групп правил Prometheus
Группы правил Prometheus и их включенные правила можно просмотреть в портал Azure одним из следующих способов:
- На домашней странице портала в поле поиска найдите группы правил Prometheus.
- На домашней странице портала выберите "Мониторинг оповещений>", а затем выберите группы правил Prometheus.
- На странице определенного ресурса Служба Azure Kubernetes (AKS) или определенной рабочей области Azure Monitor (AMW) выберите "Мониторинг>оповещений", а затем выберите группы правил Prometheus, чтобы просмотреть список групп правил для этого конкретного ресурса. Вы можете выбрать группу правил из списка, чтобы просмотреть или изменить ее сведения.
Просмотр состояний работоспособности ресурсов групп правил Prometheus
Теперь вы можете просмотреть состояние работоспособности ресурсов группы правил Prometheus на портале. Это позволяет обнаруживать проблемы в группах правил, например неправильные настройки или проблемы регулирования запросов.
- На портале перейдите к обзору группы правил Prometheus, которые вы хотите отслеживать.
- В области слева в разделе "Справка" выберите "Работоспособности ресурсов".
- На экране работоспособности ресурсов группы правил можно увидеть текущее состояние доступности группы правил, а также историю последних событий работоспособности ресурсов до 30 дней назад.
- Если группа правил помечена как доступная, она работает должным образом.
- Если группа правил помечена как "Пониженная", одно или несколько правил в группе не работают должным образом. Это может быть вызвано регулированием запроса правила или другими проблемами, которые могут привести к сбою оценки правила. Разверните запись состояния для получения дополнительных сведений об обнаруженной проблеме, а также предложения по устранению неполадок или дальнейших устранений неполадок.
- Если группа правил помечена как Недоступная, вся группа правил не работает должным образом. Это может быть вызвано проблемой конфигурации (например, не удается обнаружить рабочую область Azure Monitor) или из-за внутренних проблем со службой. Разверните запись состояния для получения дополнительных сведений об обнаруженной проблеме, а также предложения по устранению неполадок или дальнейших устранений неполадок.
- Если группа правил помечена как "Неизвестно", вся группа правил отключена или находится в неизвестном состоянии.
Отключение и включение групп правил
Чтобы включить или отключить правило, выберите группу правил в портал Azure. Выберите "Включить" или "Отключить", чтобы изменить его состояние.
Следующие шаги
- Дополнительные сведения о оповещениях Azure.
- Документация по Prometheus для правил записи.
- Документация по Prometheus для правил генерации оповещений.