Skapa en måttavisering i Azure Monitor-loggar

Översikt

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Med måttaviseringar för loggar kan du utnyttja funktionerna för måttaviseringar i en fördefinierad uppsättning loggar i Azure Monitor-loggar. De övervakade loggarna, som kan samlas in från Azure eller lokala datorer, konverteras till mått och övervakas sedan med måttaviseringsregler precis som andra mått. Log Analytics-loggarna som stöds är följande:

Det finns många fördelar med att använda måttaviseringar för loggar över frågebaserade loggsökningsaviseringar i Azure. Några av dem visas nedan:

  • Måttaviseringar erbjuder övervakningsfunktioner i nära realtid och måttaviseringar för loggar förgrenar data från loggkällan för att säkerställa samma sak.
  • Måttaviseringar är tillståndskänsliga – meddelar bara en gång när aviseringen utlöses och en gång när aviseringen har lösts. i stället för loggsökningsaviseringar, som är tillståndslösa och fortsätter att aktiveras vid varje intervall om aviseringsvillkoret uppfylls.
  • Måttaviseringar för loggen ger flera dimensioner, vilket gör det enklare att filtrera efter specifika värden som datorer, operativsystemstyp osv. utan att behöva definiera en komplex fråga i Log Analytics.

Kommentar

Specifika mått och/eller dimensioner visas endast om data för det finns under den valda perioden. Dessa mått är tillgängliga för kunder med Azure Log Analytics-arbetsytor.

Mått och dimensioner som stöds för loggar

Måttaviseringar stöder aviseringar för mått som använder dimensioner. Du kan använda dimensioner för att filtrera måttet till rätt nivå. Den fullständiga listan över mått som stöds för loggar motsvarar listan över Log Analytics-arbetsytemått.

Kommentar

Om du vill visa ett mått som stöds som extraheras från en Log Analytics-arbetsyta via Azure Monitor – Mått måste en måttavisering för loggen skapas för det specifika måttet. De dimensioner som valts i måttaviseringen för loggar – visas endast för utforskning via Azure Monitor – Mått.

Skapa måttavisering för Log Analytics

Måttdata från populära loggar skickas innan de bearbetas i Log Analytics till Azure Monitor – Metrics. Detta gör det möjligt för användare att utnyttja funktionerna i metric-plattformen samt måttaviseringar , inklusive att ha aviseringar med frekvens så låg som 1 minut. Nedan visas ett sätt att skapa en måttavisering för loggar.

Krav för måttavisering för loggar

Innan Mått för loggar som samlats in på Log Analytics-data fungerar måste följande konfigureras och vara tillgängligt:

  1. Active Log Analytics-arbetsyta: En giltig och aktiv Log Analytics-arbetsyta måste finnas. Mer information finns i Skapa en Log Analytics-arbetsyta i Azure-portalen.
  2. Agenten är konfigurerad för Log Analytics-arbetsyta: Agenten måste konfigureras för virtuella Azure-datorer (och/eller) lokala virtuella datorer för att skicka data till Log Analytics-arbetsytan som användes i tidigare steg. Mer information finns i Log Analytics – Agentöversikt.
  3. Log Analytics-lösningen som stöds är installerad: Log Analytics-lösningen ska konfigureras och skicka data till Log Analytics-arbetsytan – lösningar som stöds är prestandaräknare för Windows & Linux, pulsslagsposter för agenthälsa, uppdateringshantering och händelsedata.
  4. Log Analytics-lösningar som konfigurerats för att skicka loggar: Log Analytics-lösningen bör ha de loggar/data som krävs som motsvarar mått som stöds för Log Analytics-arbetsytor aktiverade. För % tillgängligt minne måste till exempel räknaren för tillgängligt minne konfigureras i lösningen Prestandaräknare först.

Konfigurera måttavisering för loggar

Måttaviseringar kan skapas och hanteras med hjälp av Azure-portalen, Resource Manager-mallar, REST API, PowerShell och Azure CLI. Eftersom måttaviseringar för loggar är en variant av måttaviseringar – när förutsättningarna är klara kan måttaviseringar för loggar skapas för den angivna Log Analytics-arbetsytan. Alla egenskaper och funktioner för måttaviseringar gäller även för måttaviseringar för loggar, inklusive nyttolastschema, tillämpliga kvotgränser och fakturerat pris.

Stegvis information och exempel finns i skapa och hantera måttaviseringar. Mer specifikt för Måttaviseringar för loggar – följ anvisningarna för att hantera måttaviseringar och se till att följande:

  • Målet för måttavisering är en giltig Log Analytics-arbetsyta
  • Signal som valts för måttavisering för vald Log Analytics-arbetsyta är av typen Mått
  • Filtrera efter specifika villkor eller resurser med hjälp av dimensionsfilter. mått för loggar är flerdimensionella
  • När du konfigurerar signallogik kan en enda avisering skapas för att sträcka sig över flera dimensionsvärden (till exempel dator)
  • Om du inte använder Azure-portalen för att skapa måttaviseringar för den valda Log Analytics-arbetsytan måste användaren först skapa en explicit regel för att konvertera loggdata till ett mått med hjälp av Azure Monitor – Schemalagda frågeregler.

Kommentar

När du skapar en måttavisering för logg via Azure-portalen – en motsvarande regel för att konvertera loggdata till mått via Azure Monitor – skapas schemalagda frågeregler automatiskt i bakgrunden, utan att användaren behöver ingripa eller vidta åtgärder. För måttaviseringar för loggar som skapats med andra metoder än Azure-portalen, se avsnittet Resursmall för måttaviseringar för loggar om exempel på hur du skapar en ScheduledQueryRule-baserad logg till måttkonverteringsregel innan måttavisering skapas. Annars kommer det inte att finnas några data för måttaviseringen i loggar som skapats.

Resursmall för måttaviseringar för loggar

Som tidigare nämnts är processen för att skapa måttaviseringar för loggar två utdelade:

  1. Skapa en regel för att extrahera mått från loggar som stöds med hjälp av scheduledQueryRule API
  2. Skapa en måttavisering för mått som extraherats från loggen (i steg1) och Log Analytics-arbetsytan som målresurs

Måttaviseringar för loggar med statiskt tröskelvärde

För att uppnå samma sak kan man använda Azure Resource Manager-exempelmallen nedan – där skapandet av en statisk tröskelvärdesavisering är beroende av att regeln har skapats för att extrahera mått från loggar via scheduledQueryRule.

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

Anta att ovanstående JSON sparas som metricfromLogsAlertStatic.json – sedan kan det kopplas till en JSON-parameterfil för skapande av resursmall. En JSON-exempelparameterfil visas nedan:

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

Förutsatt att parameterfilen ovan sparas som metricfromLogsAlertStatic.parameters.json; sedan kan man skapa måttaviseringar för loggar med hjälp av resursmallen för att skapa i Azure-portalen.

Du kan också använda Azure PowerShell-kommandot nedan:

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

Eller använd distribuera resursmall med Hjälp av Azure CLI:

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

Måttaviseringar för loggar med dynamiska tröskelvärden

För att uppnå samma sak kan man använda Azure Resource Manager-exempelmallen nedan – där skapandet av en måttavisering för dynamiska tröskelvärden är beroende av att regeln har skapats för att extrahera mått från loggar via scheduledQueryRule.

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

Anta att ovanstående JSON sparas som metricfromLogsAlertDynamic.json – då kan det kopplas till en JSON-parameterfil för skapande av resursmall. En JSON-exempelparameterfil visas nedan:

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

Förutsatt att parameterfilen ovan sparas som metricfromLogsAlertDynamic.parameters.json; sedan kan man skapa måttaviseringar för loggar med hjälp av resursmallen för att skapa i Azure-portalen.

Du kan också använda Azure PowerShell-kommandot nedan:

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

Eller använd distribuera resursmall med Hjälp av Azure CLI:

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

Nästa steg