Exemples de charges utiles pour les alertes de recherche dans les journaux à l’aide d’actions de webhook
Vous pouvez utiliser des actions webhook dans une règle d’alerte de recherche de journal pour appeler une seule requête HTTP POST. Dans cet article, nous décrivons les propriétés disponibles lorsque vous configurez des groupes d’actions pour utiliser des webhooks. Le service appelé doit prendre en charge les webhooks et savoir comment utiliser la charge utile qu’il reçoit.
Nous vous recommandons d’utiliser le schéma d’alerte commun pour vos intégrations de webhook. Le schéma d’alerte commun offre l’avantage de générer une seule charge utile d’alerte extensible et unifiée sur tous les services d’alerte dans Azure Monitor.
Pour les règles d’alerte de recherche dans les journaux qui ont une charge utile JSON personnalisée définie, l’activation du schéma d’alerte commun rétablit le schéma de charge utile à celui décrit dans le schéma d’alerte commun. Si vous souhaitez définir une charge utile JSON personnalisée, le webhook ne peut pas utiliser le schéma d’alerte commun.
Les alertes sur lesquelles le schéma commun est activé ont une limite de taille maximale de 256 Ko par alerte. Une alerte plus importante n’inclut pas de résultats de la recherche. Quand les résultats de la recherche ne sont pas inclus, utilisez LinkToFilteredSearchResultsAPI
ou LinkToSearchResultsAPI
pour accéder aux résultats de la requête par le biais de l’API Log Analytics.
Les exemples de charge utile incluent des exemples lorsque la charge utile est standard et quand elle est personnalisée.
Alerte de recherche de journal pour tous les journaux de ressources (à partir de la version 2021-08-01
de l’API)
L’exemple de charge utile suivant concerne un webhook standard lorsqu’il est utilisé pour les alertes de recherche dans les journaux de journal en fonction des journaux des ressources :
{
"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"
}
}
}
}
Alerte de recherche de journal pour Log Analytics (jusqu’à la version 2018-04-16
de l’API)
L’exemple de charge utile suivant est destiné à une action webhook standard utilisée pour les alertes basées sur Log Analytics :
Notes
La valeur du champ "Severity"
change si vous avez basculé sur l’API scheduledQueryRules actuelle à partir de l’API d’alerte Log Analytics héritée.
{
"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"
}
Alerte de recherche de journal pour Application Insights (jusqu’à la version 2018-04-16
de l’API)
L’exemple de charge utile suivant concerne un webhook standard lorsqu’il est utilisé pour les alertes de recherche dans les journaux en fonction des ressources Application Insights :
{
"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"
}
}
Alerte de recherche de journal avec une charge utile JSON personnalisée (jusqu’à la version 2018-04-16
de l’API)
Remarque
Un webhook JSON personnalisé n’est pas pris en charge à partir de la version de l’API version 2021-08-01
.
Le tableau ci-dessous répertorie les propriétés d’action webhook par défaut et les noms de paramètres JSON personnalisés correspondants.
Paramètre | Variable | Description |
---|---|---|
AlertRuleName |
#alertrulename | Nom de la règle d’alerte. |
Severity |
#severity | Gravité définie pour l’alerte de recherche de journal déclenchée. |
AlertThresholdOperator |
#thresholdoperator | Opérateur de seuil de la règle d’alerte. |
AlertThresholdValue |
#thresholdvalue | Valeur de seuil de la règle d’alerte. |
LinkToSearchResults |
#linktosearchresults | Lien vers le portail Analytics qui retourne les enregistrements de la requête ayant créé l’alerte. |
LinkToSearchResultsAPI |
#linktosearchresultsapi | Lien vers l’API Analytics qui retourne les enregistrements de la requête ayant créé l’alerte. |
LinkToFilteredSearchResultsUI |
#linktofilteredsearchresultsui | Lien vers le portail Analytics qui retourne les enregistrements de la requête filtrés par combinaisons de valeurs de dimensions ayant créé l’alerte. |
LinkToFilteredSearchResultsAPI |
#linktofilteredsearchresultsapi | Lien vers l’API Analytics qui retourne les enregistrements de la requête filtrés par combinaisons de valeurs de dimensions ayant créé l’alerte. |
ResultCount |
#searchresultcount | Nombre d’enregistrements dans les résultats de recherche. |
Search Interval End time |
#searchintervalendtimeutc | Heure de fin de la requête au format UTC, au format mm/jj/aaaa HH:mm:ss AM/PM. |
Search Interval |
#searchinterval | Fenêtre de temps de la règle d’alerte, au format HH:mm:ss. |
Search Interval StartTime |
#searchintervalstarttimeutc | Heure de début de la requête au format UTC, au format mm/jj/aaaa HH:mm:ss AM/PM. |
SearchQuery |
#searchquery | Requête de recherche de journal utilisée par la règle d’alerte. |
SearchResults |
"IncludeSearchResults": true | Enregistrements retournés par la requête sous forme de table JSON, limitée aux 1 000 premiers enregistrements. « IncludeSearchResults » : true est ajouté à une définition de webhook JSON personnalisée en tant que propriété de niveau supérieur. |
Dimensions |
« IncludeDimension »" : true | Combinaisons de valeurs de dimensions ayant déclenché une alerte en tant que section JSON. « IncludeDimensions » : true est ajouté à une définition de webhook JSON personnalisée en tant que propriété de niveau supérieur. |
Alert Type |
#alerttype | Type de règle d’alerte de recherche de journal configurée comme mesure de métrique ou nombre de résultats. |
WorkspaceID |
#workspaceid | ID de votre espace de travail Log Analytics. |
Application ID |
#applicationid | ID de votre application Application Insights. |
Subscription ID |
#subscriptionid | ID de votre abonnement Azure utilisé. |
Vous pouvez utiliser l’option Inclure une charge utile JSON personnalisée pour webhook pour obtenir une charge utile JSON personnalisée à l’aide des paramètres. Vous pouvez également générer des propriétés supplémentaires.
Par exemple, vous pouvez spécifier la charge utile personnalisée suivante qui inclut un paramètre unique appelé text
. Le service appelé par ce webhook s’attend à recevoir ce paramètre :
{
"text":"#alertrulename fired with #searchresultcount over threshold of #thresholdvalue."
}
Cet exemple de charge utile donne ce qui suit quand il est envoyée au webhook :
{
"text":"My Alert Rule fired with 18 records over threshold of 10 ."
}
Les variables d’un webhook personnalisé doivent être spécifiées dans un boîtier JSON. Par exemple, le fait de référencer #searchresultcount
dans l’exemple de webhook génère une sortie en fonction des résultats de l’alerte.
Pour inclure les résultats de la recherche, ajoutez IncludeSearchResults en tant que propriété de niveau supérieur dans le JSON personnalisé. Les résultats de la recherche sont inclus en tant que structure JSON, ce qui signifie que les résultats ne peuvent pas être référencés dans des champs définis personnalisés.
Notes
Le bouton Afficher le webhook à côté de l’option Inclure une charge utile JSON personnalisée pour webhook affiche un aperçu de ce qui a été fourni. Il ne contient aucune donnée réelle, mais il est représentatif du schéma JSON utilisé.
Par exemple, pour créer une charge utile personnalisée qui inclut uniquement le nom de l’alerte et les résultats de la recherche, utilisez cette configuration :
{
"alertname":"#alertrulename",
"IncludeSearchResults":true
}
L’exemple de charge utile suivant est destiné à une action de webhook personnalisée pour toute alerte de recherche dans les journaux :
{
"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"]
]
}
]
}
}
Étapes suivantes
- Découvrez les alertes Azure Monitor.
- Créer et gérer des groupes d’actions dans Azure.
- Découvrez plus en détail les requêtes dans les journaux.