Cargas de ejemplo para alertas de búsqueda de registros mediante acciones de webhook
Puede usar acciones de webhook en una regla de alerta de búsqueda de registros para invocar una única solicitud HTTP POST. En este artículo se describen las propiedades disponibles al configurar grupos de acciones para usar webhooks. El servicio al que se llama debe admitir webhooks y saber cómo usar la carga que recibe.
Se recomienda usar un esquema de alertas común para las integraciones de webhook. Este esquema ofrece la ventaja de tener una sola carga de alertas, extensible y unificada, para todos los servicios de alerta de Azure Monitor.
Para las reglas de alertas de búsqueda de registros que tienen definida una carga JSON personalizada, al habilitar el esquema de alerta común se revierte el esquema de carga al que se describe en Esquema de alerta común. Si quiere que se defina una carga de JSON personalizada, el webhook no puede usar el esquema de alertas común.
Las alertas con el esquema común habilitado tienen un límite de tamaño superior de 256 KB por alerta. Una alerta más grande no incluye resultados de búsqueda. Cuando no se incluyen los resultados de la búsqueda, use LinkToFilteredSearchResultsAPI
o LinkToSearchResultsAPI
para acceder a los resultados de la búsqueda a través de la API de Log Analytics.
Estas cargas incluyen ejemplos en los que la carga es estándar y otros en los que es personalizada.
Alerta de búsqueda de registros para todos los registros de recursos (desde la versión 2021-08-01
de API )
La siguiente carga de ejemplo es para un webhook estándar cuando se usa para las alertas de búsqueda de registros en función de los registros de recursos:
{
"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"
}
}
}
}
Alerta de búsqueda de registros para Log Analytics (hasta la versión 2018-04-16
de API)
La carga de ejemplo siguiente corresponde a una acción de webhook estándar que se usa para las alertas basadas en Log Analytics:
Nota
El valor del campo "Severity"
cambia si ha cambiado a la versión scheduledQueryRules API actual de Alert API de Log Analytics heredada.
{
"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"
}
Alerta de búsqueda de registros para Application Insights (hasta la versión 2018-04-16
de api )
La siguiente carga de ejemplo es para un webhook estándar cuando se usa para las alertas de búsqueda de registros basadas en los recursos de 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"
}
}
Alerta de búsqueda de registros con una carga JSON personalizada (hasta la versión 2018-04-16
de la API)
Nota:
Un webhook basado en JSON personalizado no se admite desde la versión 2021-08-01
de la API.
En la tabla siguiente se enumeran las propiedades de acción de webhook predeterminadas y sus nombres de parámetros JSON personalizados.
Parámetro | Variable | Descripción |
---|---|---|
AlertRuleName |
#alertrulename | Nombre de la regla de alerta. |
Severity |
#severity | Gravedad establecida para la alerta de búsqueda de registros desencadenada. |
AlertThresholdOperator |
ThresholdOperator | Operador de umbral para la regla de alerta. |
AlertThresholdValue |
#thresholdvalue | Valor de umbral para la regla de alerta. |
LinkToSearchResults |
#linktosearchresults | Vínculo al portal de Analytics que devuelve los registros de la consulta que creó la alerta. |
LinkToSearchResultsAPI |
#linktosearchresultsapi | Vínculo a la API de Analytics que devuelve los registros de la consulta que creó la alerta. |
LinkToFilteredSearchResultsUI |
#linktofilteredsearchresultsui | Vínculo al portal de Analytics que devuelve los registros de la consulta filtrada por las combinaciones de valores de dimensiones que crearon la alerta. |
LinkToFilteredSearchResultsAPI |
#linktofilteredsearchresultsapi | Vínculo a la API de Analytics que devuelve los registros de la consulta filtrada por las combinaciones de valores de dimensiones que crearon la alerta. |
ResultCount |
#searchresultcount | Número de registros en los resultados de la búsqueda. |
Search Interval End time |
#searchintervalendtimeutc | Hora de finalización de la consulta en hora UTC, con formato mm/dd/aaaa HH:mm:ss AM/PM. |
Search Interval |
#searchinterval | Período de tiempo para la regla de alertas, con formato HH:mm:ss. |
Search Interval StartTime |
#searchintervalstarttimeutc | Hora de inicio de la consulta en hora UTC, con formato mm/dd/aaaa HH:mm:ss AM/PM. |
SearchQuery |
#searchquery | Consulta de búsqueda de registros utilizada por la regla de alerta. |
SearchResults |
"IncludeSearchResults": true | Los registros devueltos por la consulta en forma de una tabla JSON, limitados a los primeros 1000 registros. Se agrega "IncludeSearchResults": true en una definición personalizada de webhook de JSON como una propiedad de nivel superior. |
Dimensions |
"IncludeDimensions": true | Combinaciones de valores de dimensiones que desencadenaron esa alerta como una sección JSON. Se agrega "IncludeDimensions": true en una definición personalizada de webhook de JSON como una propiedad de nivel superior. |
Alert Type |
#alerttype | El tipo de regla de alertas de búsqueda de registros configurada como medición de métricas o Número de resultados. |
WorkspaceID |
#workspaceid | Identificador del área de trabajo de Log Analytics. |
Application ID |
#applicationid | Identificador de la aplicación Application Insights. |
Subscription ID |
#subscriptionid | Identificador de la suscripción a Azure usada. |
Puede usar la opción Incluir la carga personalizada de JSON para webhook para obtener una carga de JSON personalizada mediante los parámetros. También puede generar más propiedades.
Por ejemplo, podría especificar la siguiente carga personalizada que incluye un único parámetro denominado text
. El servicio al que llama este webhook espera este parámetro:
{
"text":"#alertrulename fired with #searchresultcount over threshold of #thresholdvalue."
}
Esta carga de ejemplo se resuelve en algo similar al siguiente ejemplo al enviarse al webhook:
{
"text":"My Alert Rule fired with 18 records over threshold of 10 ."
}
Las variables de un webhook personalizado se deben especificar dentro de un contenedor JSON. Por ejemplo, si se hace referencia a #searchresultcount
en el ejemplo de webhook, se genera la salida en función de los resultados de la alerta.
Para incluir los resultados de la búsqueda, agregue IncludeSearchResults como propiedad de nivel superior en la carga JSON personalizada. Los resultados de la búsqueda se incluyen como una estructura JSON, por lo que no se puede hacer referencia a ellos en campos definidos personalizados.
Nota
El botón Ver webhook situado junto a la opción Incluir la carga personalizada de JSON para webhook muestra una vista previa de lo que se proporcionó. No contiene datos reales, pero es representativo del esquema JSON que se usará.
Por ejemplo, para crear una carga personalizada que solo incluya el nombre de la alerta y los resultados de la búsqueda, use esta configuración:
{
"alertname":"#alertrulename",
"IncludeSearchResults":true
}
La siguiente carga de ejemplo es para una acción de webhook personalizada para cualquier alerta de búsqueda de registros:
{
"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"]
]
}
]
}
}
Pasos siguientes
- Obtenga información sobre las alertas de Azure Monitor.
- Cree y administre grupos de acciones en Azure.
- Obtenga más información sobre las consultas de registro.