Управляемая служба 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.Resource Подключение or/(модуль))

Помимо идентификатора кластера можно настроить свойство 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 (предварительная версия)

Чтобы создать новую группу правил на домашней странице портала, выполните следующие действия.

  1. На портале выберите "Мониторинг оповещений>".
  2. Выбор групп правил PrometheusСнимок экрана, на котором показано, как получить доступ к группам правил Prometheus с экрана оповещений Azure Monitor.
  3. Нажмите кнопку +Создать , чтобы открыть мастер создания группы правил Снимок экрана: шаги по созданию новой группы правил Prometheus.

Чтобы изменить новую группу правил на домашней странице портала, выполните следующие действия.

  1. На портале выберите "Мониторинг оповещений>".
  2. Выберите группы правил Prometheus, чтобы просмотреть список существующих групп правил в подписке
  3. Выберите нужную группу правил, чтобы перейти к режиму редактирования.

Настройка область группы правил

На вкладке области группы правил:

  1. Выберите рабочую область Azure Monitor из списка рабочих областей, доступных в подписках. Правила в этой группе запрашивают данные из этой рабочей области.
  2. Чтобы ограничить группу правил область кластера, выберите параметр "Конкретный кластер":
    • Выберите кластер из списка кластеров, которые уже подключены к выбранной рабочей области Azure Monitor.
    • Для вас вводится значение имени кластера по умолчанию. Это значение следует изменить только в том случае, если вы изменили значение метки кластера с помощью cluster_alias.
  3. Нажмите кнопку "Далее ", чтобы настроить сведения о группе правил

Снимок экрана: настройка группы правил Prometheus область.

Настройка сведений о группе правил

На вкладке сведений о группе правил:

  1. Выберите группу подписок и ресурсов, в которой должна храниться группа правил.
  2. Введите имя и описание группы правил. Имя группы правил нельзя изменить после создания группы правил.
  3. Выберите параметр "Оценить каждый период" для группы правил. По умолчанию используется 1 минута.
  4. Выберите, должна ли группа правил быть включена при создании.
  5. Нажмите кнопку "Далее ", чтобы настроить правила в группе.

Снимок экрана: настройка сведений о группе правил Prometheus.

Настройка правил в группе

  • На вкладке "Правила группы правил" вы увидите список правил записи и правил генерации оповещений в группе.

  • Правила можно добавить до предела 20 правил в одной группе.

  • Правила вычисляются в том порядке, в который они отображаются в группе. Вы можете изменить порядок правил с помощью параметров перемещения вверх и вниз .

  • Чтобы добавить новое правило записи:

  1. Нажмите кнопку + Добавить правило записи, чтобы открыть панель правил записи.
  2. Введите имя правила. Это имя метрики, созданной правилом.
  3. Введите выражение PromQL для правила.
  4. Выберите, следует ли включить правило при создании.
  5. Для правила можно ввести необязательные пары "Ключ-значение меток ". Эти метки добавляются в метрику, созданную правилом.
  6. Нажмите кнопку "Создать", чтобы добавить новое правило в список правил.

Снимок экрана: настройка правила записи группы правил Prometheus.

  • Добавление нового правила генерации оповещений:
  1. Выберите и добавьте правило генерации оповещений, чтобы открыть панель "Создать правило генерации оповещений".
  2. Выберите уровень серьезности оповещений, запущенных этим правилом.
  3. Введите имя правила. Это имя оповещений, запущенных правилом.
  4. Введите выражение PromQL для правила.
  5. Выберите значение Для периода между выражением генерации оповещений сначала становится истинным и пока оповещение не будет запущено.
  6. Для правила можно ввести дополнительные пары ключей и значений примечаний . Эти заметки добавляются в оповещения, созданные правилом.
  7. Для правила можно ввести необязательные пары "Ключ-значение меток ". Эти метки добавляются в оповещения, запущенные правилом.
  8. Выберите группы действий, которые активирует правило.
  9. Выберите автоматическое разрешение оповещений для автоматического разрешения оповещений, если условие правила больше не соответствует времени автоматического разрешения .
  10. Выберите, следует ли включить правило при создании.
  11. Нажмите кнопку "Создать", чтобы добавить новое правило в список правил.

Снимок экрана: настройка правила генерации оповещений группы правил Prometheus.

Завершение создания группы правил

  1. На вкладке "Теги" задайте все необходимые теги ресурсов Azure для добавления в ресурс группы правил. Снимок экрана: вкладка
  2. На вкладке "Рецензирование и создание " группа правил проверяется и сообщает о любых проблемах. На этой вкладке можно также выбрать параметр шаблона автоматизации представления и скачать шаблон для создаваемой группы.
  3. Если проверка пройдена и вы проверили параметры, выберите Создать. Снимок экрана: вкладка
  4. Вы можете следовать развертыванию группы правил, чтобы убедиться, что она успешно завершена или будет уведомлена об ошибке.

Создание группы правил Prometheus с помощью шаблона Resource Manager

Шаблон Resource Manager можно использовать для создания и настройки групп правил Prometheus, правил генерации оповещений и правил записи. Шаблоны Resource Manager позволяют программно создавать и настраивать группы правил в согласованном и воспроизводимом виде во всех средах.

Основные шаги следующие:

  1. Используйте следующий шаблон в виде JSON-файла, описывающего создание группы правил.
  2. Разверните шаблон с помощью любого метода развертывания, например портал 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.

  1. На портале выберите Cloud Shell. В командной строке используйте следующие команды.

  2. Чтобы создать группу правил 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. Снимок экрана: просмотр групп правил Prometheus на экране оповещений.
  • На странице определенного ресурса Служба Azure Kubernetes (AKS) или определенной рабочей области Azure Monitor (AMW) выберите "Мониторинг>оповещений", а затем выберите группы правил Prometheus, чтобы просмотреть список групп правил для этого конкретного ресурса. Вы можете выбрать группу правил из списка, чтобы просмотреть или изменить ее сведения.

Просмотр состояний работоспособности ресурсов групп правил Prometheus

Теперь вы можете просмотреть состояние работоспособности ресурсов группы правил Prometheus на портале. Это позволяет обнаруживать проблемы в группах правил, например неправильные настройки или проблемы регулирования запросов.

  1. На портале перейдите к обзору группы правил Prometheus, которые вы хотите отслеживать.
  2. В области слева в разделе "Справка" выберите "Работоспособности ресурсов". Снимок экрана: просмотр состояния работоспособности ресурсов группы правил Prometheus.
  3. На экране работоспособности ресурсов группы правил можно увидеть текущее состояние доступности группы правил, а также историю последних событий работоспособности ресурсов до 30 дней назад. Снимок экрана: просмотр журнала работоспособности ресурсов группы правил Prometheus.
  • Если группа правил помечена как доступная, она работает должным образом.
  • Если группа правил помечена как "Пониженная", одно или несколько правил в группе не работают должным образом. Это может быть вызвано регулированием запроса правила или другими проблемами, которые могут привести к сбою оценки правила. Разверните запись состояния для получения дополнительных сведений об обнаруженной проблеме, а также предложения по устранению неполадок или дальнейших устранений неполадок.
  • Если группа правил помечена как недоступной, вся группа правил не работает должным образом. Это может быть вызвано проблемой конфигурации (например, не удается обнаружить рабочую область Azure Monitor) или из-за внутренних проблем со службой. Разверните запись состояния для получения дополнительных сведений об обнаруженной проблеме, а также предложения по устранению неполадок или дальнейших устранений неполадок.
  • Если группа правил помечена как "Неизвестно", вся группа правил отключена или находится в неизвестном состоянии.

Отключение и включение групп правил

Чтобы включить или отключить правило, выберите группу правил в портал Azure. Выберите "Включить" или "Отключить", чтобы изменить его состояние.

Следующие шаги