Criar um alerta de métrica nos Registos do Azure Monitor
Nota
Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.
Você pode usar recursos de alerta de métrica em um conjunto predefinido de logs nos Logs do Azure Monitor. Os logs monitorados, que podem ser coletados do Azure ou de computadores locais, são convertidos em métricas e, em seguida, monitorados com regras de alerta de métrica, como qualquer outra métrica.
Um espaço de trabalho do Log Analytics suporta estes tipos de log:
- Contadores de desempenho para máquinas Windows e Linux (correspondentes às métricas de espaço de trabalho do Log Analytics suportadas)
- Registros de pulsação para o Agent Health
- Atualizar registros de gerenciamento
- Logs de dados de eventos
Os benefícios de usar alertas de métrica para logs em vez de alertas de pesquisa de log baseados em consulta no Azure incluem:
- Os alertas métricos oferecem uma capacidade de monitoramento quase em tempo real. Eles bifurcam os dados da fonte de log para garantir essa capacidade.
- Os alertas métricos são com monitoração de estado. Eles notificam você uma vez quando um alerta é disparado e uma vez quando o alerta é resolvido. Os alertas de pesquisa de log são sem monitoração de estado e continuam disparando a cada intervalo se a condição de alerta for atendida.
- Os alertas métricos fornecem várias dimensões. Eles permitem filtrar para valores específicos, como computadores e tipos de sistema operacional, sem a necessidade de definir uma consulta complexa no Log Analytics.
Nota
Uma métrica ou dimensão específica aparece apenas se existirem dados para ela no período escolhido. Essas métricas estão disponíveis para clientes que têm espaços de trabalho do Log Analytics.
Métricas e dimensões suportadas para logs
Com alertas de métrica, você pode usar dimensões para filtrar sua métrica para o nível certo. A lista completa de métricas suportadas para logs é equivalente à lista de métricas do espaço de trabalho do Log Analytics.
Nota
Para exibir uma métrica com suporte extraída de um espaço de trabalho do Log Analytics por meio das métricas do Azure Monitor, você deve criar um alerta de métrica para logs nessa métrica específica. As dimensões escolhidas no alerta de métrica para logs aparecerão para exploração somente por meio das métricas do Azure Monitor.
Criando um alerta de métrica para logs
Antes que os dados de métricas de logs populares sejam processados no Log Analytics, eles são canalizados para as métricas do Azure Monitor. Em seguida, você pode aproveitar os recursos da plataforma métrica, além dos alertas métricos, incluindo ter alertas com uma frequência tão baixa quanto um minuto.
O processo de criação de alertas métricos para logs tem duas vertentes:
- Crie uma regra para extrair métricas de logs suportados usando a API de Regras de Consulta Agendada (
scheduledQueryRules
). - Crie um alerta de métrica para a métrica extraída do log (na etapa 1) e do espaço de trabalho do Log Analytics como um recurso de destino.
Pré-requisitos
Antes de criar um alerta de métrica para logs, verifique se os seguintes itens estão configurados e disponíveis:
- Espaço de trabalho do Log Analytics: você deve ter um espaço de trabalho válido e ativo do Log Analytics. Para obter mais informações, consulte Criar um espaço de trabalho do Log Analytics.
- Agente configurado para o espaço de trabalho do Log Analytics: você precisa configurar um agente para máquinas virtuais do Azure ou máquinas locais para enviar dados para o espaço de trabalho do Log Analytics. Para obter mais informações, consulte Visão geral do Azure Monitor Agent.
- Solução de Log Analytics suportada: uma solução de 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 e Linux, registos de pulsação para o Estado de Funcionamento do Agente, Gestão de Atualizações de Automação do Azure e dados de eventos.
- Logs configurados para a solução do Log Analytics: a solução do Log Analytics deve ter os logs e os dados necessários que correspondem às métricas suportadas para espaços de trabalho do Log Analytics habilitados. Por exemplo, o contador % Memória Disponível deve ser configurado primeiro na solução de contadores de desempenho.
Métodos para criar um alerta de métrica para logs
Você pode criar e gerenciar alertas de métricas usando o portal do Azure, os modelos do Azure Resource Manager, a API REST, o Azure PowerShell e a CLI do Azure.
Depois de criar alertas de métricas para logs para um espaço de trabalho especificado do Log Analytics, eles têm todas as características e funcionalidades dos alertas métricos, incluindo esquema de carga útil, limites de cota aplicáveis e preço cobrado.
Para obter detalhes passo a passo e exemplos, consulte Criar ou editar uma regra de alerta de métrica. Siga as instruções para gerenciar alertas de métricas e observe as seguintes considerações:
O destino de um alerta de métrica deve ser um espaço de trabalho válido do Log Analytics.
O sinal escolhido para um alerta métrico para um espaço de trabalho selecionado do Log Analytics deve ser do tipo Metric.
Você pode filtrar condições ou recursos específicos usando filtros de dimensão, porque as métricas para logs são multidimensionais.
Ao configurar a lógica de sinal, você pode criar um único alerta para abranger vários valores de dimensão (como computador).
Quando você cria um alerta de métrica para logs usando o portal do Azure, uma regra correspondente para converter dados de log em uma métrica via
scheduledQueryRules
é criada automaticamente em segundo plano, sem a necessidade de qualquer intervenção ou ação do usuário.Se você não estiver usando o portal do Azure para criar um alerta de métrica para um espaço de trabalho selecionado do Log Analytics, primeiro deverá criar manualmente uma regra explícita para converter dados de log em uma métrica usando
scheduledQueryRules
.
Modelos do Resource Manager
Para criar um alerta de métrica para logs, você pode usar os seguintes modelos de exemplo do Gerenciador de Recursos.
Para alertas de métricas para logs criados por meios diferentes do portal do Azure, você pode usar esses modelos de exemplo para criar uma scheduledQueryRules
regra de conversão de log para métrica baseada antes de criar um alerta de métrica. Caso contrário, não haverá dados para o alerta métrico nos logs.
Alerta métrico para logs com um limite estático
No modelo de exemplo a seguir, a criação de um alerta de métrica para um limite estático depende da criação bem-sucedida da regra para extrair métricas de logs via scheduledQueryRules
.
{
"$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 a log to a metric"
}
},
"convertRuleDescription": {
"type": "string",
"minLength": 1,
"metadata": {
"description": "Description for the log converted to a metric."
}
},
"convertRuleRegion": {
"type": "string",
"minLength": 1,
"metadata": {
"description": "Name of the region used by the 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 after extraction is 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 the alert."
}
},
"alertSeverity": {
"type": "int",
"defaultValue": 3,
"allowedValues": [
0,
1,
2,
3,
4
],
"metadata": {
"description": "Severity of the 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's 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's 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')]"
}
]
}
}
]
}
Se você salvar o JSON anterior como metricfromLogsAlertStatic.json, poderá associá-lo a um arquivo JSON de parâmetro para criação com base em um modelo do Gerenciador de Recursos. Aqui está um arquivo JSON de parâmetro de exemplo:
{
"$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 multidimensional 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"
}
}
}
Supondo que você salvou o arquivo de parâmetro anterior como metricfromLogsAlertStatic.parameters.json, você pode criar alertas de métrica para logs usando o modelo do Gerenciador de Recursos para criação no portal do Azure.
Como alternativa, você pode usar este comando do Azure PowerShell:
New-AzResourceGroupDeployment -ResourceGroupName "myRG" -TemplateFile metricfromLogsAlertStatic.json TemplateParameterFile metricfromLogsAlertStatic.parameters.json
Ou, você pode implantar o modelo do Gerenciador de Recursos usando a CLI do Azure:
az deployment group create --resource-group myRG --template-file metricfromLogsAlertStatic.json --parameters @metricfromLogsAlertStatic.parameters.json
Alerta métrico para logs com limites dinâmicos
No modelo de exemplo a seguir, a criação de um alerta de métrica para limites dinâmicos depende da criação bem-sucedida da regra para extrair métricas de logs via scheduledQueryRules
.
{
"$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 a log to a metric."
}
},
"convertRuleDescription": {
"type": "string",
"minLength": 1,
"metadata": {
"description": "Description for the log converted to a metric."
}
},
"convertRuleRegion": {
"type": "string",
"minLength": 1,
"metadata": {
"description": "Name of the region used by the 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 after extraction is 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 the alert."
}
},
"alertSeverity": {
"type": "int",
"defaultValue": 3,
"allowedValues": [
0,
1,
2,
3,
4
],
"metadata": {
"description": "Severity of the 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 alerts for dynamic thresholds will be. 'High' will result in more alerts. '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's 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's 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')]"
}
]
}
}
]
}
Se você salvar o JSON anterior como metricfromLogsAlertDynamic.json, poderá associá-lo a um arquivo JSON de parâmetro para criação com base em um modelo do Gerenciador de Recursos. Aqui está um arquivo JSON de parâmetro de exemplo:
{
"$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 multidimensional 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"
}
}
}
Supondo que você salvou o arquivo de parâmetro anterior como metricfromLogsAlertDynamic.parameters.json, você pode criar alertas de métrica para logs usando o modelo do Gerenciador de Recursos para criação no portal do Azure.
Como alternativa, você pode usar este comando do Azure PowerShell:
New-AzResourceGroupDeployment -ResourceGroupName "myRG" -TemplateFile metricfromLogsAlertDynamic.json TemplateParameterFile metricfromLogsAlertDynamic.parameters.json
Ou, você pode implantar o modelo do Gerenciador de Recursos usando a CLI do Azure:
az deployment group create --resource-group myRG --template-file metricfromLogsAlertDynamic.json --parameters @metricfromLogsAlertDynamic.parameters.json
Conteúdos relacionados
- Saiba mais sobre alertas métricos.
- Saiba mais sobre alertas de pesquisa de log no Azure.
- Saiba mais sobre alertas no Azure.