Serviço gerenciado do Azure Monitor para grupos de regras do Prometheus

As regras do Prometheus atuam sobre os dados à medida que são coletados. Eles são configurados como parte de um grupo de regras do Prometheus, que é aplicado às métricas do Prometheus no espaço de trabalho do Azure Monitor.

Tipos de regras

Existem dois tipos de regras Prometheus, conforme descrito na tabela a seguir.

Tipo Description
Alerta As regras de alerta permitem criar um alerta do Azure Monitor com base nos resultados de uma consulta Prometheus Query Language (Prom QL). Os alertas disparados pelas regras de alerta do Azure Managed Prometheus são processados e disparam notificações de forma semelhante a outros alertas do Azure Monitor.
A gravar As regras de gravação permitem pré-calcular expressões frequentemente necessárias ou computacionalmente extensas e armazenar o seu resultado como um novo conjunto de séries temporais. As séries temporais criadas pelas regras de gravação são ingeridas de volta ao seu espaço de trabalho do Azure Monitor como novas métricas do Prometheus.

Criar regras Prometheus

Os grupos de regras do Azure Managed Prometheus, as regras de gravação e as regras de alerta podem ser criados e configurados usando o tipo de recurso do Azure Microsoft.AlertsManagement/prometheusRuleGroups, onde as regras de alerta e as regras de registro são definidas como parte das propriedades do grupo de regras. Os grupos de regras do Prometheus são definidos com um escopo de um espaço de trabalho específico do Azure Monitor. Os grupos de regras do Prometheus podem ser criados usando modelos do Azure Resource Manager (ARM), API, CLI do Azure ou PowerShell.

Os grupos de regras do Prometheus gerenciados pelo Azure seguem a estrutura e a terminologia dos grupos de regras do Prometheus de código aberto. Nomes de regras, expressão, cláusula 'for', rótulos, anotações são todos suportados na versão do Azure. As seguintes diferenças principais entre os grupos de regras do OSS e o Azure managed Prometheus devem ser observadas:

  • Os grupos de regras do Azure Prometheus gerenciados são gerenciados como recursos do Azure e incluem informações necessárias para o gerenciamento de recursos, como a assinatura e o grupo de recursos onde o grupo de regras do Azure deve residir.
  • As regras de alerta do Azure managed Prometheus incluem propriedades dedicadas que permitem que os alertas sejam processados como outros alertas do Azure Monitor. Por exemplo, a gravidade do alerta, a associação do grupo de ação e a configuração de resolução automática de alertas são suportadas como parte das regras de alerta do Azure gerenciado pelo Prometheus.

Nota

Para seus clusters Kubernetes AKS ou ARC, você pode usar algumas das regras de alertas recomendadas. Consulte as regras de alerta predefinidas aqui.

Limitando regras a um cluster específico

Opcionalmente, você pode limitar as regras em um grupo de regras para consultar dados originários de um único cluster específico, adicionando um escopo de cluster ao seu grupo de regras e/ou usando a propriedade rule group clusterName . Você deve limitar as regras a um único cluster se seu espaço de trabalho do Azure Monitor contiver uma grande quantidade de dados de vários clusters. Nesse caso, há 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. Usando o escopo do cluster, você pode criar vários grupos de regras, cada um configurado com as mesmas regras, com cada grupo cobrindo um cluster diferente.

Para limitar seu grupo de regras a um escopo de cluster usando um modelo ARM, você deve adicionar a ID de Recursos do Azure do cluster à lista de escopos do grupo de regras[]. A lista de escopos ainda deve incluir a ID do recurso do espaço de trabalho do Azure Monitor. Os seguintes tipos de recursos de cluster são suportados como um escopo de cluster:

  • Clusters do Serviço Kubernetes do Azure (AKS) (Microsoft.ContainerService/managedClusters)
  • Clusters Kubernetes habilitados para Azure Arc (Microsoft.kubernetes/connectedClusters)
  • Dispositivos conectados do Azure (Microsoft.ResourceConnector/appliances)

Além da ID do cluster, você pode configurar a propriedade clusterName do seu grupo de regras. A propriedade 'clusterName' deve corresponder ao cluster rótulo que é adicionado às suas métricas quando raspado de um cluster específico. Por padrão, esse rótulo é definido como a última parte (nome do recurso) da ID do cluster. Se você alterou esse rótulo usando a configuração 'cluster_alias' no seu mapa de configuração de raspagem de cluster, você deve incluir o valor atualizado na propriedade 'clusterName' do grupo de regras. Se a raspagem usar o valor padrão do rótulo 'cluster', a propriedade 'clusterName' será opcional.

Veja um exemplo de como um grupo de regras é configurado para limitar a consulta a um cluster específico:

{
    "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": [
             {
                ...
             }
         ]
    }
}        

Se o escopo da ID do cluster não clusterName for especificado para um grupo de regras, as regras no grupo consultarão dados de todos os clusters no espaço de trabalho de todos os clusters.

Você também pode limitar seu grupo de regras a um escopo de cluster usando a interface do usuário do portal.

Criar ou editar o grupo de regras Prometheus no portal do Azure (visualização)

Para criar um novo grupo de regras a partir da página inicial do portal:

  1. No portal, selecione Monitorar>alertas.
  2. Selecionar grupos de regras do PrometheusCaptura de ecrã que mostra como aceder aos grupos de regras Prometheus a partir do ecrã de alertas do Azure Monitor.
  3. Selecione + Criar para abrir o assistente de criação de grupo de regras Captura de tela que mostra as etapas para criar um novo grupo de regras do Prometheus.

Para editar um novo grupo de regras na página inicial do portal:

  1. No portal, selecione Monitorar>alertas.
  2. Selecione Prometheus Rule Groups para ver a lista de grupos de regras existentes na sua subscrição
  3. Selecione o grupo de regras desejado para entrar no modo de edição.

Configurar o escopo do grupo de regras

No separador Âmbito do grupo de regras:

  1. Selecione o espaço de trabalho do Azure Monitor em uma lista de espaços de trabalho disponíveis em suas assinaturas. As regras neste grupo consultam dados deste espaço de trabalho.
  2. Para limitar seu grupo de regras a um escopo de cluster, selecione a opção Cluster específico:
    • Selecione o Cluster na lista de clusters que já estão conectados ao espaço de trabalho selecionado do Azure Monitor.
    • O valor padrão Nome do cluster é inserido para você. Você deve alterar esse valor somente se tiver alterado o valor do rótulo do cluster usando cluster_alias.
  3. Selecione Avançar para configurar os detalhes do grupo de regras

Captura de tela que mostra a configuração do escopo do grupo de regras Prometheus.

Configurar os detalhes do grupo de regras

No separador Detalhes do grupo de regras:

  1. Selecione o grupo Assinatura e Recursos onde o grupo de regras deve ser armazenado.
  2. Insira o nome e a descrição do grupo de regras. O nome do grupo de regras não pode ser alterado após a criação do grupo de regras.
  3. Selecione Avaliar todos os períodos para o grupo de regras. 1 minuto é o padrão.
  4. Selecione se o grupo de regras deve ser habilitado quando criado.
  5. Selecione Avançar para configurar as regras no grupo.

Captura de tela que mostra a configuração dos detalhes do grupo de regras Prometheus.

Configurar as regras no grupo

  • Na guia Regras do grupo de regras, você pode ver a lista de regras de gravação e regras de alerta no grupo.

  • Você pode adicionar regras até o limite de 20 regras em um único grupo.

  • As regras são avaliadas na ordem em que aparecem no grupo. Você pode alterar a ordem das regras usando as opções mover para cima e mover para baixo .

  • Para adicionar uma nova regra de gravação:

  1. Selecione + Adicionar regra de gravação para abrir o painel Criar uma regra de gravação.
  2. Insira o Nome da regra. Esse nome é o nome da métrica criada pela regra.
  3. Insira a expressão PromQL para a regra.
  4. Selecione se a regra deve ser habilitada quando criada.
  5. Você pode inserir pares opcionais de chave/valor de rótulos para a regra. Esses rótulos são adicionados à métrica criada pela regra.
  6. Selecione Criar para adicionar a nova regra à lista de regras.

Captura de tela que mostra a configuração da regra de gravação do grupo de regras Prometheus.

  • Para adicionar uma nova regra de alerta:
  1. Selecione + Adicionar regra de alerta para abrir o painel "Criar uma regra de alerta".
  2. Selecione a Gravidade dos alertas disparados por esta regra.
  3. Insira o Nome da regra. Este nome é o nome dos alertas disparados pela regra.
  4. Insira a expressão PromQL para a regra.
  5. Selecione o valor For para o período entre a expressão de alerta se tornar verdadeira pela primeira vez e até que o alerta seja acionado.
  6. Você pode inserir pares opcionais de chave/valor de anotações para a regra. Essas anotações são adicionadas aos alertas disparados pela regra.
  7. Você pode inserir pares opcionais de chave/valor de rótulos para a regra. Esses rótulos são adicionados aos alertas disparados pela regra.
  8. Selecione os grupos de ações acionados pela regra.
  9. Selecione Alerta de resolução automática para resolver automaticamente os alertas se a condição da regra não for mais verdadeira durante o período de Tempo de resolução automática.
  10. Selecione se a regra deve ser habilitada quando criada.
  11. Selecione Criar para adicionar a nova regra à lista de regras.

Captura de tela que mostra a configuração da regra de alerta de grupo de regras Prometheus.

Concluir a criação do grupo de regras

  1. Na guia Marcas, defina todas as marcas de recursos do Azure necessárias a serem adicionadas ao recurso do grupo de regras. Captura de ecrã que mostra o separador Etiquetas ao criar uma nova regra de alerta.
  2. Na guia Revisar + criar, o grupo de regras é validado e informa sobre quaisquer problemas. Nesta guia, você também pode selecionar a opção Exibir modelo de automação e baixar o modelo para o grupo que está prestes a criar.
  3. Quando a validação for aprovada e tiver revisto as definições, selecione o botão Criar. Captura de ecrã que mostra o separador Rever e criar ao criar uma nova regra de alerta.
  4. Você pode acompanhar a implantação do grupo de regras para garantir que ela seja concluída com êxito ou ser notificada sobre qualquer erro.

Criando um grupo de regras do Prometheus usando o modelo do Gerenciador de Recursos

Você pode usar um modelo do Gerenciador de Recursos para criar e configurar grupos de regras do Prometheus, regras de alerta e regras de gravação. Os modelos do Resource Manager permitem que você crie e configure grupos de regras programaticamente de forma consistente e reproduzível em todos os seus ambientes.

Os passos básicos são os seguintes:

  1. Use o modelo a seguir como um arquivo JSON que descreve como criar o grupo de regras.
  2. Implante o modelo usando qualquer método de implantação, como o portal do Azure, a CLI do Azure, o Azure PowerShell ou a API Rest.

Exemplo de modelo para um grupo de regras Prometheus

Segue-se um modelo de exemplo que cria um grupo de regras Prometheus, incluindo uma regra de registo e uma regra de alerta. Este modelo cria um recurso do tipo Microsoft.AlertsManagement/prometheusRuleGroups. O escopo deste grupo é limitado a um único cluster AKS. As regras são executadas na ordem em que aparecem dentro de um 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": "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>"
                            }
                        ]
                    }
                ]
            }
        }
    ]
}        

As tabelas a seguir descrevem cada uma das propriedades na definição de regra.

Grupo de regras

O grupo de regras contém as seguintes propriedades.

Nome Obrigatório Type Description
name True string Nome do grupo de regras Prometheus
type True string Microsoft.AlertsManagement/prometheusRuleGroups
apiVersion True string 2023-03-01
location True string Localização do recurso das regiões suportadas na pré-visualização.
properties.description False string Descrição do grupo de regras.
properties.scopes True string[] Deve incluir a ID do espaço de trabalho do Azure Monitor de destino. Opcionalmente, também pode incluir mais um ID de cluster.
properties.enabled False boolean Ativar/desativar grupo. A predefinição é verdadeiro.
properties.clusterName False string Deve corresponder ao cluster rótulo que é adicionado às métricas raspadas do cluster de destino. Por padrão, defina como a última parte (nome do recurso) da ID do cluster que aparece nos escopos[].
properties.interval False string Intervalo de avaliação do grupo. Padrão = PT1M

Regras de gravação

A rules seção contém as seguintes propriedades para regras de gravação.

Nome Obrigatório Type Description
record True string Nome da regra de gravação. Este nome é usado para a nova série temporal.
expression True string Expressão PromQL para calcular o novo valor de série temporal.
labels True string A regra Prometheus rotula pares chave-valor. Esses rótulos são adicionados à série temporal gravada.
enabled False boolean Ativar/desativar grupo. A predefinição é verdadeiro.

Regras de alertas

A rules seção contém as seguintes propriedades para regras de alerta.

Nome Obrigatório Type Description Notas
alert False string Nome da regra de alerta
expression True string Expressão PromQL para avaliar.
for False string Tempo limite de disparo de alerta. Valores - PT1M, PT5M etc.
labels False objeto Rótulos Pares chave-valor Rótulos de regras de alerta do Prometheus. Esses rótulos são adicionados aos alertas disparados por essa regra.
rules.annotations False objeto Anotações de pares chave-valor para adicionar ao alerta.
enabled False boolean Ativar/desativar grupo. A predefinição é verdadeiro.
rules.severity False integer Gravidade do alerta. 0-4, o padrão é 3 (informativo)
rules.resolveConfigurations.autoResolved False boolean Quando ativado, o alerta é resolvido automaticamente quando a condição não é mais verdadeira. Padrão = true
rules.resolveConfigurations.timeToResolve False string Tempo limite de resolução automática de alerta. Padrão = "PT5M"
rules.action[].actionGroupId false string Uma ou mais IDs de recursos do grupo de ações. Cada um é ativado quando um alerta é disparado.

Convertendo o arquivo de regras do Prometheus em um modelo ARM do grupo de regras do Prometheus

Se você tiver um arquivo de configuração de regras do Prometheus (no formato YAML), agora poderá convertê-lo em um modelo ARM do grupo de regras do Azure Prometheus, usando o utilitário az-prom-rules-converter. O arquivo de regras pode conter a definição de um ou mais grupos de regras.

Além do arquivo de regras, você deve fornecer ao utilitário outras propriedades necessárias para criar os grupos de regras do Azure Prometheus, incluindo: assinatura, grupo de recursos, local, espaço de trabalho do Azure Monitor de destino, ID e nome do cluster de destino e grupos de ação (usados para regras de alerta). O utilitário cria um arquivo de modelo que pode ser implantado diretamente ou dentro de um pipe de implantação, fornecendo algumas dessas propriedades como parâmetros. As propriedades fornecidas ao utilitário são usadas para todos os grupos de regras no modelo. Por exemplo, todos os grupos de regras no arquivo são criados na mesma assinatura, grupo de recursos e local, e usando o mesmo espaço de trabalho do Azure Monitor. Se um grupo de ações for fornecido como um parâmetro para o utilitário, o mesmo grupo de ações será usado em todas as regras de alerta no modelo. Se quiser alterar essa configuração padrão (por exemplo, usar diferentes grupos de ações em regras diferentes), você pode editar o modelo resultante de acordo com suas necessidades, antes de implantá-lo.

Nota

O az-prom-convert-utility é fornecido como uma ferramenta de cortesia. Recomendamos que você revise o modelo resultante e verifique se ele corresponde à configuração pretendida.

Criando o grupo de regras Prometheus usando a CLI do Azure

Você pode usar a CLI do Azure para criar e configurar grupos de regras do Prometheus, regras de alerta e regras de gravação. Os exemplos de código a seguir usam o Azure Cloud Shell.

  1. No portal, selecione Cloud Shell. No prompt, use os comandos a seguir.

  2. Para criar um grupo de regras Prometheus, use o az alerts-management prometheus-rule-group create comando. Você pode ver a documentação detalhada sobre o comando Prometheus rule group create na az alerts-management prometheus-rule-group create seção dos comandos da CLI do Azure para criar e gerenciar grupos de regras do Prometheus.

Exemplo: Criar um novo grupo de regras do Prometheus com regras

 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"}}]}]

Criar um novo grupo de regras do Prometheus com o PowerShell

Para criar um grupo de regras Prometheus usando o PowerShell, use o cmdlet new-azprometheusrulegroup .

Exemplo: Crie a definição de grupo de regras do Prometheus com regras.

$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

Ver grupos de regras do Prometheus

Você pode exibir seus grupos de regras do Prometheus e suas regras incluídas no portal do Azure de uma das seguintes maneiras:

Exibir os estados de integridade dos recursos dos grupos de regras do Prometheus

Agora você pode exibir o estado de integridade do recurso do seu grupo de regras Prometheus no portal. Isso pode permitir que você detete problemas em seus grupos de regras, como configuração incorreta ou problemas de limitação de consulta

  1. No portal, vá para a visão geral do seu grupo de regras Prometheus que você gostaria de monitorar
  2. No painel esquerdo, em Ajuda, selecione Estado de funcionamento do recurso. Captura de tela que mostra como exibir o estado de integridade do recurso de um grupo de regras Prometheus.
  3. Na tela de integridade do recurso do grupo de regras, você pode ver o estado de disponibilidade atual do grupo de regras, bem como um histórico de eventos recentes de integridade do recurso, até 30 dias atrás. Captura de tela que mostra como exibir o histórico de integridade do recurso de um grupo de regras do Prometheus.
  • Se o grupo de regras estiver marcado como Disponível, ele está funcionando conforme o esperado.
  • Se o grupo de regras estiver marcado como Degradado, uma ou mais regras no grupo não estão funcionando conforme o esperado. Isso pode ser devido à consulta de regra que está sendo limitada ou a outros problemas que podem fazer com que a avaliação da regra falhe. Expanda a entrada de status para obter mais informações sobre o problema detetado, bem como sugestões para mitigação ou solução de problemas adicionais.
  • Se o grupo de regras estiver marcado como Indisponível, todo o grupo de regras não estará funcionando conforme o esperado. Isso pode ser devido ao problema de configuração (por exemplo, o Espaço de Trabalho do Azure Monitor não pode ser detetado) ou devido a problemas de serviço interno. Expanda a entrada de status para obter mais informações sobre o problema detetado, bem como sugestões para mitigação ou solução de problemas adicionais.
  • Se o grupo de regras estiver marcado como Desconhecido, todo o grupo de regras será desativado ou estará em um estado desconhecido.

Desabilitar e habilitar grupos de regras

Para habilitar ou desabilitar uma regra, selecione o grupo de regras no portal do Azure. Selecione Ativar ou Desativar para alterar seu status.

Próximos passos