Sdílet prostřednictvím


Vytvoření upozornění na metriku v protokolech služby Azure Monitor

Poznámka:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Možnosti upozornění na metriky můžete použít u předdefinované sady protokolů v protokolech služby Azure Monitor. Monitorované protokoly, které se dají shromažďovat z Azure nebo místních počítačů, se převedou na metriky a pak se monitorují pomocí pravidel upozornění na metriky stejně jako jakákoli jiná metrika.

Pracovní prostor služby Log Analytics podporuje tyto typy protokolů:

Mezi výhody použití upozornění metrik pro protokoly oproti upozorněním prohledávání protokolů založeným na dotazech v Azure patří:

  • Upozornění na metriky nabízejí funkci monitorování téměř v reálném čase. Vytvoří fork dat ze zdroje protokolu, aby se zajistila tato funkce.
  • Upozornění na metriky jsou stavová. Upozorní vás jednou, když se aktivuje výstraha, a jednou po vyřešení výstrahy. Upozornění prohledávání protokolů jsou bezstavová a v případě splnění podmínky upozornění se neustále aktivují v každém intervalu.
  • Upozornění na metriky poskytují více dimenzí. Umožňují filtrování podle konkrétních hodnot, jako jsou počítače a typy operačního systému, aniž by bylo nutné definovat složitý dotaz v Log Analytics.

Poznámka:

Konkrétní metrika nebo dimenze se zobrazí pouze v případě, že data pro ni existují ve zvoleném období. Tyto metriky jsou k dispozici pro zákazníky, kteří mají pracovní prostory služby Log Analytics.

Podporované metriky a dimenze protokolů

Pomocí upozornění na metriky můžete pomocí dimenzí filtrovat metriku na správnou úroveň. Úplný seznam metrik podporovaných pro protokoly odpovídá seznamu metrik pracovního prostoru služby Log Analytics.

Poznámka:

Pokud chcete zobrazit podporovanou metriku extrahovaná z pracovního prostoru služby Log Analytics prostřednictvím metrik Služby Azure Monitor, musíte vytvořit upozornění na metriku pro protokoly pro danou konkrétní metriku. Dimenze, které zvolíte v upozornění na metriky pro protokoly, se zobrazí pouze pro zkoumání prostřednictvím metrik služby Azure Monitor.

Vytvoření upozornění na metriku pro protokoly

Než se data metrik z oblíbených protokolů zpracují v Log Analytics, přepíšou se do metrik Azure Monitoru. Kromě upozornění na metriky můžete využít také možnosti platformy metrik, včetně upozornění na metriky s frekvencí až jednu minutu.

Proces vytváření upozornění na metriky pro protokoly je rozdělený do dvou oblastí:

  1. Vytvořte pravidlo pro extrahování metrik z podporovaných protokolů pomocí rozhraní API naplánovaných pravidel dotazů (scheduledQueryRules).
  2. Vytvořte upozornění na metriku pro metriku extrahovaná z protokolu (v kroku 1) a pracovního prostoru služby Log Analytics jako cílový prostředek.

Požadavky

Než vytvoříte upozornění na metriku pro protokoly, ujistěte se, že jsou nastavené a dostupné následující položky:

  • Pracovní prostor služby Log Analytics: Musíte mít platný a aktivní pracovní prostor služby Log Analytics. Další informace najdete v tématu Vytvoření pracovního prostoru služby Log Analytics.
  • Agent nakonfigurovaný pro pracovní prostor Služby Log Analytics: Musíte nakonfigurovat agenta pro virtuální počítače Azure nebo místní počítače, aby odesílaly data do pracovního prostoru služby Log Analytics. Další informace najdete v tématu Přehled agenta služby Azure Monitor.
  • Podporované řešení Log Analytics: Řešení Log Analytics by mělo být nakonfigurované a odesílající data do pracovního prostoru služby Log Analytics. Podporovaná řešení jsou čítače výkonu pro Windows a Linux, záznamy prezenčních signálů pro Agent Health, Azure Automation Update Management a data událostí.
  • Protokoly nakonfigurované pro řešení Log Analytics: Řešení Log Analytics by mělo obsahovat požadované protokoly a data, která odpovídají metrikám podporovaným pro pracovní prostory služby Log Analytics. Například v řešení čítačů výkonu musí být nejprve nakonfigurován čítače výkonu čítače dostupné paměti % .

Metody vytvoření upozornění metriky pro protokoly

Upozornění na metriky můžete vytvářet a spravovat pomocí webu Azure Portal, šablon Azure Resource Manageru, rozhraní REST API, Azure PowerShellu a Azure CLI.

Po vytvoření upozornění na metriky pro protokoly pro zadaný pracovní prostor služby Log Analytics mají všechny vlastnosti a funkce upozornění metrik, včetně schématu datové části, použitelných limitů kvót a fakturované ceny.

Podrobné podrobnosti a ukázky najdete v tématu Vytvoření nebo úprava pravidla upozornění na metriky. Postupujte podle pokynů pro správu upozornění na metriky a mějte na paměti následující aspekty:

  • Cílem upozornění na metriku musí být platný pracovní prostor služby Log Analytics.

  • Signál vybraný pro upozornění na metriku pro vybraný pracovní prostor služby Log Analytics musí být typu Metrika.

  • Konkrétní podmínky nebo prostředky můžete filtrovat pomocí filtrů dimenzí, protože metriky pro protokoly jsou multidimenzionální.

  • Když konfigurujete logiku signálu, můžete vytvořit jednu výstrahu, která bude obsahovat více hodnot dimenzí (jako je počítač).

  • Při vytváření upozornění na metriku pro protokoly pomocí webu Azure Portal se automaticky vytvoří odpovídající pravidlo pro převod dat protokolu na metriku na scheduledQueryRules pozadí bez nutnosti zásahu uživatele nebo akce.

    Pokud k vytvoření upozornění na metriku pro vybraný pracovní prostor Služby Log Analytics nepoužíváte Azure Portal, musíte nejprve ručně vytvořit explicitní pravidlo pro převod dat protokolu na metriku pomocí scheduledQueryRules.

Šablony Resource Manageru

K vytvoření upozornění na metriku pro protokoly můžete použít následující ukázkové šablony Resource Manageru.

U upozornění na metriky pro protokoly vytvořené prostřednictvím jiných prostředků než webu Azure Portal můžete pomocí těchto ukázkových šablon vytvořit pravidlo převodu scheduledQueryRulesmetrik založené na protokolu a metriky před vytvořením upozornění na metriku. Pokud to neuděláte, v protokolech nebudou k dispozici žádná data pro upozornění metriky.

Upozornění na metriku pro protokoly se statickou prahovou hodnotou

V následující ukázkové šabloně vytvoření upozornění na metriku pro statickou prahovou hodnotu závisí na úspěšném vytvoření pravidla pro extrakci metrik z protokolů prostřednictvím 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')]"
                    }
                ]
            }
        }
    ]
}

Pokud předchozí JSON uložíte jako metricfromLogsAlertStatic.json, můžete ho spojit se souborem JSON parametrů pro vytvoření na základě šablony Resource Manageru. Tady je ukázkový soubor JSON parametrů:

{
    "$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"
        }
    }
}

Za předpokladu, že jste předchozí soubor parametrů uložili jako metricfromLogsAlertStatic.parameters.json, můžete vytvořit upozornění na metriky pro protokoly pomocí šablony Resource Manageru pro vytvoření na webu Azure Portal.

Alternativně můžete použít tento příkaz Azure PowerShellu:

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

Nebo můžete šablonu Resource Manageru nasadit pomocí Azure CLI:

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

Upozornění na metriku pro protokoly s dynamickými prahovými hodnotami

V následující ukázkové šabloně vytvoření upozornění metriky pro dynamické prahové hodnoty závisí na úspěšném vytvoření pravidla pro extrakci metrik z protokolů prostřednictvím 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')]"
                    }
                ]
            }
        }
    ]
}

Pokud uložíte předchozí JSON jako metricfromLogsAlertDynamic.json, můžete ho spojit se souborem JSON s parametrem pro vytvoření na základě šablony Resource Manageru. Tady je ukázkový soubor JSON parametrů:

{
    "$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"
        }
    }
}

Za předpokladu, že jste předchozí soubor parametrů uložili jako metricfromLogsAlertDynamic.parameters.json, můžete vytvořit upozornění na metriky pro protokoly pomocí šablony Resource Manageru pro vytvoření na webu Azure Portal.

Alternativně můžete použít tento příkaz Azure PowerShellu:

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

Nebo můžete šablonu Resource Manageru nasadit pomocí Azure CLI:

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