Beispielnutzlasten für Protokollsuchwarnungen mithilfe von Webhook-Aktionen
Sie können Webhook-Aktionen in einer Warnungsregel für die Protokollsuche verwenden, um eine einzelne HTTP POST-Anforderung aufzurufen. In diesem Artikel werden die Eigenschaften beschrieben, die verfügbar sind, wenn Sie Aktionsgruppen für die Verwendung von Webhooks konfigurieren. Der aufgerufene Dienst muss Webhooks unterstützen und wissen, wie die empfangene Nutzlast verwendet wird.
Sie sollten das allgemeine Warnungsschema für Ihre Webhookintegrationen verwenden. Das allgemeine Warnungsschema bietet den Vorteil einer einzelnen, erweiterbaren und einheitlichen Warnungsnutzlast für alle Benachrichtigungsdienste in Azure Monitor.
For log search alert rules that have a custom JSON payload defined, enabling the common alert schema reverts the payload schema to the one described in Common alert schema. Wenn Sie eine benutzerdefinierte JSON-Nutzlast definieren möchten, kann der Webhook das allgemeine Warnungsschema nicht verwenden.
Für Warnungen mit aktiviertem allgemeinem Schema gilt für die Größe ein oberer Grenzwert von 256 KB pro Warnung. Eine größere Warnung enthält keine Suchergebnisse. Wenn die Suchergebnisse nicht enthalten sind, verwenden Sie LinkToFilteredSearchResultsAPI
oder LinkToSearchResultsAPI
, um mit der Log Analytics-API auf die Suchergebnisse zuzugreifen.
Die Beispielnutzlasten enthalten Beispiele dafür, wenn die Nutzlast Standard ist und wenn sie benutzerdefiniert ist.
Protokollsuchwarnung für alle Ressourcenprotokolle (aus API-Version 2021-08-01
)
Die folgende Beispielnutzlast ist für einen Standard-Webhook bestimmt, wenn er für Protokollsuchwarnungen basierend auf Ressourcenprotokollen verwendet wird:
{
"schemaId": "azureMonitorCommonAlertSchema",
"data": {
"essentials": {
"alertId": "/subscriptions/12345a-1234b-123c-123d-12345678e/providers/Microsoft.AlertsManagement/alerts/12345a-1234b-123c-123d-12345678e",
"alertRule": "AcmeRule",
"severity": "Sev4",
"signalType": "Log",
"monitorCondition": "Fired",
"monitoringService": "Log Alerts V2",
"alertTargetIDs": [
"/subscriptions/12345a-1234b-123c-123d-12345678e/resourcegroups/ai-engineering/providers/microsoft.compute/virtualmachines/testvm"
],
"originAlertId": "123c123d-1a23-1bf3-ba1d-dd1234ff5a67",
"firedDateTime": "2020-07-09T14:04:49.99645Z",
"description": "log alert rule V2",
"essentialsVersion": "1.0",
"alertContextVersion": "1.0"
},
"alertContext": {
"properties": {
"name1": "value1",
"name2": "value2"
},
"conditionType": "LogQueryCriteria",
"condition": {
"windowSize": "PT10M",
"allOf": [
{
"searchQuery": "Heartbeat",
"metricMeasureColumn": "CounterValue",
"targetResourceTypes": "['Microsoft.Compute/virtualMachines']",
"operator": "LowerThan",
"threshold": "1",
"timeAggregation": "Count",
"dimensions": [
{
"name": "ResourceId",
"value": "/subscriptions/12345a-1234b-123c-123d-12345678e/resourceGroups/TEST/providers/Microsoft.Compute/virtualMachines/testvm"
}
],
"metricValue": 0.0,
"failingPeriods": {
"numberOfEvaluationPeriods": 1,
"minFailingPeriodsToAlert": 1
},
"linkToSearchResultsUI": "https://portal.azure.com#@12f345bf-12f3-12af-12ab-1d2cd345db67/blade/Microsoft_Azure_Monitoring_Logs/LogsBlade/source/Alerts.EmailLinks/scope/%7B%22resources%22%3A%5B%7B%22resourceId%22%3A%22%2Fsubscriptions%2F12345a-1234b-123c-123d-12345678e%2FresourceGroups%2FTEST%2Fproviders%2FMicrosoft.Compute%2FvirtualMachines%2Ftestvm%22%7D%5D%7D/q/eJzzSE0sKklKTSypUSjPSC1KVQjJzE11T81LLUosSU1RSEotKU9NzdNIAfJKgDIaRgZGBroG5roGliGGxlYmJlbGJnoGEKCpp4dDmSmKMk0A/prettify/1/timespan/2020-07-07T13%3a54%3a34.0000000Z%2f2020-07-09T13%3a54%3a34.0000000Z",
"linkToFilteredSearchResultsUI": "https://portal.azure.com#@12f345bf-12f3-12af-12ab-1d2cd345db67/blade/Microsoft_Azure_Monitoring_Logs/LogsBlade/source/Alerts.EmailLinks/scope/%7B%22resources%22%3A%5B%7B%22resourceId%22%3A%22%2Fsubscriptions%2F12345a-1234b-123c-123d-12345678e%2FresourceGroups%2FTEST%2Fproviders%2FMicrosoft.Compute%2FvirtualMachines%2Ftestvm%22%7D%5D%7D/q/eJzzSE0sKklKTSypUSjPSC1KVQjJzE11T81LLUosSU1RSEotKU9NzdNIAfJKgDIaRgZGBroG5roGliGGxlYmJlbGJnoGEKCpp4dDmSmKMk0A/prettify/1/timespan/2020-07-07T13%3a54%3a34.0000000Z%2f2020-07-09T13%3a54%3a34.0000000Z",
"linkToSearchResultsAPI": "https://api.loganalytics.io/v1/subscriptions/12345a-1234b-123c-123d-12345678e/resourceGroups/TEST/providers/Microsoft.Compute/virtualMachines/testvm/query?query=Heartbeat%7C%20where%20TimeGenerated%20between%28datetime%282020-07-09T13%3A44%3A34.0000000%29..datetime%282020-07-09T13%3A54%3A34.0000000%29%29×pan=2020-07-07T13%3a54%3a34.0000000Z%2f2020-07-09T13%3a54%3a34.0000000Z",
"linkToFilteredSearchResultsAPI": "https://api.loganalytics.io/v1/subscriptions/12345a-1234b-123c-123d-12345678e/resourceGroups/TEST/providers/Microsoft.Compute/virtualMachines/testvm/query?query=Heartbeat%7C%20where%20TimeGenerated%20between%28datetime%282020-07-09T13%3A44%3A34.0000000%29..datetime%282020-07-09T13%3A54%3A34.0000000%29%29×pan=2020-07-07T13%3a54%3a34.0000000Z%2f2020-07-09T13%3a54%3a34.0000000Z"
}
],
"windowStartTime": "2020-07-07T13:54:34Z",
"windowEndTime": "2020-07-09T13:54:34Z"
}
}
}
}
Protokollsuchwarnung für Log Analytics (bis zur API-Version 2018-04-16
)
Die folgende Beispielnutzlast ist für eine Standardwebhookaktion gedacht, die für Warnungen verwendet wird, die auf Log Analytics basieren:
Hinweis
Der Wert des Felds "Severity"
ändert sich, wenn Sie von der älteren Log Analytics-Warnungs-API zur aktuellen scheduledQueryRules-API gewechselt haben.
{
"SubscriptionId": "12345a-1234b-123c-123d-12345678e",
"AlertRuleName": "AcmeRule",
"SearchQuery": "Perf | where ObjectName == \"Processor\" and CounterName == \"% Processor Time\" | summarize AggregatedValue = avg(CounterValue) by bin(TimeGenerated, 5m), Computer",
"SearchIntervalStartTimeUtc": "2018-03-26T08:10:40Z",
"SearchIntervalEndtimeUtc": "2018-03-26T09:10:40Z",
"AlertThresholdOperator": "Greater Than",
"AlertThresholdValue": 0,
"ResultCount": 2,
"SearchIntervalInSeconds": 3600,
"LinkToSearchResults": "https://portal.azure.com/#Analyticsblade/search/index?_timeInterval.intervalEnd=2018-03-26T09%3a10%3a40.0000000Z&_timeInterval.intervalDuration=3600&q=Usage",
"LinkToFilteredSearchResultsUI": "https://portal.azure.com/#Analyticsblade/search/index?_timeInterval.intervalEnd=2018-03-26T09%3a10%3a40.0000000Z&_timeInterval.intervalDuration=3600&q=Usage",
"LinkToSearchResultsAPI": "https://api.loganalytics.io/v1/workspaces/workspaceID/query?query=Heartbeat×pan=2020-05-07T18%3a11%3a51.0000000Z%2f2020-05-07T18%3a16%3a51.0000000Z",
"LinkToFilteredSearchResultsAPI": "https://api.loganalytics.io/v1/workspaces/workspaceID/query?query=Heartbeat×pan=2020-05-07T18%3a11%3a51.0000000Z%2f2020-05-07T18%3a16%3a51.0000000Z",
"Description": "log alert rule",
"Severity": "Warning",
"AffectedConfigurationItems": [
"INC-Gen2Alert"
],
"Dimensions": [
{
"name": "Computer",
"value": "INC-Gen2Alert"
}
],
"SearchResult": {
"tables": [
{
"name": "PrimaryResult",
"columns": [
{
"name": "$table",
"type": "string"
},
{
"name": "Computer",
"type": "string"
},
{
"name": "TimeGenerated",
"type": "datetime"
}
],
"rows": [
[
"Fabrikam",
"33446677a",
"2018-02-02T15:03:12.18Z"
],
[
"Contoso",
"33445566b",
"2018-02-02T15:16:53.932Z"
]
]
}
]
},
"WorkspaceId": "12345a-1234b-123c-123d-12345678e",
"AlertType": "Metric measurement"
}
Protokollsuchwarnung für Application Insights (bis zur API-Version 2018-04-16
)
Die folgende Beispielnutzlast ist für einen Standardwebhook bestimmt, wenn er für Protokollsuchwarnungen basierend auf Application Insights-Ressourcen verwendet wird:
{
"schemaId": "Microsoft.Insights/LogAlert",
"data": {
"SubscriptionId": "12345a-1234b-123c-123d-12345678e",
"AlertRuleName": "AcmeRule",
"SearchQuery": "requests | where resultCode == \"500\" | summarize AggregatedValue = Count by bin(Timestamp, 5m), IP",
"SearchIntervalStartTimeUtc": "2018-03-26T08:10:40Z",
"SearchIntervalEndtimeUtc": "2018-03-26T09:10:40Z",
"AlertThresholdOperator": "Greater Than",
"AlertThresholdValue": 0,
"ResultCount": 2,
"SearchIntervalInSeconds": 3600,
"LinkToSearchResults": "https://portal.azure.com/AnalyticsBlade/subscriptions/12345a-1234b-123c-123d-12345678e/?query=search+*+&timeInterval.intervalEnd=2018-03-26T09%3a10%3a40.0000000Z&_timeInterval.intervalDuration=3600&q=Usage",
"LinkToFilteredSearchResultsUI": "https://portal.azure.com/AnalyticsBlade/subscriptions/12345a-1234b-123c-123d-12345678e/?query=search+*+&timeInterval.intervalEnd=2018-03-26T09%3a10%3a40.0000000Z&_timeInterval.intervalDuration=3600&q=Usage",
"LinkToSearchResultsAPI": "https://api.applicationinsights.io/v1/apps/0MyAppId0/metrics/requests/count",
"LinkToFilteredSearchResultsAPI": "https://api.applicationinsights.io/v1/apps/0MyAppId0/metrics/requests/count",
"Description": null,
"Severity": "3",
"Dimensions": [
{
"name": "IP",
"value": "1.1.1.1"
}
],
"SearchResult": {
"tables": [
{
"name": "PrimaryResult",
"columns": [
{
"name": "$table",
"type": "string"
},
{
"name": "Id",
"type": "string"
},
{
"name": "Timestamp",
"type": "datetime"
}
],
"rows": [
[
"Fabrikam",
"33446677a",
"2018-02-02T15:03:12.18Z"
],
[
"Contoso",
"33445566b",
"2018-02-02T15:16:53.932Z"
]
]
}
]
},
"ApplicationId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"AlertType": "Metric measurement"
}
}
Protokollsuchwarnung mit einer benutzerdefinierten JSON-Nutzlast (bis zur API-Version 2018-04-16
)
Hinweis
Benutzerdefinierte JSON-basierte Webhooks werden ab API-Version 2021-08-01
nicht unterstützt.
Die folgende Tabelle führt standardmäßige Webhookaktionseigenschaften und deren benutzerdefinierte JSON-Parameternamen auf.
Parameter | Variable | BESCHREIBUNG |
---|---|---|
AlertRuleName |
#alertrulename | Der Name der Warnungsregel. |
Severity |
#severity | Schweregrad für die Warnung für die ausgelöste Protokollsuche festgelegt. |
AlertThresholdOperator |
#thresholdoperator | Schwellenwertoperator für die Warnungsregel |
AlertThresholdValue |
#thresholdvalue | Wert des Schwellenwerts für die Warnungsregel |
LinkToSearchResults |
#linktosearchresults | Link zum Analyseportal, das die Datensätze aus der Abfrage zurückgibt, mit der die Warnung erstellt wurde. |
LinkToSearchResultsAPI |
#linktosearchresultsapi | Link zur Analytics-API, die die Datensätze aus der Abfrage zurückgibt, mit der die Warnung erstellt wurde |
LinkToFilteredSearchResultsUI |
#linktofilteredsearchresultsui | Link zum Analyticsportal, das die Datensätze aus der nach Dimensionswertkombinationen gefilterten Abfrage zurückgibt, mit der die Warnung erstellt wurde |
LinkToFilteredSearchResultsAPI |
#linktofilteredsearchresultsapi | Link zur Analytics-API, die die Datensätze aus der nach Dimensionswertkombinationen gefilterten Abfrage zurückgibt, mit der die Warnung erstellt wurde |
ResultCount |
#searchresultcount | Anzahl von Datensätzen in den Suchergebnissen |
Search Interval End time |
#searchintervalendtimeutc | Abschlusszeit der Abfrage im UTC-Format, mit dem Format mm/tt/jjjj HH:mm:ss AM/PM. |
Search Interval |
#searchinterval | Zeitfenster für die Warnungsregel im Format HH:mm:ss. |
Search Interval StartTime |
#searchintervalstarttimeutc | Startzeit der Abfrage im UTC-Format, mit dem Format mm/tt/jjjj HH:mm:ss AM/PM. |
SearchQuery |
#searchquery | Von der Warnungsregel verwendete Protokollsuchabfrage |
SearchResults |
"IncludeSearchResults": true | Hierbei handelt es sich um die von der Abfrage als JSON-Tabelle zurückgegebenen Datensätze, beschränkt auf die ersten 1.000 Datensätze. "IncludeSearchResults": true wird in einer benutzerdefinierten JSON-Webhookdefinition als Eigenschaft der obersten Ebene hinzugefügt. |
Dimensions |
"IncludeDimensions": true | Hierbei handelt es sich um Dimensionswertkombinationen, die diese Warnung ausgelöst haben, als JSON-Abschnitt. "IncludeDimensions": true wird in einer benutzerdefinierten JSON-Webhookdefinition als Eigenschaft der obersten Ebene hinzugefügt. |
Alert Type |
#alerttype | Der Typ der Warnungsregel für die Protokollsuche, die als Metrikmessung oder Anzahl der Ergebnisse konfiguriert ist. |
WorkspaceID |
#workspaceid | ID Ihres Log Analytics-Arbeitsbereichs. |
Application ID |
#applicationid | ID Ihrer Application Insights-App. |
Subscription ID |
#subscriptionid | ID des von Ihnen verwendeten Azure-Abonnements. |
Sie können Benutzerdefinierte JSON-Nutzlast für Webhook einschließen verwenden, um eine benutzerdefinierte JSON-Nutzlast unter Verwendung der Parameter zu erhalten. Sie können auch zusätzliche Eigenschaften generieren.
Sie können beispielsweise die folgende benutzerdefinierte Nutzlast angeben, die einen einzelnen Parameter wie text
enthält. Der Dienst, der von diesem Webhook aufgerufen wird, erwartet diesen Parameter:
{
"text":"#alertrulename fired with #searchresultcount over threshold of #thresholdvalue."
}
Diese Beispielnutzlast wird ähnlich wie hier dargestellt aufgelöst, wenn sie an den Webhook gesendet wird:
{
"text":"My Alert Rule fired with 18 records over threshold of 10 ."
}
Variablen in einem benutzerdefinierten Webhook müssen in einer JSON-Struktur angegeben werden. Wenn Sie beispielsweise im Webhook-Beispiel auf #searchresultcount
verweisen, wird die Ausgabe auf der Grundlage der Warnergebnisse erfolgen.
Fügen Sie zum Einschließen von Suchergebnissen IncludeSearchResults als Eigenschaft der obersten Ebene im benutzerdefinierten JSON-Code hinzu. Die Suchergebnisse werden als JSON-Struktur eingeschlossen, sodass nicht auf Ergebnisse in benutzerdefinierten Feldern verwiesen werden kann.
Hinweis
Die Schaltfläche Webhook anzeigen neben der Option Benutzerdefinierte JSON-Nutzlast für Webhook einschließen zeigt eine Vorschau der bereitgestellten Informationen an. Es sind keine tatsächlichen Daten enthalten, aber sie ist repräsentativ für das verwendete JSON-Schema.
Sie können beispielsweise diese Konfiguration verwenden, um eine benutzerdefinierte Nutzlast zu erstellen, die nur den Warnungsnamen und die Suchergebnisse enthält:
{
"alertname":"#alertrulename",
"IncludeSearchResults":true
}
Die folgende Beispielnutzlast ist für eine benutzerdefinierte Webhook-Aktion für jede Protokollsuchbenachrichtigung vorgesehen:
{
"alertname":"AcmeRule","IncludeSearchResults":true,
"SearchResults":
{
"tables":[
{"name":"PrimaryResult","columns":
[
{"name":"$table","type":"string"},
{"name":"Id","type":"string"},
{"name":"TimeGenerated","type":"datetime"}
],
"rows":
[
["Fabrikam","33446677a","2018-02-02T15:03:12.18Z"],
["Contoso","33445566b","2018-02-02T15:16:53.932Z"]
]
}
]
}
}
Nächste Schritte
- Erfahren Sie mehr über Azure Monitor-Warnungen.
- Erstellen und Verwalten von Aktionsgruppen in Azure.
- Weitere Informationen zum Analysieren von Protokolldaten in Azure Monitor.