Criar alertas métricos para registos no Monitor Azure

Descrição Geral

Nota

Recomendamos que utilize o módulo Azure Az PowerShell para interagir com o Azure. Consulte a instalação Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Os alertas métricos para registos permitem-lhe alavancar as capacidades de alertas métricos num conjunto predefinido de registos Do Log Analytics. Os registos monitorizados, que podem ser recolhidos a partir de computadores Azure ou no local, são convertidos em métricas e, em seguida, monitorizados com regras de alerta métricas como qualquer outra métrica. Os registos suportados do Log Analytics são os seguintes:

Existem muitos benefícios para a utilização de alertas métricos para registos em consulta com base em Alertas de Registo em Azure; alguns deles estão listados abaixo:

  • Os Alertas Métricos oferecem capacidade de monitorização em tempo quase real e alertas métricos para os dados de forcados de registos da fonte de registo para garantir o mesmo.
  • Os alertas métricos são imponentes - notificando apenas uma vez quando o alerta é disparado e uma vez quando o alerta é resolvido; em oposição aos alertas de Log, que são apátridas e continuam a disparar em todos os intervalos se a condição de alerta for cumprida.
  • Os alertas métricos para o Log fornecem múltiplas dimensões, permitindo a filtragem a valores específicos como Computadores, Tipo DE OS, etc. mais simples; sem a necessidade de definir uma consulta complexa no Log Analytics.

Nota

A métrica específica e/ou a dimensão só serão mostradas se os dados aparecerem no período escolhido. Estas métricas estão disponíveis para clientes com espaços de trabalho Azure Log Analytics.

Métricas e dimensões suportadas para troncos

Métrica alerta o suporte para métricas que usam dimensões. Pode utilizar as dimensões para filtrar a sua métrica para o nível certo. A lista completa de métricas suportadas para Logs é equivalente à lista da métrica do espaço de trabalho Log Analytics.

Nota

Para visualizar uma métrica suportada extraída de um espaço de trabalho log Analytics via Azure Monitor - Métricas, deve ser criado um alerta métrico para o log nessa métrica específica. As dimensões escolhidas no alerta métrico para registos - só aparecerão para exploração através do Azure Monitor - Métricas.

Criação de alerta métrico para Log Analytics

Os dados métricos dos registos populares são canalizados antes de serem processados no Log Analytics, em Azure Monitor - Métricas. Isto permite que os utilizadores aproveitem as capacidades da plataforma Métrica, bem como o alerta métrico - incluindo ter alertas com frequência até 1 minuto. Listados abaixo estão os meios de elaborar um alerta métrico para registos.

Pré-requisitos para alerta métrico para registos

Antes da métrica de registos recolhidos nos trabalhos de dados do Log Analytics, deve ser configurado e disponível:

  1. Ative Log Analytics Workspace: Um espaço de trabalho válido e ativo do Log Analytics deve estar presente. Para obter mais informações, consulte Criar um espaço de trabalho de Log Analytics em portal do Azure.
  2. O agente está configurado para log analytics workspace: O agente precisa de ser configurado para VMs (e/ou) VMs no local para enviar dados para o log analytics workspace usado em passo anterior. Para mais informações, consulte Log Analytics - Visão geral do agente.
  3. A solução suportada do Log Analytics está instalada: A solução Log Analytics deve ser configurada e enviar dados para o espaço de trabalho do Log Analytics - as soluções suportadas são contadores de desempenho para Windows & Linux, registos heartbeat para a Saúde do Agente, gestão de atualização e dados do Evento.
  4. Registar soluções analíticas configuradas para enviar registos: A solução Log Analytics deve ter os registos/dados necessários correspondentes às métricas suportadas para espaços de trabalho do Log Analytics ativados. Por exemplo, para % do contador de memória disponível deve ser configurado primeiro na solução de contadores de desempenho .

Configurar alerta métrico para registos

Os alertas métricos podem ser criados e geridos utilizando os modelos de portal do Azure, Resource Manager, REST API, PowerShell e Azure CLI. Uma vez que os Alertas Métricos para Registos, é uma variante de alertas métricos - uma vez que os pré-requisitos são feitos, o alerta métrico para registos pode ser criado para o espaço de trabalho especificado Log Analytics. Todas as características e funcionalidades dos alertas métricos serão aplicáveis aos alertas métricos para registos, bem como; incluindo esquema de carga útil, limites de quota aplicáveis e preço cobrado.

Para obter detalhes e amostras passo a passo - consulte a criação e gestão de alertas métricos. Especificamente, para Alertas Métricos para Registos - siga as instruções para gerir os alertas métricos e certifique-se de:

  • Alvo para alerta métrico é um espaço de trabalho válido log analytics
  • Sinal escolhido para alerta métrico para o espaço de trabalho do Log Analytics selecionado é do tipo Métrico
  • Filtrar para condições ou recursos específicos utilizando filtros de dimensão; métricas para troncos são multidimensionais
  • Ao configurar a Lógica de Sinal, pode ser criado um único alerta para abranger múltiplos valores de dimensão (como o Computador)
  • Se não utilizar portal do Azure para criar um alerta métrico para o espaço de trabalho selecionado do Log Analytics; então o utilizador deve primeiro criar manualmente uma regra explícita para converter dados de registo numa métrica utilizando regras de consulta agendadas do Azure Monitor .

Nota

Ao criar um alerta métrico para o registo através de portal do Azure - uma regra correspondente para converter dados de registo em métrica via Azure Monitor - As Regras de Consulta Programadas são automaticamente criadas em segundo plano, sem necessidade de qualquer intervenção ou ação do utilizador. Para alerta métrico para registos criados usando meios que não portal do Azure, consulte o Modelo de Recurso para Alertas Métricos para A secção de Registos nos meios de amostragem de criar um registo baseado em Placas de Marcação para a regra de conversão métrica antes da criação de alerta métrico - caso contrário não haverá dados para o alerta métrico nos registos criados.

Modelo de recursos para alertas métricos para registos

Como indicado anteriormente, o processo de criação de alertas métricos para registos é de duas vertentes:

  1. Criar uma regra para extrair métricas de troncos suportados usando a API de Tesouro Programado
  2. Crie um alerta métrico para a métrica extraída do log (no passo 1) e log Analytics espaço de trabalho como recurso alvo

Alertas métricos para Registos com limiar estático

Para obter o mesmo, pode-se utilizar a amostra Azure Resource Manager Modelo abaixo - onde a criação de um alerta métrico estático depende da criação bem-sucedida da regra para extrair métricas de registos através do agendadoQueryRule.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "convertRuleName": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the rule to convert log to metric"
            }
        },
        "convertRuleDescription": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Description for log converted to metric"
            }
        },
        "convertRuleRegion": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the region used by workspace"
            }
        },
        "convertRuleStatus": {
            "type": "string",
            "defaultValue": "true",
            "metadata": {
                "description": "Specifies whether the log conversion rule is enabled"
            }
        },
        "convertRuleMetric": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the metric once extraction done from logs."
            }
        },
        "alertName": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the alert"
            }
        },
        "alertDescription": {
            "type": "string",
            "defaultValue": "This is a metric alert",
            "metadata": {
                "description": "Description of alert"
            }
        },
        "alertSeverity": {
            "type": "int",
            "defaultValue": 3,
            "allowedValues": [
                0,
                1,
                2,
                3,
                4
            ],
            "metadata": {
                "description": "Severity of alert {0,1,2,3,4}"
            }
        },
        "isEnabled": {
            "type": "bool",
            "defaultValue": true,
            "metadata": {
                "description": "Specifies whether the alert is enabled"
            }
        },
        "resourceId": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Full Resource ID of the resource emitting the metric that will be used for the comparison. For example: /subscriptions/00000000-0000-0000-0000-0000-00000000/resourceGroups/ResourceGroupName/providers/Microsoft.OperationalInsights/workspaces/workspaceName"
            }
        },
        "metricName": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the metric used in the comparison to activate the alert."
            }
        },
        "operator": {
            "type": "string",
            "defaultValue": "GreaterThan",
            "allowedValues": [
                "Equals",
                "NotEquals",
                "GreaterThan",
                "GreaterThanOrEqual",
                "LessThan",
                "LessThanOrEqual"
            ],
            "metadata": {
                "description": "Operator comparing the current value with the threshold value."
            }
        },
        "threshold": {
            "type": "string",
            "defaultValue": "0",
            "metadata": {
                "description": "The threshold value at which the alert is activated."
            }
        },
        "timeAggregation": {
            "type": "string",
            "defaultValue": "Average",
            "allowedValues": [
                "Average",
                "Minimum",
                "Maximum",
                "Total"
            ],
            "metadata": {
                "description": "How the data that is collected should be combined over time."
            }
        },
        "windowSize": {
            "type": "string",
            "defaultValue": "PT5M",
            "metadata": {
                "description": "Period of time used to monitor alert activity based on the threshold. Must be between five minutes and one day. ISO 8601 duration format."
            }
        },
        "evaluationFrequency": {
            "type": "string",
            "defaultValue": "PT1M",
            "metadata": {
                "description": "how often the metric alert is evaluated represented in ISO 8601 duration format"
            }
        },
        "actionGroupId": {
            "type": "string",
            "defaultValue": "",
            "metadata": {
                "description": "The ID of the action group that is triggered when the alert is activated or deactivated"
            }
        }
    },
    "variables": {
        "convertRuleSourceWorkspace": {
            "SourceId": "/subscriptions/1234-56789-1234-567a/resourceGroups/resourceGroupName/providers/Microsoft.OperationalInsights/workspaces/workspaceName"
        }
    },
    "resources": [
        {
            "name": "[parameters('convertRuleName')]",
            "type": "Microsoft.Insights/scheduledQueryRules",
            "apiVersion": "2018-04-16",
            "location": "[parameters('convertRuleRegion')]",
            "properties": {
                "description": "[parameters('convertRuleDescription')]",
                "enabled": "[parameters('convertRuleStatus')]",
                "source": {
                    "dataSourceId": "[variables('convertRuleSourceWorkspace').SourceId]"
                },
                "action": {
                    "odata.type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.Microsoft.AppInsights.Nexus.DataContracts.Resources.ScheduledQueryRules.LogToMetricAction",
                    "criteria": [{
                            "metricName": "[parameters('convertRuleMetric')]",
                            "dimensions": []
                        }
                    ]
                }
            }
        },
        {
            "name": "[parameters('alertName')]",
            "type": "Microsoft.Insights/metricAlerts",
            "location": "global",
            "apiVersion": "2018-03-01",
            "tags": {},
            "dependsOn":["[resourceId('Microsoft.Insights/scheduledQueryRules',parameters('convertRuleName'))]"],
            "properties": {
                "description": "[parameters('alertDescription')]",
                "severity": "[parameters('alertSeverity')]",
                "enabled": "[parameters('isEnabled')]",
                "scopes": ["[parameters('resourceId')]"],
                "evaluationFrequency":"[parameters('evaluationFrequency')]",
                "windowSize": "[parameters('windowSize')]",
                "criteria": {
                    "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria",
                    "allOf": [
                        {
                            "name" : "1st criterion",
                            "metricName": "[parameters('metricName')]",
                            "dimensions":[],
                            "operator": "[parameters('operator')]",
                            "threshold" : "[parameters('threshold')]",
                            "timeAggregation": "[parameters('timeAggregation')]"
                        }
                    ]
                },
                "actions": [
                    {
                        "actionGroupId": "[parameters('actionGroupId')]"
                    }
                ]
            }
        }
    ]
}

Digamos que o JSON acima é guardado como métricafromLogsAlertStatic.json - então pode ser associado a um ficheiro JSON de parâmetro para criação baseada em modelo de recurso. Um ficheiro JSON do parâmetro da amostra é listado abaixo:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "convertRuleName": {
            "value": "TestLogtoMetricRule" 
        },
        "convertRuleDescription": {
            "value": "Test rule to extract metrics from logs via template"
        },
        "convertRuleRegion": {
            "value": "West Central US"
        },
        "convertRuleStatus": {
            "value": "true"
        },
        "convertRuleMetric": {
            "value": "Average_% Idle Time"
        },
        "alertName": {
            "value": "TestMetricAlertonLog"
        },
        "alertDescription": {
            "value": "New multi-dimensional metric alert created via template"
        },
        "alertSeverity": {
            "value":3
        },
        "isEnabled": {
            "value": true
        },
        "resourceId": {
            "value": "/subscriptions/1234-56789-1234-567a/resourceGroups/myRG/providers/Microsoft.OperationalInsights/workspaces/workspaceName"
        },
        "metricName":{
            "value": "Average_% Idle Time"
        },
        "operator": {
            "value": "GreaterThan"
        },
        "threshold":{
            "value": "1"
        },
        "timeAggregation":{
            "value": "Average"
        },
        "actionGroupId": {
            "value": "/subscriptions/1234-56789-1234-567a/resourceGroups/myRG/providers/microsoft.insights/actionGroups/actionGroupName"
        }
    }
}

Assumindo que o ficheiro de parâmetro acima é guardado como métricafromLogsAlertStatic.parâmetros.json; em seguida, pode-se criar alerta métrico para registos usando o Modelo de Recursos para a criação em portal do Azure.

Em alternativa, também se pode utilizar o comando Azure PowerShell abaixo:

New-AzResourceGroupDeployment -ResourceGroupName "myRG" -TemplateFile metricfromLogsAlertStatic.json TemplateParameterFile metricfromLogsAlertStatic.parameters.json

Ou use o modelo de recursos de implementação usando O Azure CLI:

az deployment group create --resource-group myRG --template-file metricfromLogsAlertStatic.json --parameters @metricfromLogsAlertStatic.parameters.json

Alertas métricos para Registos com Limiares Dinâmicos

Para obter o mesmo, pode-se utilizar a amostra Azure Resource Manager Modelo abaixo - onde a criação de um alerta métrico Dynamic Thresholds depende da criação bem-sucedida da regra para extrair métricas de registos através do AgendadoQueryRule.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "convertRuleName": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the rule to convert log to metric"
            }
        },
        "convertRuleDescription": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Description for log converted to metric"
            }
        },
        "convertRuleRegion": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the region used by workspace"
            }
        },
        "convertRuleStatus": {
            "type": "string",
            "defaultValue": "true",
            "metadata": {
                "description": "Specifies whether the log conversion rule is enabled"
            }
        },
        "convertRuleMetric": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the metric once extraction done from logs."
            }
        },
        "alertName": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the alert"
            }
        },
        "alertDescription": {
            "type": "string",
            "defaultValue": "This is a metric alert",
            "metadata": {
                "description": "Description of alert"
            }
        },
        "alertSeverity": {
            "type": "int",
            "defaultValue": 3,
            "allowedValues": [
                0,
                1,
                2,
                3,
                4
            ],
            "metadata": {
                "description": "Severity of alert {0,1,2,3,4}"
            }
        },
        "isEnabled": {
            "type": "bool",
            "defaultValue": true,
            "metadata": {
                "description": "Specifies whether the alert is enabled"
            }
        },
        "resourceId": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Full Resource ID of the resource emitting the metric that will be used for the comparison. For example: /subscriptions/00000000-0000-0000-0000-0000-00000000/resourceGroups/ResourceGroupName/providers/Microsoft.OperationalInsights/workspaces/workspaceName"
            }
        },
        "metricName": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the metric used in the comparison to activate the alert."
            }
        },
        "operator": {
            "type": "string",
            "defaultValue": "GreaterOrLessThan",
            "allowedValues": [
                "GreaterThan",
                "LessThan",
                "GreaterOrLessThan"
            ],
            "metadata": {
                "description": "Operator comparing the current value with the threshold value."
            }
        },
        "alertSensitivity": {
            "type": "string",
            "defaultValue": "Medium",
            "allowedValues": [
                "High",
                "Medium",
                "Low"
            ],
            "metadata": {
                "description": "Tunes how 'noisy' the Dynamic Thresholds alerts will be: 'High' will result in more alerts while 'Low' will result in fewer alerts."
            }
        },
        "numberOfEvaluationPeriods": {
            "type": "string",
            "defaultValue": "4",
            "metadata": {
                "description": "The number of periods to check in the alert evaluation."
            }
        },
        "minFailingPeriodsToAlert": {
            "type": "string",
            "defaultValue": "3",
            "metadata": {
                "description": "The number of unhealthy periods to alert on (must be lower or equal to numberOfEvaluationPeriods)."
            }
        },
        "timeAggregation": {
            "type": "string",
            "defaultValue": "Average",
            "allowedValues": [
                "Average",
                "Minimum",
                "Maximum",
                "Total"
            ],
            "metadata": {
                "description": "How the data that is collected should be combined over time."
            }
        },
        "windowSize": {
            "type": "string",
            "defaultValue": "PT5M",
            "metadata": {
                "description": "Period of time used to monitor alert activity based on the threshold. Must be between five minutes and one day. ISO 8601 duration format."
            }
        },
        "evaluationFrequency": {
            "type": "string",
            "defaultValue": "PT1M",
            "metadata": {
                "description": "how often the metric alert is evaluated represented in ISO 8601 duration format"
            }
        },
        "actionGroupId": {
            "type": "string",
            "defaultValue": "",
            "metadata": {
                "description": "The ID of the action group that is triggered when the alert is activated or deactivated"
            }
        }
    },
    "variables": {
        "convertRuleSourceWorkspace": {
            "SourceId": "/subscriptions/1234-56789-1234-567a/resourceGroups/resourceGroupName/providers/Microsoft.OperationalInsights/workspaces/workspaceName"
        }
    },
    "resources": [
        {
            "name": "[parameters('convertRuleName')]",
            "type": "Microsoft.Insights/scheduledQueryRules",
            "apiVersion": "2018-04-16",
            "location": "[parameters('convertRuleRegion')]",
            "properties": {
                "description": "[parameters('convertRuleDescription')]",
                "enabled": "[parameters('convertRuleStatus')]",
                "source": {
                    "dataSourceId": "[variables('convertRuleSourceWorkspace').SourceId]"
                },
                "action": {
                    "odata.type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.Microsoft.AppInsights.Nexus.DataContracts.Resources.ScheduledQueryRules.LogToMetricAction",
                    "criteria": [{
                            "metricName": "[parameters('convertRuleMetric')]",
                            "dimensions": []
                        }
                    ]
                }
            }
        },
        {
            "name": "[parameters('alertName')]",
            "type": "Microsoft.Insights/metricAlerts",
            "location": "global",
            "apiVersion": "2018-03-01",
            "tags": {},
            "dependsOn":["[resourceId('Microsoft.Insights/scheduledQueryRules',parameters('convertRuleName'))]"],
            "properties": {
                "description": "[parameters('alertDescription')]",
                "severity": "[parameters('alertSeverity')]",
                "enabled": "[parameters('isEnabled')]",
                "scopes": ["[parameters('resourceId')]"],
                "evaluationFrequency":"[parameters('evaluationFrequency')]",
                "windowSize": "[parameters('windowSize')]",
                "criteria": {
                    "odata.type": "Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria",
                    "allOf": [
                        {
                            "criterionType": "DynamicThresholdCriterion",
                            "name" : "1st criterion",
                            "metricName": "[parameters('metricName')]",
                            "dimensions":[],
                            "operator": "[parameters('operator')]",
                            "alertSensitivity": "[parameters('alertSensitivity')]",
                            "failingPeriods": {
                                "numberOfEvaluationPeriods": "[parameters('numberOfEvaluationPeriods')]",
                                "minFailingPeriodsToAlert": "[parameters('minFailingPeriodsToAlert')]"
                            },
                            "timeAggregation": "[parameters('timeAggregation')]"
                        }
                    ]
                },
                "actions": [
                    {
                        "actionGroupId": "[parameters('actionGroupId')]"
                    }
                ]
            }
        }
    ]
}

Digamos que o JSON acima é guardado como métricafromLogsAlertDynamic.json - então pode ser associado a um ficheiro JSON de parâmetro para criação baseada em modelo de recurso. Um ficheiro JSON do parâmetro da amostra é listado abaixo:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "convertRuleName": {
            "value": "TestLogtoMetricRule"
        },
        "convertRuleDescription": {
            "value": "Test rule to extract metrics from logs via template"
        },
        "convertRuleRegion": {
            "value": "West Central US"
        },
        "convertRuleStatus": {
            "value": "true"
        },
        "convertRuleMetric": {
            "value": "Average_% Idle Time"
        },
        "alertName": {
            "value": "TestMetricAlertonLog"
        },
        "alertDescription": {
            "value": "New multi-dimensional metric alert created via template"
        },
        "alertSeverity": {
            "value":3
        },
        "isEnabled": {
            "value": true
        },
        "resourceId": {
            "value": "/subscriptions/1234-56789-1234-567a/resourceGroups/myRG/providers/Microsoft.OperationalInsights/workspaces/workspaceName"
        },
        "metricName":{
            "value": "Average_% Idle Time"
        },
        "operator": {
            "value": "GreaterOrLessThan"
          },
          "alertSensitivity": {
              "value": "Medium"
          },
          "numberOfEvaluationPeriods": {
              "value": "4"
          },
          "minFailingPeriodsToAlert": {
              "value": "3"
          },
        "timeAggregation":{
            "value": "Average"
        },
        "actionGroupId": {
            "value": "/subscriptions/1234-56789-1234-567a/resourceGroups/myRG/providers/microsoft.insights/actionGroups/actionGroupName"
        }
    }
}

Assumindo que o ficheiro de parâmetro acima é guardado como métricafromLogsAlertDynamic.parameters.json; em seguida, pode-se criar alerta métrico para registos usando o Modelo de Recursos para a criação em portal do Azure.

Em alternativa, também se pode utilizar o comando Azure PowerShell abaixo:

New-AzResourceGroupDeployment -ResourceGroupName "myRG" -TemplateFile metricfromLogsAlertDynamic.json TemplateParameterFile metricfromLogsAlertDynamic.parameters.json

Ou use o modelo de recursos de implementação usando O Azure CLI:

az deployment group create --resource-group myRG --template-file metricfromLogsAlertDynamic.json --parameters @metricfromLogsAlertDynamic.parameters.json

Passos seguintes