Compartir a través de

¿Cómo enviar a un azure web apps el payload de una alerta con el resultado del kql del AzureActivity Log?

MANUEL ANTONIO ORDENES MELLADO 0 Puntos de reputación
2024-05-07T20:57:07.1633333+00:00

Tengo configurada una alerta del tipo Búsqueda de Registros Personalizada en donde se ejecuta el query Kql sobre AzureActivity cada 5 minutos.

AzureActivity| where TimeGenerated > ago(1h)| where ActivityStatus == "Succeeded" and OperationName in('Add API to product','Add backend or Update backend',    'Associate group with product')

En el grupo de acciones se configuro el Comportamiento del tipo de acción webhook para enviar el payload de la alerta a un azure web apps y poder obtener campos como "Caller", "ResourceId", etc. del registro AzureActivity Log, sin embargo el payload recibido no contiene esta información.

Trate de incluir campos personalizados desactivando el esquema común de alerta, pero no funciona.

Por favor ayuda para resolver este tema!

Muchas gracias.

Ejemplo del json con el payload de la alerta recibida en el web apps

{ "schemaId": "azureMonitorCommonAlertSchema", "data": { "essentials": { "alertId": "/subscriptions/5666275e-b163-4b30-a831-76ec556e59ba/providers/Microsoft.AlertsManagement/alerts/bea116e4-bb6f-a13a-08bb-4ff597e00004", "alertRule": "Actualización de API - Test API PAPI - 3", "severity": "Sev3", "signalType": "Log", "monitorCondition": "Fired", "monitoringService": "Log Alerts V2", "alertTargetIDs": [ "/subscriptions/5666275e-b163-4b30-a831-76ec556e59ba/resourcegroups/rsgreu2apigp01/providers/microsoft.apimanagement/service/apimeu2apigp01" ], "configurationItems": [ "/subscriptions/5666275e-b163-4b30-a831-76ec556e59ba/resourceGroups/RSGREU2APIGP01/providers/Microsoft.ApiManagement/service/apimeu2apigp01" ], "originAlertId": "41de512b-ff6a-169e-200e-12a3bbe87797", "firedDateTime": "2024-05-07T19:46:59.3592947Z", "description": "Actualización de API - Test API PAPI - 3", "essentialsVersion": "1.0", "alertContextVersion": "1.0" }, "alertContext": { "properties": { "AlertDimensions": "${data.alertContext.Dimensions}", "AlertSearchQuery": "${data.alertContext.SearchQuery}", "AlertAffectedConfigurationItems": "${data.alertContext.AffectedConfigurationItems}", "AletresourceID": "${data.alertContext.resourceID}", "AlertTargetIDs": "Actualización de API - Test API PAPI - 3", "AlertRule": "Actualización de API - Test API PAPI - 3", "SearchResult": "${data.alertContext.IncludeSearchResults}" }, "conditionType": "LogQueryCriteria", "condition": { "windowSize": "PT30M", "allOf": [ { "searchQuery": "AzureActivity\n| where TimeGenerated > ago(72h)\n| where ActivityStatus == "Succeeded" and OperationName in('Create API or Update API','Set API policy configuration')", "metricMeasureColumn": null, "targetResourceTypes": "['Microsoft.ApiManagement/service']", "operator": "GreaterThanOrEqual", "threshold": "1", "timeAggregation": "Count", "dimensions": [], "metricValue": 2, "failingPeriods": { "numberOfEvaluationPeriods": 1, "minFailingPeriodsToAlert": 1 }, "linkToSearchResultsUI": "https://portal.azure.com#@5d93ebcc-f769-4380-8b7e-289fc972da1b/blade/Microsoft_Azure_Monitoring_Logs/LogsBlade/source/Alerts.EmailLinks/scope/%7B%22resources%22%3A%5B%7B%22resourceId%22%3A%22%2Fsubscriptions%2F5666275e-b163-4b30-a831-76ec556e59ba%2FresourceGroups%2FRSGREU2APIGP01%2Fproviders%2FMicrosoft.ApiManagement%2Fservice%2Fapimeu2apigp01%22%7D%5D%7D/q/eJw9jbEKwjAYhHef4qdLWrASQ7VYqFAcxEWF1sUtJL82YJMSE6Xiw9ta9Ka7g7uveHmLhXDqoVw3ecOzRotQqQa3qNFyhxLWEMreuL4MGWVJTBcxTav5KkuWGVvO6KhzBDGkrI7%2BN7%2Ff0nHn75DnEJReCESJMgCuJRzagaGM3vMGQemQbCz2LCiOOzAWTu1AHhKZkhLdt2%2FNTYkOhNEXdfXjnkQf/prettify/1/timespan/2024-05-05T19%3a46%3a26.0000000Z%2f2024-05-07T19%3a46%3a26.0000000Z", "linkToFilteredSearchResultsUI": "https://portal.azure.com#@5d93ebcc-f769-4380-8b7e-289fc972da1b/blade/Microsoft_Azure_Monitoring_Logs/LogsBlade/source/Alerts.EmailLinks/scope/%7B%22resources%22%3A%5B%7B%22resourceId%22%3A%22%2Fsubscriptions%2F5666275e-b163-4b30-a831-76ec556e59ba%2FresourceGroups%2FRSGREU2APIGP01%2Fproviders%2FMicrosoft.ApiManagement%2Fservice%2Fapimeu2apigp01%22%7D%5D%7D/q/eJw9jbEKwjAYhHef4qdLWrASQ7VYqFAcxEWF1sUtJL82YJMSE6Xiw9ta9Ka7g7uveHmLhXDqoVw3ecOzRotQqQa3qNFyhxLWEMreuL4MGWVJTBcxTav5KkuWGVvO6KhzBDGkrI7%2BN7%2Ff0nHn75DnEJReCESJMgCuJRzagaGM3vMGQemQbCz2LCiOOzAWTu1AHhKZkhLdt2%2FNTYkOhNEXdfXjnkQf/prettify/1/timespan/2024-05-05T19%3a46%3a26.0000000Z%2f2024-05-07T19%3a46%3a26.0000000Z", "linkToSearchResultsAPI": "https://api.loganalytics.io/v1/subscriptions/5666275e-b163-4b30-a831-76ec556e59ba/resourceGroups/RSGREU2APIGP01/providers/Microsoft.ApiManagement/service/apimeu2apigp01/query?query=AzureActivity%0A%7C%20where%20TimeGenerated%20%3E%20%28datetime%282024-05-07T19%3A46%3A26.0000000Z%29%20-%2072h%29%0A%7C%20where%20ActivityStatus%20%3D%3D%20%22Succeeded%22%20and%20OperationName%20in%28%27Create%20API%20or%20Update%20API%27%2C%27Set%20API%20policy%20configuration%27%29&timespan=2024-05-05T19%3a46%3a26.0000000Z%2f2024-05-07T19%3a46%3a26.0000000Z", "linkToFilteredSearchResultsAPI": "https://api.loganalytics.io/v1/subscriptions/5666275e-b163-4b30-a831-76ec556e59ba/resourceGroups/RSGREU2APIGP01/providers/Microsoft.ApiManagement/service/apimeu2apigp01/query?query=AzureActivity%0A%7C%20where%20TimeGenerated%20%3E%20%28datetime%282024-05-07T19%3A46%3A26.0000000Z%29%20-%2072h%29%0A%7C%20where%20ActivityStatus%20%3D%3D%20%22Succeeded%22%20and%20OperationName%20in%28%27Create%20API%20or%20Update%20API%27%2C%27Set%20API%20policy%20configuration%27%29&timespan=2024-05-05T19%3a46%3a26.0000000Z%2f2024-05-07T19%3a46%3a26.0000000Z", "event": null } ], "windowStartTime": "2024-05-05T19:46:26Z", "windowEndTime": "2024-05-07T19:46:26Z" } }, "customProperties": { "AlertDimensions": "${data.alertContext.Dimensions}", "AlertSearchQuery": "${data.alertContext.SearchQuery}", "AlertAffectedConfigurationItems": "${data.alertContext.AffectedConfigurationItems}", "AletresourceID": "${data.alertContext.resourceID}", "AlertTargetIDs": "Actualización de API - Test API PAPI - 3", "AlertRule": "Actualización de API - Test API PAPI - 3", "SearchResult": "${data.alertContext.IncludeSearchResults}" } } }

Azure
Azure

Plataforma e infraestructura de informática en la nube para crear, implementar y administrar aplicaciones y servicios a través de una red mundial de centros de datos administrados por Microsoft.

0 comentarios No hay comentarios

1 respuesta

Ordenar por: Muy útil
  1. Jonathan Pereira Castillo 17,395 Puntos de reputación Moderador
    2025-01-20T18:39:02.0666667+00:00

    ¡Hola MANUEL ANTONIO ORDENES MELLADO!

    Esperamos que este mensaje te encuentre bien.

    Lamentamos sinceramente la demora en abordar tu tema en este foro.  

    Para enviar el payload de una alerta con el resultado del KQL del AzureActivity Log a un Azure Web App, sigue estos pasos:

    1. Configura la alerta: Asegúrate de que tu alerta esté configurada correctamente para ejecutar la consulta KQL y generar la alerta.
    2. Configura el webhook: En el grupo de acciones de la alerta, configura un webhook que apunte a tu Azure Web App. Asegúrate de que el webhook esté habilitado para recibir el payload.
    3. Personaliza el payload: Desactiva el esquema común de alerta y personaliza el payload para incluir los campos que necesitas, como "Caller" y "ResourceId".
    4. Verifica el payload: Asegúrate de que el payload recibido en tu Azure Web App contenga la información correcta. Puedes depurar el webhook para verificar los datos recibidos.

    Aquí tienes un ejemplo de cómo debería verse el payload JSON:

    {
      "schemaId": "azureMonitorCommonAlertSchema",
      "data": {
        "essentials": {
          "alertId": "/subscriptions/tu-suscripcion/providers/Microsoft.AlertsManagement/alerts/tu-alerta",
          "alertRule": "Nombre de la alerta",
          "severity": "Sev3",
          "signalType": "Log",
          "monitorCondition": "Fired",
          "monitoringService": "Log Alerts V2",
          "alertTargetIDs": ["/subscriptions/tu-suscripcion/resourcegroups/tu-grupo/providers/microsoft.apimanagement/service/tu-servicio"],
          "configurationItems": ["/subscriptions/tu-suscripcion/resourceGroups/tu-grupo/providers/Microsoft.ApiManagement/service/tu-servicio"],
          "originAlertId": "id-de-la-alerta",
          "firedDateTime": "fecha-y-hora",
          "description": "Descripción de la alerta",
          "essentialsVersion": "1.0",
          "alertContextVersion": "1.0"
        },
        "alertContext": {
          "properties": {
            "AlertDimensions": "${data.alertContext.Dimensions}",
            "AlertSearchQuery": "${data.alertContext.SearchQuery}",
            "AlertAffectedConfigurationItems": "${data.alertContext.AffectedConfigurationItems}",
            "AletresourceID": "${data.alertContext.resourceID}",
            "AlertTargetIDs": "Nombre de la alerta",
            "AlertRule": "Nombre de la alerta",
            "SearchResult": "${data.alertContext.IncludeSearchResults}"
          },
          "conditionType": "LogQueryCriteria",
          "condition": {
            "windowSize": "PT30M",
            "allOf": [
              {
                "searchQuery": "AzureActivity\n| where TimeGenerated > ago(72h)\n| where ActivityStatus == \"Succeeded\" and OperationName in('Create API or Update API','Set API policy configuration')",
                "metricMeasureColumn": null,
                "targetResourceTypes": "['Microsoft.ApiManagement/service']",
                "operator": "GreaterThanOrEqual",
                "threshold": "1",
                "timeAggregation": "Count",
                "dimensions": [],
                "metricValue": 2,
                "failingPeriods": {
                  "numberOfEvaluationPeriods": 1,
                  "minFailingPeriodsToAlert": 1
                },
                "linkToSearchResultsUI": "https://portal.azure.com",
                "linkToFilteredSearchResultsUI": "https://portal.azure.com",
                "linkToSearchResultsAPI": "https://api.loganalytics.io/v1/subscriptions/tu-suscripcion/resourceGroups/tu-grupo/providers/Microsoft.ApiManagement/service/tu-servicio/query?query=AzureActivity%0A%7C%20where%20TimeGenerated%20%3E%20%28datetime%29%20-%2072h%29%0A%7C%20where%20ActivityStatus%20%3D%3D%20%22Succeeded%22%20and%20OperationName%20in%28%27Create%20API%20or%20Update%20API%27%2C%27Set%20API%20policy%20configuration%27%29&timespan=2024-05-05T19%3a46%3a26.0000000Z%2f2024-05-07T19%3a46%3a26.0000000Z",
                "linkToFilteredSearchResultsAPI": "https://api.loganalytics.io/v1/subscriptions/tu-suscripcion/resourceGroups/tu-grupo/providers/Microsoft.ApiManagement/service/tu-servicio/query?query=AzureActivity%0A%7C%20where%20TimeGenerated%20%3E%20%28datetime%29%20-%2072h%29%0A%7C%20where%20ActivityStatus%20%3D%3D%20%22Succeeded%22%20and%20OperationName%20in%28%27Create%20API%20or%20Update%20API%27%2C%27Set%20API%20policy%20configuration%27%29&timespan=2024-05-05T19%3a46%3a26.0000000Z%2f2024-05-07T19%3a46%3a26.0000000Z"
              }
            ],
            "windowStartTime": "2024-05-05T19:46:26Z",
            "windowEndTime": "2024-05-07T19:46:26Z"
          }
        },
        "customProperties": {
          "AlertDimensions": "${data.alertContext.Dimensions}",
          "AlertSearchQuery": "${data.alertContext.SearchQuery}",
          "AlertAffectedConfigurationItems": "${data.alertContext.AffectedConfigurationItems}",
          "AletresourceID": "${data.alertContext.resourceID}",
          "AlertTargetIDs": "Nombre de la alerta",
          "AlertRule": "Nombre de la alerta",
          "SearchResult": "${data.alertContext.IncludeSearchResults}"
        }
      }
    }
    

    Espero que esto te ayude a resolver el problema.

    Si no recibimos una respuesta tuya en los próximos días, procederemos a cerrar el tema. Sin embargo, queremos asegurarte que siempre estamos disponibles para cualquier asistencia que puedas necesitar.

    Agradecemos tu comprensión y estamos aquí para ayudar en lo que sea necesario.

    Estaré atento a tu respuesta.,

     Jonathan

    ----------*

    Tu opinión es muy importante para nosotros! Si esta respuesta resolvió tu consulta, por favor haz clic en ''. Esto nos ayuda a mejorar continuamente la calidad y relevancia de nuestras soluciones.

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios

Su respuesta

Las respuestas pueden ser marcadas como "Aceptadas" por el autor de la pregunta y "Recomendadas" por los moderadores, lo que ayuda a los usuarios a saber que la respuesta ha resuelto el problema del autor.