Serviço gerido do Azure Monitor para grupos de regras do Prometheus (pré-visualização)

As regras no Prometheus atuam sobre os dados à medida que são recolhidos. Estão configurados como parte de um grupo de regras prometheus, que está armazenado na área de trabalho do Azure Monitor. As regras são executadas sequencialmente pela ordem em que são definidas no grupo.

Tipos de regras

Existem dois tipos de regras prometheus, conforme descrito na tabela seguinte.

Tipo Descrição
Alerta As regras de alerta permitem-lhe criar um alerta do Azure Monitor com base nos resultados de uma consulta prometheus Query Language (Prom QL).
Gravação As regras de gravação permitem-lhe pré-calcular expressões frequentemente necessárias ou computacionalmente extensas e armazenar o resultado como um novo conjunto de séries temporísticas. A consulta do resultado pré-concluído será, muitas vezes, muito mais rápida do que executar a expressão original sempre que for necessária. Isto é especialmente útil para dashboards, que precisam de consultar a mesma expressão repetidamente sempre que atualizam ou para utilização em regras de alerta, em que várias regras de alerta podem basear-se na mesma consulta complexa. As séries de tempo criadas pelas regras de gravação são ingeridas novamente na área de trabalho do Azure Monitor como novas métricas do Prometheus.

Ver grupos de regras do Prometheus

Pode ver os grupos de regras e as respetivas regras incluídas no portal do Azure ao selecionar Grupos de regras na área de trabalho do Azure Monitor.

Captura de ecrã a mostrar grupos de regras numa área de trabalho do Azure Monitor.

Ativar regras

Para ativar ou desativar uma regra, clique na regra no portal do Azure. Selecione Ativar ou Desativar para alterar o respetivo estado.

Captura de ecrã a mostrar os detalhes da regra do Prometheus com a opção ativar.

Nota

Depois de desativar ou reativar uma regra ou um grupo de regras, a lista de grupos de regras pode demorar alguns minutos a refletir o estado atualizado da regra ou do grupo.

Criar regras do Prometheus

Na pré-visualização pública, os grupos de regras, as regras de gravação e as regras de alerta são configurados com modelos, API e ferramentas de aprovisionamento do Azure Resource Manager (ARM). Esta ação utiliza um novo recurso denominado Grupo de Regras do Prometheus. Pode criar e configurar recursos do grupo de regras onde as regras de alerta e as regras de gravação são definidas como parte das propriedades do grupo de regras. Os grupos de regras do Azure Prometheus são definidos com um âmbito de uma área de trabalho específica do Azure Monitor.

Pode utilizar um modelo de Resource Manager para criar e configurar grupos de regras do Prometheus, regras de alerta e regras de gravação. Resource Manager modelos permitem-lhe configurar programaticamente regras de alerta e gravação de forma consistente e reproduzível nos seus ambientes.

Os passos básicos são os seguintes:

  1. Utilize os modelos abaixo como um ficheiro JSON que descreve como criar o grupo de regras.
  2. Implemente o modelo com qualquer método de implementação, como portal do Azure, CLI do Azure, Azure PowerShell ou API Rest.

Limitar regras a um cluster específico

Opcionalmente, pode limitar as regras num grupo de regras para consultar dados provenientes de um cluster específico, utilizando a propriedade do grupo clusterName de regras. Deve tentar limitar as regras a um único cluster se a área de trabalho de monitorização contiver uma grande escala de dados de vários clusters e existir uma preocupação de que a execução de um único conjunto de regras em todos os dados possa causar problemas de desempenho ou limitação. Com a clusterName propriedade, pode criar vários grupos de regras, cada um configurado com as mesmas regras, limitando cada grupo para abranger um cluster diferente.

  • O clusterName valor tem de ser idêntico à cluster etiqueta que é adicionada às métricas de um cluster específico durante a recolha de dados.
  • Se clusterName não for especificado para um grupo de regras específico, as regras no grupo consultarão todos os dados na área de trabalho de todos os clusters.

Exemplo de modelo para um grupo de regras do Prometheus

Segue-se um modelo de exemplo que cria um grupo de regras prometheus, incluindo uma regra de gravação e uma regra de alerta. Isto cria um recurso do tipo Microsoft.AlertsManagement/prometheusRuleGroups. As regras são executadas pela ordem em que aparecem num grupo.

{
    "$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": "2021-07-22-preview",
           "location": "northcentralus",
           "properties": {
                "description": "Sample Prometheus Rule Group",
                "scopes": [
                    "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.monitor/accounts/<azure-monitor-workspace-name>"
                ],
                "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>"
                            }
                        ]
                    }
                ]
            }
        }
    ]
}        

As tabelas seguintes descrevem cada uma das propriedades na definição da regra.

Grupo de regras

O grupo de regras terá as seguintes propriedades, quer inclua a regra de alerta, a regra de gravação ou ambas.

Name Necessário Tipo Descrição
name Verdadeiro string Nome do grupo de regras prometheus
type Verdadeiro string Microsoft.AlertsManagement/prometheusRuleGroups
apiVersion Verdadeiro string 2021-07-22-preview
location Verdadeiro string Localização de recursos de regiões suportadas na pré-visualização
properties.description Falso string Descrição do grupo de regras
properties.scopes Verdadeiro cadeia[] Área de trabalho do Azure Monitor de destino. Apenas um âmbito atualmente suportado
properties.ebabled Falso boolean Ativar/desativar grupo. A predefinição é verdadeiro.
properties.clusterName Falso string Aplicar regra a dados de um cluster específico. A predefinição aplica-se a todos os dados na área de trabalho.
properties.interval Falso string Intervalo de avaliação do grupo. Predefinição = PT1M

Regras de gravação

A rules secção terá as seguintes propriedades para regras de gravação.

Name Necessário Tipo Descrição
record Verdadeiro string Nome da regra de gravação. Este é o nome que será utilizado para a nova série temporal.
expression Verdadeiro string Expressão PromQL para calcular o novo valor de série temporal.
labels Verdadeiro string As etiquetas de regras prometheus dos pares chave-valor serão adicionadas à série temporal gravada.
enabled Falso boolean Ativar/desativar grupo. A predefinição é verdadeiro.

Regras de alerta

A rules secção terá as seguintes propriedades para regras de alerta.

Name Necessário Tipo Descrição Notas
alert Falso string Nome da regra de alerta
expression Verdadeiro string Expressão PromQL a avaliar.
for Falso string Tempo limite de acionamento de alertas. Valores – "PT1M", "PT5M", etc.
labels Falso objeto etiquetas de pares chave-valor As etiquetas das regras de alerta do Prometheus serão adicionadas ao alerta acionado.
rules.annotations Falso objeto Anota pares chave-valor para adicionar ao alerta.
enabled Falso boolean Ativar/desativar grupo. A predefinição é verdadeiro.
rules.severity Falso número inteiro Gravidade do alerta. 0-4, predefinição é 3 (informativo)
rules.resolveConfigurations.autoResolved Falso boolean Quando ativado, o alerta é resolvido automaticamente quando a condição já não é verdadeira. Predefinição = verdadeiro
rules.resolveConfigurations.timeToResolve Falso string Tempo limite de resolução automática de alertas. Predefinição = "PT5M"
rules.action[].actionGroupId false string Um ou mais IDs de recursos do grupo de ações. Cada um é ativado quando um alerta é acionado.

Passos seguintes