Поделиться через


Управляемая служба Azure Monitor для групп правил Prometheus

Правила в Prometheus действуют по мере сбора данных. Они настраиваются как часть группы правил Prometheus, которая применяется к метрикам Prometheus в рабочей области Azure Monitor.

Типы правил

Существует два типа правил Prometheus, как описано в следующей таблице.

Тип Описание
Предупреждение Правила оповещений позволяют создавать оповещение Azure Monitor на основе результатов запроса Prometheus (Prom QL). Оповещения, запущенные правилами генерации оповещений Azure Prometheus, обрабатываются и активируют уведомления аналогично другим оповещениям Azure Monitor.
Запись Правила записи позволяют предварительно вычислять часто необходимые или вычислительно обширные выражения и хранить их результат в новом наборе временных рядов. Временные ряды, созданные правилами записи, возвращаются в рабочую область Azure Monitor в качестве новых метрик Prometheus.

Создание правил Prometheus

Группы правил Azure Managed Prometheus, правила записи и правила оповещения можно создавать и настраивать с помощью типа ресурса 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 Service (AKS) (Microsoft.ContainerService/managedClusters)
  • Кластеры Kubernetes с поддержкой Azure Arc (Microsoft.kubernetes/connectedClusters)
  • Подключенные устройства Azure (Microsoft.ResourceConnector/устройства)

Помимо идентификатора кластера можно настроить свойство clusterName группы правил. Свойство clusterName должно соответствовать cluster метке, добавляемой в ваши метрики при сканировании из определенного кластера. По умолчанию эта метка имеет значение последней части (имя ресурса) идентификатора кластера. Если вы изменили эту метку с помощью параметра "cluster_alias" в configmap для сбора данных кластера, необходимо включить обновленное значение в свойство '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, правила в группе запрашивают данные из всех кластеров в рабочей области.

Вы также можете ограничить группу правил областью кластера с помощью пользовательского интерфейса портала.

В портале Azure создайте или измените группу правил Prometheus.

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

  1. На портале выберите Монитор>Оповещения.

  2. Выбор групп правил Prometheus

    Снимок экрана, на котором показано, как получить доступ к группам правил Prometheus с экрана оповещений Azure Monitor.

  3. Нажмите кнопку +Создать , чтобы открыть мастер создания группы правил

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

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

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

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

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

  1. Выберите рабочую область Azure Monitor из списка рабочих областей, доступных в подписках. Правила этой группы запрашивают данные из этого рабочего пространства.

  2. Чтобы ограничить группу правил областью кластера, выберите параметр "Конкретный кластер ".

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

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

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

На вкладке Details группы правил:

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

Настройка сведений о группе правил Prometheus, показанная на снимке экрана.

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

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

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

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

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

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

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

  • Добавление нового правила генерации оповещений:
  1. Выберите и добавьте правило генерации оповещений, чтобы открыть панель "Создать правило генерации оповещений".
  2. Выберите уровень серьезности оповещений, запущенных этим правилом.
  3. Введите имя правила. Это имя оповещений, запущенных правилом.
  4. Введите выражение PromQL для правила, используя поле редактора, чувствительного к выражениям 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>"
                            }
                        ]
                    }
                ]
            }
        }
    ]
}        

В следующих таблицах описаны все свойства в определении правила.

Группа правил

Группа правил содержит следующие свойства.

Имя Обязательно Тип Описание
name Верно струна Название группы правил для Prometheus
type Верно струна Microsoft.AlertsManagement/prometheusRuleGroups
apiVersion Верно струна 2023-03-01
location Верно струна Расположение ресурсов вне поддерживаемых регионов.
properties.description Неправда струна Описание группы правил.
properties.scopes Верно строка[] Должен включать целевой идентификатор рабочей области Azure Monitor. Также может включать еще один идентификатор кластера.
properties.enabled Неправда булевый Включение и отключение группы. Значение по умолчанию — истинно.
properties.clusterName Неправда струна Должен соответствовать метке cluster, добавляемой в метрики, собранные из целевого кластера. По умолчанию задайте для последней части (имя ресурса) идентификатора кластера, который отображается в областях[].
properties.interval Неправда струна Интервал оценки группы. Default = PT1M

Правила записи

В rules разделе содержатся следующие свойства для правил записи.

Имя Обязательно Тип Описание
record Верно струна Имя правила записи. Это имя используется для новых временных рядов.
expression Верно струна Выражение PromQL для вычисления нового значения временных рядов.
labels Верно струна Метки Prometheus - это пары "ключ-значение". Эти метки добавляются в записанные временные ряды.
enabled Неправда булевый Включение и отключение группы. Значение по умолчанию — истинно.

Правила оповещения

В rules разделе содержатся следующие свойства для правил генерации оповещений.

Имя Обязательно Тип Описание Примечания.
alert Неправда струна Имя правила генерации оповещений
expression Верно струна Выражение PromQL, которое нужно вычислить.
for Неправда струна Время ожидания срабатывания оповещений. Значения — PT1M, PT5M и т. д.
labels Неправда объект метки пар "ключ-значение" Метки правил генерации оповещений Prometheus. Эти метки добавляются к оповещениям, созданным этим правилом.
rules.annotations Неправда объект Пары ключ-значение аннотаций, добавляемые к оповещению.
enabled Неправда булевый Включение и отключение группы. Значение по умолчанию — истинно.
rules.severity Неправда целое число Степень важности оповещения. 0-4, по умолчанию — 3 (информационные)
rules.resolveConfigurations.autoResolved Неправда булевый Если включено, оповещение автоматически разрешается, когда условие больше не является истинным. По умолчанию = истина
rules.resolveConfigurations.timeToResolve Неправда струна Время ожидания автоматического разрешения оповещений. Default = "PT5M"
rules.action[].actionGroupId неправда струна Один или несколько идентификаторов ресурсов группы действий. Каждый активируется при срабатывании оповещения.

Преобразование файла правил 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testrg/providers/microsoft.insights/actionGroups/test-action-group-name1","actionProperties":{"key11":"value11","key12":"value12"}},{"actionGroupId":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testrg/providers/microsoft.insights/actionGroups/test-action-group-name2","actionProperties":{"key21":"value21","key22":"value22"}}]}]

Создание новой группы правил Prometheus с помощью PowerShell

Чтобы создать группу правил Prometheus с помощью PowerShell, используйте cmdlet 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. Выберите "Включить" или "Отключить", чтобы изменить его состояние.

Дальнейшие действия