Esquema de alertas comuns

O esquema de alerta comum padroniza o consumo de notificações de alerta do Azure Monitor. Historicamente, os alertas de log de atividades, métricas e pesquisa de log utilizavam os seus próprios modelos de e-mail e esquemas de webhook. O esquema de alerta comum fornece um esquema padronizado para todas as notificações de alerta.

O uso de um esquema padronizado ajuda a minimizar o número de integrações, o que simplifica o processo de gerenciamento e manutenção de suas integrações. O esquema comum permite uma experiência de consumo de alerta mais avançada no portal do Azure e no aplicativo móvel do Azure.

O esquema de alerta comum fornece uma estrutura consistente para:

  • Modelos de e-mail: use o modelo de e-mail detalhado para diagnosticar problemas rapidamente. Links incorporados para a instância de alerta no portal e para o recurso afetado garantem que você possa entrar rapidamente no processo de correção.

  • Estrutura JSON: use a estrutura JSON consistente para criar integrações para todos os tipos de alerta usando:

    • Azure Logic Apps
    • Funções do Azure
    • Runbook da Automatização do Azure

Nota

  • Os alertas gerados pelas informações da VM não suportam o esquema comum.
  • Os alertas de deteção inteligente usam o esquema comum por padrão. Não é necessário ativar o esquema comum para alertas de deteção inteligente.

Estrutura do esquema comum

O esquema comum inclui informações sobre o recurso afetado e a causa do alerta nestas seções:

  • Essenciais: campos padronizados, usados por todos os tipos de alerta que descrevem o recurso afetado pelo alerta e metadados comuns de alerta, como gravidade ou descrição.

    Se quiser rotear instâncias de alerta para equipes específicas com base em critérios como um grupo de recursos, você pode usar os campos na seção Essentials para fornecer lógica de roteamento para todos os tipos de alerta. As equipes que recebem a notificação de alerta podem usar os campos de contexto para sua investigação.

  • Contexto do alerta: campos que variam dependendo do tipo de alerta. Os campos de contexto do alerta descrevem a causa do alerta. Por exemplo, um alerta de métrica teria campos como o nome da métrica e o valor da métrica no contexto do alerta. Um alerta de registro de atividades teria informações sobre o evento que gerou o alerta.

  • Propriedades personalizadas: informações adicionais que não estão incluídas na carga útil de alerta por padrão podem ser incluídas na carga de alerta usando propriedades personalizadas. As propriedades personalizadas constituem um par Chave:Valor que pode incluir qualquer de informação configurada na regra de alerta.

Amostra de carga útil de alerta

{
  "schemaId": "azureMonitorCommonAlertSchema",
  "data": {
    "essentials": {
      "alertId": "/subscriptions/<subscription ID>/providers/Microsoft.AlertsManagement/alerts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
      "alertRule": "WCUS-R2-Gen2",
      "alertRuleId": "/subscriptions/<subscription ID>/resourceGroups/<resource-group>/providers/microsoft.insights/metricAlerts/WCUS-R2-Gen2",
      "severity": "Sev3",
      "signalType": "Metric",
      "monitorCondition": "Resolved",
      "monitoringService": "Platform",
      "alertTargetIDs": [
        "/subscriptions/<subscription ID>/resourcegroups/pipelinealertrg/providers/microsoft.compute/virtualmachines/wcus-r2-gen2"
      ],
      "configurationItems": [
        "wcus-r2-gen2"
      ],
      "originAlertId": "3f2d4487-b0fc-4125-8bd5-7ad17384221e_PipeLineAlertRG_microsoft.insights_metricAlerts_WCUS-R2-Gen2_-117781227",
      "firedDateTime": "2019-03-22T13:58:24.3713213Z",
      "resolvedDateTime": "2019-03-22T14:03:16.2246313Z",
      "description": "",
      "essentialsVersion": "1.0",
      "alertContextVersion": "1.0"
    },
    "alertContext": {
      "properties": null,
      "conditionType": "SingleResourceMultipleMetricCriteria",
      "condition": {
        "windowSize": "PT5M",
        "allOf": [
          {
            "metricName": "Percentage CPU",
            "metricNamespace": "Microsoft.Compute/virtualMachines",
            "operator": "GreaterThan",
            "threshold": "25",
            "timeAggregation": "Average",
            "dimensions": [
              {
                "name": "ResourceId",
                "value": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1"
              }
            ],
            "metricValue": 7.727
          }
        ]
      }
    },
    "customProperties": {
      "Key1": "Value1",
      "Key2": "Value2"
    }
  }
}

Nota

O alertRuleId campo pode não aparecer em todas as cargas úteis de alerta. Está incluído apenas em certos tipos de alertas ou versões da API que suportam devolver o ID completo do recurso da regra do alerta.

Para alertas de exemplo que usam o esquema comum, consulte Cargas de alerta de exemplo.

Campos essenciais

Campo Descrição
alertContextVersion O número da versão da secção alertContext.
alertId O identificador único de recurso que identifica a instância de alerta.
regra de alerta O nome da regra de alerta que gerou a instância de alerta.
alertRuleID A ID da regra de alerta que gerou a instância de alerta.
IDs de Alvo de Alerta A lista das IDs do Azure Resource Manager que são alvos afetados de um alerta. Para um alerta de pesquisa de log definido num espaço de trabalho do Log Analytics ou instância do Application Insights, é o respetivo espaço de trabalho ou aplicação.
itens de configuração A lista de recursos afetados referentes a um alerta.
Em alguns casos, os itens de configuração podem ser diferentes dos destinos de alerta. Por exemplo, nos alertas de pesquisa de métrica-para-log ou de log definidos num espaço de trabalho do Log Analytics, os itens de configuração são os recursos reais que enviam os dados, e não o espaço de trabalho.
  • Na API de alertas de pesquisa de log (Regras de Consultas Agendadas) v2021-08-01, os valores configurationItem são retirados de dimensões explicitamente definidas com a seguinte prioridade: _ResourceId, ResourceId, Resource, Computer.
  • Em versões anteriores da API de alertas de pesquisa de log, os valores configurationItem são retirados implicitamente a partir dos resultados nesta prioridade: _ResourceId, ResourceId, Resource, Computer.
Em sistemas ITSM, o configurationItems campo é usado para correlacionar alertas a recursos em um banco de dados de gerenciamento de configuração.
descrição A descrição, conforme definido na regra de alerta.
versãoEssencial O número da versão da seção essencial.
firedDateTime A data e a hora em que a instância de alerta foi acionada no Tempo Universal Coordenado (UTC).
investigaçãoLink Link para investigar o alerta no Azure Monitor. Atualmente requer um registo de pré-visualização limitado.
monitorizarCondição Quando um alerta é acionado, a condição do monitor do alerta é definida como Acionado. Quando a condição subjacente que causou o disparo de alerta for resolvida, a condição do monitor é alterada para Resolvida.
Serviço de Monitoramento O serviço ou solução de monitoramento que gerou o alerta. O serviço de monitoramento determina quais campos estão no contexto de alerta.
originAlertId A ID da instância de alerta, conforme gerada pelo serviço de monitoramento que a gera.
resolvedDateTime A data e a hora em que a condição do monitor para a instância de alerta é definida como Resolvido em UTC. Atualmente aplicável apenas para alertas métricos.
nomeDoGrupoDeRecursos Nome do grupo de recursos para o recurso afetado.
tipo de recurso O tipo de recurso afetado pelo alerta.
Gravidade A gravidade do alerta. Os valores possíveis são Sev0, Sev1, Sev2, Sev3 ou Sev4.
Tipo de sinal Identifica o sinal no qual a regra de alerta foi definida. Os valores possíveis são Metric, Log ou Activity Log.

Campos de contexto de alerta para alertas métricos

Campo Descrição
alertSensibilidade Em uma regra de alerta com um limite dinâmico, indica o quão sensível a regra é ou o quanto o valor pode se desviar do limite superior ou inferior.
allOf Indica que todas as condições definidas na regra de alerta devem ser atendidas para disparar um alerta.
condição
tipoDeCondição O tipo de condição selecionada para a regra de alerta:
  • Limiar estático
  • limiar dinâmico
  • WebTest
dimensões A dimensão métrica que disparou o alerta.
períodos de falha Numa regra de alerta com um limite dinâmico, o número de períodos de avaliação que não satisfazem o limite de alerta e que ativam um alerta. Por exemplo, você pode indicar que um alerta é acionado quando 3 dos últimos cinco períodos de avaliação não estão dentro dos limites de alerta.
ignorarDadosAntes (Opcional.) Em uma regra de alerta com um limite dinâmico, a data a partir da qual o limite é calculado. Use esse valor para indicar que a regra não deve calcular o limite dinâmico usando dados anteriores à data especificada.
metricName O nome da métrica monitorada pela regra de alerta.
metricNamespace O namespace da métrica monitorada pela regra de alerta.
metricValue O valor da métrica no momento em que violou o limite.
períodosMinFalhaParaAlertar O número mínimo de avaliações que não cumprem as condições da regra de alerta.
nome O nome da dimensão.
númeroDePeríodosDeAvaliação O número total de avaliações.
operador O operador lógico da regra de alerta.
propriedades (Opcional.) Uma coleção de propriedades definidas pelo cliente.
limiar O limite definido na regra de alerta. Para uma regra de alerta com um limite dinâmico, esse valor é o limite calculado.
agregação de tempo O tipo de agregação da regra de alerta.
valor O valor da dimensão.
webTestName Se o tipo de condição for webtest, o nome do webtest.
windowEndTime A hora de término da janela de avaliação na qual o alerta foi disparado.
tamanho da janela O período de tempo analisado pela regra de alerta.
janelaStartTime A hora de início da janela de avaliação na qual o alerta foi disparado.

Exemplo de alerta métrico com um limite estático quando monitoringService = Platform

{
  "alertContext": {
      "properties": null,
      "conditionType": "SingleResourceMultipleMetricCriteria",
      "condition": {
        "windowSize": "PT5M",
        "allOf": [
          {
            "metricName": "Percentage CPU",
            "metricNamespace": "Microsoft.Compute/virtualMachines",
            "operator": "GreaterThan",
            "threshold": "25",
            "timeAggregation": "Average",
            "dimensions": [
              {
                "name": "ResourceId",
                "value": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1"
              }
            ],
            "metricValue": 31.1105
          }
        ],
        "windowStartTime": "2019-03-22T13:40:03.064Z",
        "windowEndTime": "2019-03-22T13:45:03.064Z"
      }
    }
}

Exemplo de alerta métrico com um limite dinâmico quando monitoringService = Platform

{
  "alertContext": {
      "properties": null,
      "conditionType": "DynamicThresholdCriteria",
      "condition": {
        "windowSize": "PT5M",
        "allOf": [
          {
            "alertSensitivity": "High",
            "failingPeriods": {
              "numberOfEvaluationPeriods": 1,
              "minFailingPeriodsToAlert": 1
            },
            "ignoreDataBefore": null,
            "metricName": "Egress",
            "metricNamespace": "microsoft.storage/storageaccounts",
            "operator": "GreaterThan",
            "threshold": "47658",
            "timeAggregation": "Total",
            "dimensions": [],
            "metricValue": 50101
          }
        ],
        "windowStartTime": "2021-07-20T05:07:26.363Z",
        "windowEndTime": "2021-07-20T05:12:26.363Z"
      }
    }
}

Exemplo de alerta métrico para testes de disponibilidade quando monitoringService = Platform

{
  "alertContext": {
      "properties": null,
      "conditionType": "WebtestLocationAvailabilityCriteria",
      "condition": {
        "windowSize": "PT5M",
        "allOf": [
          {
            "metricName": "Failed Location",
            "metricNamespace": null,
            "operator": "GreaterThan",
            "threshold": "2",
            "timeAggregation": "Sum",
            "dimensions": [],
            "metricValue": 5,
            "webTestName": "myAvailabilityTest-myApplication"
          }
        ],
        "windowStartTime": "2019-03-22T13:40:03.064Z",
        "windowEndTime": "2019-03-22T13:45:03.064Z"
      }
    }
}

Campos de contexto de alerta para alertas de pesquisa de log

Nota

Quando você habilita o esquema comum, os campos na carga útil são redefinidos para os campos comuns do esquema. Portanto, os alertas de pesquisa de log têm estas limitações em relação ao esquema comum:

  • O esquema comum não é suportado para alertas de pesquisa de log usando webhooks com um assunto de e-mail personalizado e/ou carga útil JSON, pois o esquema comum substitui as configurações personalizadas.

  • Os alertas que usam o esquema comum têm um limite de tamanho superior de 256 KB por alerta. Se a carga útil dos alertas de pesquisa de log incluir resultados de pesquisa que façam com que o alerta exceda o tamanho máximo, os resultados da pesquisa não serão incorporados na carga útil dos alertas de pesquisa de log. Você pode verificar se o conteúdo inclui os resultados da pesquisa com o IncludedSearchResults indicador. Use LinkToFilteredSearchResultsAPI ou LinkToSearchResultsAPI para aceder aos resultados da consulta com a API do Log Analytics se os resultados da pesquisa não estiverem incluídos.

Campo Descrição
Tipo de Alerta O tipo de alerta:
- Medição Métrica
- Número de Resultados
ID do aplicativo O ID do Application Insights no qual o alerta foi acionado.
colunas As colunas na tabela.
Fontes de dados As fontes de dados sobre as quais o alerta foi acionado.
Dimensões Para regras de medição métrica, as dimensões métricas nas quais o alerta foi acionado.
Resultados de Pesquisa Incluídos Sinalizador que indica se a carga útil deve conter os resultados.
Link para os Resultados Filtrados da API de Pesquisa Para regras de medição métrica, o link para os resultados da pesquisa usando a API do Log Analytics depois que eles forem filtrados pelas combinações de dimensão.
LinkParaResultadosDePesquisaFiltradosUI Para as regras de medição em sistema métrico, o link para os resultados da pesquisa após terem sido filtrados pelas combinações de dimensões.
LinkParaResultadosDePesquisa Um link para os resultados da pesquisa.
LinkToSearchResultsAPI Um link para os resultados da consulta usando a API do Log Analytics.
nome O nome da dimensão.
nome O nome da tabela nos resultados da pesquisa.
nome O nome da coluna.
Operador O operador definido na regra de alerta.
ID do recurso O ID do recurso afetado pelo alerta.
Contagem de Resultados O número de registros retornados pela consulta. Para regras de medição métrica, o número ou registros que correspondem à combinação de dimensões específica.
linhas As linhas na tabela.
Duração do Intervalo de Pesquisa Mínima O número total de minutos no intervalo de pesquisa.
HoraDeFimDoIntervaloDePesquisaUTC A hora de término da janela de avaliação na qual o alerta foi disparado em UTC.
IntervaloDePesquisaEmMin O número total de minutos no intervalo de pesquisa.
HoraDeInícioDoIntervaloDePesquisaUtc A hora de início da janela de avaliação durante a qual o alerta foi disparado em UTC.
SearchQuery A consulta definida na regra de alerta.
Resultados da Pesquisa Os resultados completos da pesquisa.
tabela A tabela de resultados nos resultados da pesquisa.
tabelas As tabelas de resposta preliminares incluídas na consulta.
Limite O limite definido na regra de alerta.
tipo O tipo da coluna.
valor O valor da dimensão.

Exemplo de alerta de pesquisa de log quando o monitoringService é Log Analytics

{
  "alertContext": {
    "SearchQuery": "Perf | where ObjectName == \"Processor\" and CounterName == \"% Processor Time\" | summarize AggregatedValue = avg(CounterValue) by bin(TimeGenerated, 5m), Computer",
    "SearchIntervalStartTimeUtc": "3/22/2019 1:36:31 PM",
    "SearchIntervalEndtimeUtc": "3/22/2019 1:51:31 PM",
    "ResultCount": 2,
    "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&timespan=2020-05-07T18%3a11%3a51.0000000Z%2f2020-05-07T18%3a16%3a51.0000000Z",
    "LinkToFilteredSearchResultsAPI": "https://api.loganalytics.io/v1/workspaces/workspaceID/query?query=Heartbeat&timespan=2020-05-07T18%3a11%3a51.0000000Z%2f2020-05-07T18%3a16%3a51.0000000Z",
    "SeverityDescription": "Warning",
    "WorkspaceId": "12345a-1234b-123c-123d-12345678e",
    "SearchIntervalDurationMin": "15",
    "AffectedConfigurationItems": [
      "INC-Gen2Alert"
    ],
    "SearchIntervalInMinutes": "15",
    "Threshold": 10000,
    "Operator": "Less Than",
    "Dimensions": [
      {
        "name": "Computer",
        "value": "INC-Gen2Alert"
      }
    ],
    "SearchResults": {
      "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"
            ]
          ]
        }
      ],
      "dataSources": [
        {
          "resourceId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourcegroups/test/providers/microsoft.operationalinsights/workspaces/test",
          "tables": [
            "Heartbeat"
          ]
        }
      ]
    },
    "IncludedSearchResults": "True",
    "AlertType": "Metric measurement"
  }
}

Exemplo de alerta de pesquisa de log quando o serviço de monitorização é o Application Insights

{
  "alertContext": {
    "SearchQuery": "requests | where resultCode == \"500\" | summarize AggregatedValue = Count by bin(Timestamp, 5m), IP",
    "SearchIntervalStartTimeUtc": "3/22/2019 1:36:33 PM",
    "SearchIntervalEndtimeUtc": "3/22/2019 1:51:33 PM",
    "ResultCount": 2,
    "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",
    "SearchIntervalDurationMin": "15",
    "SearchIntervalInMinutes": "15",
    "Threshold": 10000.0,
    "Operator": "Less Than",
    "ApplicationId": "00001111-aaaa-2222-bbbb-3333cccc4444",
    "Dimensions": [
      {
        "name": "IP",
        "value": "1.1.1.1"
      }
    ],
    "SearchResults": {
      "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"
            ]
          ]
        }
      ],
      "dataSources": [
        {
          "resourceId": "/subscriptions/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/resourcegroups/test/providers/microsoft.operationalinsights/workspaces/test",
          "tables": [
            "Heartbeat"
          ]
        }
      ]
    },
    "IncludedSearchResults": "True",
    "AlertType": "Metric measurement"
  }
}

Exemplo de alerta de pesquisa de log quando monitoringService = Alertas de log V2

Nota

As regras de alerta de pesquisa de log da API versão 2020-05-01 usam esse tipo de carga, que suporta apenas o esquema comum. Os resultados da pesquisa não são incorporados na carga útil dos alertas de pesquisa de log quando se usa esta versão. Use dimensões para fornecer contexto aos alertas disparados. Você também pode usar LinkToFilteredSearchResultsAPI ou LinkToSearchResultsAPI para acessar os resultados da consulta com a API Log Analytics. Se você precisar incorporar os resultados, use um aplicativo lógico com os links fornecidos para gerar uma carga personalizada.

{
  "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": "Computer",
              "value": "TestComputer"
            }
          ],
          "metricValue": 0.0,
          "failingPeriods": {
            "numberOfEvaluationPeriods": 1,
            "minFailingPeriodsToAlert": 1
          },
          "linkToSearchResultsUI": "https://portal.azure.com#@12345a-1234b-123c-123d-12345678e/blade/Microsoft_Azure_Monitoring_Logs/LogsBlade/source/Alerts.EmailLinks/scope/%7B%22resources%22%3A%5B%7B%22resourceId%22%3A%22%2Fsubscriptions%212345a-1234b-123c-123d-12345678e%2FresourceGroups%2FContoso%2Fproviders%2FMicrosoft.Compute%2FvirtualMachines%2FContoso%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#@12345a-1234b-123c-123d-12345678e/blade/Microsoft_Azure_Monitoring_Logs/LogsBlade/source/Alerts.EmailLinks/scope/%7B%22resources%22%3A%5B%7B%22resourceId%22%3A%22%2Fsubscriptions%212345a-1234b-123c-123d-12345678e%2FresourceGroups%2FContoso%2Fproviders%2FMicrosoft.Compute%2FvirtualMachines%2FContoso%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/Contoso/providers/Microsoft.Compute/virtualMachines/Contoso/query?query=Heartbeat%7C%20where%20TimeGenerated%20between%28datetime%282020-07-09T13%3A44%3A34.0000000%29..datetime%282020-07-09T13%3A54%3A34.0000000%29%29&timespan=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/Contoso/providers/Microsoft.Compute/virtualMachines/Contoso/query?query=Heartbeat%7C%20where%20TimeGenerated%20between%28datetime%282020-07-09T13%3A44%3A34.0000000%29..datetime%282020-07-09T13%3A54%3A34.0000000%29%29&timespan=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 pesquisa de registo de exemplo quando o Serviço de Monitorização = Alerta de Registo Simples

{
  "alertContext": {
    "properties": {},
    "conditionType": "LogQueryCriteria",
    "condition": {
      "windowSize": null,
      "allOf": [
        {
          "searchQuery": "exceptions | where timestamp > ago(5m) | project timestamp, operation_Name, problemId, type, outerMessage",
          "metricMeasureColumn": null,
          "targetResourceTypes": null,
          "operator": null,
          "threshold": null,
          "timeAggregation": null,
          "dimensions": null,
          "metricValue": 1.0,
          "failingPeriods": null,
          "linkToSearchResultsUI": "https://portal.azure.com/AnalyticsBlade/subscriptions/12345a-1234b-123c-123d-12345678e/?query=exceptions+%7C+where+timestamp+%3E+ago%285m%29+%7C+project+timestamp%2C+operation_Name%2C+problemId%2C+type%2C+outerMessage",
          "linkToFilteredSearchResultsUI": "https://portal.azure.com/AnalyticsBlade/subscriptions/12345a-1234b-123c-123d-12345678e/?query=exceptions+%7C+where+timestamp+%3E+ago%285m%29+%7C+project+timestamp%2C+operation_Name%2C+problemId%2C+type%2C+outerMessage",
          "linkToSearchResultsAPI": "https://api.applicationinsights.io/v1/apps/0MyAppId0/query?query=exceptions%20%7C%20where%20timestamp%20%3E%20ago%285m%29%20%7C%20project%20timestamp%2C%20operation_Name%2C%20problemId%2C%20type%2C%20outerMessage",
          "linkToFilteredSearchResultsAPI": "https://api.applicationinsights.io/v1/apps/0MyAppId0/query?query=exceptions%20%7C%20where%20timestamp%20%3E%20ago%285m%29%20%7C%20project%20timestamp%2C%20operation_Name%2C%20problemId%2C%20type%2C%20outerMessage",
          "event": [
            [
              {
                "name": "timestamp",
                "value": "2020-07-09T13:54:34Z"
              },
              {
                "name": "operation_Name",
                "value": "GET /api/orders"
              },
              {
                "name": "problemId",
                "value": "System.NullReferenceException at OrdersController.GetOrder"
              },
              {
                "name": "type",
                "value": "System.NullReferenceException"
              },
              {
                "name": "outerMessage",
                "value": "Object reference not set to an instance of an object."
              }
            ]
          ]
        }
      ],
      "windowStartTime": null,
      "windowEndTime": null
    }
  }
}

Campos de contexto de alerta para alertas de registo de atividades

Consulte Esquema de eventos do log de atividades do Azure para obter informações detalhadas sobre os campos nos alertas do log de atividades.

Exemplo de alerta do registo de atividades quando monitoringService = Registo de Atividades - Administrativo

{
  "alertContext": {
      "authorization": {
        "action": "Microsoft.Compute/virtualMachines/restart/action",
        "scope": "/subscriptions/<subscription ID>/resourceGroups/PipeLineAlertRG/providers/Microsoft.Compute/virtualMachines/WCUS-R2-ActLog"
      },
      "channels": "Operation",
      "claims": "{\"aud\":\"https://management.core.windows.net/\",\"iss\":\"https://sts.windows.net/12345a-1234b-123c-123d-12345678e/\",\"iat\":\"1553260826\",\"nbf\":\"1553260826\",\"exp\":\"1553264726\",\"aio\":\"42JgYNjdt+rr+3j/dx68v018XhuFAwA=\",\"appid\":\"11112222-bbbb-3333-cccc-4444dddd5555\",\"appidacr\":\"2\",\"http://schemas.microsoft.com/identity/claims/identityprovider\":\"https://sts.windows.net/12345a-1234b-123c-123d-12345678e/\",\"http://schemas.microsoft.com/identity/claims/objectidentifier\":\"22223333-cccc-4444-dddd-5555eeee6666\",\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier\":\"22223333-cccc-4444-dddd-5555eeee6666\",\"http://schemas.microsoft.com/identity/claims/tenantid\":\"12345a-1234b-123c-123d-12345678e\",\"uti\":\"v5wYC9t9ekuA2rkZSVZbAA\",\"ver\":\"1.0\"}",
      "caller": "22223333-cccc-4444-dddd-5555eeee6666",
      "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
      "eventSource": "Administrative",
      "eventTimestamp": "2019-03-22T13:56:31.2917159+00:00",
      "eventDataId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
      "level": "Informational",
      "operationName": "Microsoft.Compute/virtualMachines/restart/action",
      "operationId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
      "status": "Succeeded",
      "subStatus": "",
      "submissionTimestamp": "2019-03-22T13:56:54.067593+00:00"
    }
}

Exemplo de alerta de registro de atividades quando monitoringService = Activity Log - Policy

{
  "alertContext": {
    "authorization": {
      "action": "Microsoft.Resources/checkPolicyCompliance/read",
      "scope": "/subscriptions/<GUID>"
    },
    "channels": "Operation",
    "claims": "{\"aud\":\"https://management.azure.com/\",\"iss\":\"https://sts.windows.net/<GUID>/\",\"iat\":\"1566711059\",\"nbf\":\"1566711059\",\"exp\":\"1566740159\",\"aio\":\"42FgYOhynHNw0scy3T/bL71+xLyqEwA=\",\"appid\":\"<GUID>\",\"appidacr\":\"2\",\"http://schemas.microsoft.com/identity/claims/identityprovider\":\"https://sts.windows.net/<GUID>/\",\"http://schemas.microsoft.com/identity/claims/objectidentifier\":\"<GUID>\",\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier\":\"<GUID>\",\"http://schemas.microsoft.com/identity/claims/tenantid\":\"<GUID>\",\"uti\":\"Miy1GzoAG0Scu_l3m1aIAA\",\"ver\":\"1.0\"}",
    "caller": "<GUID>",
    "correlationId": "<GUID>",
    "eventSource": "Policy",
    "eventTimestamp": "2019-08-25T11:11:34.2269098+00:00",
    "eventDataId": "<GUID>",
    "level": "Warning",
    "operationName": "Microsoft.Authorization/policies/audit/action",
    "operationId": "<GUID>",
    "properties": {
      "isComplianceCheck": "True",
      "resourceLocation": "eastus2",
      "ancestors": "<GUID>",
      "policies": "[{\"policyDefinitionId\":\"/providers/Microsoft.Authorization/policyDefinitions/<GUID>/\",\"policySetDefinitionId\":\"/providers/Microsoft.Authorization/policySetDefinitions/<GUID>/\",\"policyDefinitionReferenceId\":\"vulnerabilityAssessmentMonitoring\",\"policySetDefinitionName\":\"<GUID>\",\"policyDefinitionName\":\"<GUID>\",\"policyDefinitionEffect\":\"AuditIfNotExists\",\"policyAssignmentId\":\"/subscriptions/<GUID>/providers/Microsoft.Authorization/policyAssignments/SecurityCenterBuiltIn/\",\"policyAssignmentName\":\"SecurityCenterBuiltIn\",\"policyAssignmentScope\":\"/subscriptions/<GUID>\",\"policyAssignmentSku\":{\"name\":\"A1\",\"tier\":\"Standard\"},\"policyAssignmentParameters\":{}}]"
    },
    "status": "Succeeded",
    "subStatus": "",
    "submissionTimestamp": "2019-08-25T11:12:46.1557298+00:00"
  }
}

Exemplo de alerta de registro de atividades quando o monitoringService = Activity Log - Autoscale

{
  "alertContext": {
    "channels": "Admin, Operation",
    "claims": "{\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/spn\":\"Microsoft.Insights/autoscaleSettings\"}",
    "caller": "Microsoft.Insights/autoscaleSettings",
    "correlationId": "<GUID>",
    "eventSource": "Autoscale",
    "eventTimestamp": "2019-08-21T16:17:47.1551167+00:00",
    "eventDataId": "<GUID>",
    "level": "Informational",
    "operationName": "Microsoft.Insights/AutoscaleSettings/Scaleup/Action",
    "operationId": "<GUID>",
    "properties": {
      "description": "The autoscale engine attempting to scale resource '/subscriptions/d<GUID>/resourceGroups/testRG/providers/Microsoft.Compute/virtualMachineScaleSets/testVMSS' from 9 instances count to 10 instances count.",
      "resourceName": "/subscriptions/<GUID>/resourceGroups/voiceassistancedemo/providers/Microsoft.Compute/virtualMachineScaleSets/alexademo",
      "oldInstancesCount": "9",
      "newInstancesCount": "10",
      "activeAutoscaleProfile": "{\r\n  \"Name\": \"Auto created scale condition\",\r\n  \"Capacity\": {\r\n    \"Minimum\": \"1\",\r\n    \"Maximum\": \"10\",\r\n    \"Default\": \"1\"\r\n  },\r\n  \"Rules\": [\r\n    {\r\n      \"MetricTrigger\": {\r\n        \"Name\": \"Percentage CPU\",\r\n        \"Namespace\": \"microsoft.compute/virtualmachinescalesets\",\r\n        \"Resource\": \"/subscriptions/<GUID>/resourceGroups/testRG/providers/Microsoft.Compute/virtualMachineScaleSets/testVMSS\",\r\n        \"ResourceLocation\": \"eastus\",\r\n        \"TimeGrain\": \"PT1M\",\r\n        \"Statistic\": \"Average\",\r\n        \"TimeWindow\": \"PT5M\",\r\n        \"TimeAggregation\": \"Average\",\r\n        \"Operator\": \"GreaterThan\",\r\n        \"Threshold\": 0.0,\r\n        \"Source\": \"/subscriptions/<GUID>/resourceGroups/testRG/providers/Microsoft.Compute/virtualMachineScaleSets/testVMSS\",\r\n        \"MetricType\": \"MDM\",\r\n        \"Dimensions\": [],\r\n        \"DividePerInstance\": false\r\n      },\r\n      \"ScaleAction\": {\r\n        \"Direction\": \"Increase\",\r\n        \"Type\": \"ChangeCount\",\r\n        \"Value\": \"1\",\r\n        \"Cooldown\": \"PT1M\"\r\n      }\r\n    }\r\n  ]\r\n}",
      "lastScaleActionTime": "Wed, 21 Aug 2019 16:17:47 GMT"
    },
    "status": "Succeeded",
    "submissionTimestamp": "2019-08-21T16:17:47.2410185+00:00"
  }
}

Exemplo de alerta de registo de atividade quando o serviço de monitorização = Registo de Atividade - Segurança

{
  "alertContext": {
    "channels": "Operation",
    "correlationId": "<GUID>",
    "eventSource": "Security",
    "eventTimestamp": "2019-08-26T08:34:14+00:00",
    "eventDataId": "<GUID>",
    "level": "Informational",
    "operationName": "Microsoft.Security/locations/alerts/activate/action",
    "operationId": "<GUID>",
    "properties": {
      "threatStatus": "Quarantined",
      "category": "Virus",
      "threatID": "2147519003",
      "filePath": "C:\\AlertGeneration\\test.eicar",
      "protectionType": "Windows Defender",
      "actionTaken": "Blocked",
      "resourceType": "Virtual Machine",
      "severity": "Low",
      "compromisedEntity": "testVM",
      "remediationSteps": "[\"No user action is necessary\"]",
      "attackedResourceType": "Virtual Machine"
    },
    "status": "Active",
    "submissionTimestamp": "2019-08-26T09:28:58.3019107+00:00"
  }
}

Exemplo de alerta de registo de atividades quando monitoringService = ServiceHealth

{
  "alertContext": {
    "authorization": null,
    "channels": 1,
    "claims": null,
    "caller": null,
    "correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee",
    "eventSource": "ServiceHealth",
    "eventTimestamp": "2019-06-24T11:31:19.0312699+00:00",
    "httpRequest": null,
    "eventDataId": "<GUID>",
    "level": "Informational",
    "operationName": "Microsoft.ServiceHealth/maintenance/action",
    "operationId": "<GUID>",
    "properties": {
      "title": "Azure Synapse Analytics Scheduled Maintenance Pending",
      "service": "Azure Synapse Analytics",
      "region": "East US",
      "communication": "<MESSAGE>",
      "incidentType": "Maintenance",
      "trackingId": "<GUID>",
      "impactStartTime": "2019-06-26T04:00:00Z",
      "impactMitigationTime": "2019-06-26T12:00:00Z",
      "impactedServices": "[{\"ImpactedRegions\":[{\"RegionName\":\"East US\"}],\"ServiceName\":\"Azure Synapse Analytics\"}]",
      "impactedServicesTableRows": "<tr>\r\n<td align='center' style='padding: 5px 10px; border-right:1px solid black; border-bottom:1px solid black'>Azure Synapse Analytics</td>\r\n<td align='center' style='padding: 5px 10px; border-bottom:1px solid black'>East US<br></td>\r\n</tr>\r\n",
      "defaultLanguageTitle": "Azure Synapse Analytics Scheduled Maintenance Pending",
      "defaultLanguageContent": "<MESSAGE>",
      "stage": "Planned",
      "communicationId": "<GUID>",
      "maintenanceId": "<GUID>",
      "isHIR": "false",
      "version": "0.1.1"
    },
    "status": "Active",
    "subStatus": null,
    "submissionTimestamp": "2019-06-24T11:31:31.7147357+00:00",
    "ResourceType": null
  }
}

Exemplo de alerta de registo de atividade quando o monitoringService = ResourceHealth

{
  "alertContext": {
    "channels": "Admin, Operation",
    "correlationId": "<GUID>",
    "eventSource": "ResourceHealth",
    "eventTimestamp": "2019-06-24T15:42:54.074+00:00",
    "eventDataId": "<GUID>",
    "level": "Informational",
    "operationName": "Microsoft.Resourcehealth/healthevent/Activated/action",
    "operationId": "<GUID>",
    "properties": {
      "title": "This virtual machine is stopping and deallocating as requested by an authorized user or process",
      "details": null,
      "currentHealthStatus": "Unavailable",
      "previousHealthStatus": "Available",
      "type": "Downtime",
      "cause": "UserInitiated"
    },
    "status": "Active",
    "submissionTimestamp": "2019-06-24T15:45:20.4488186+00:00"
  }
}

Campos de contexto de alerta para alertas Prometheus

Consulte Serviço gerenciado do Azure Monitor para grupos de regras do Prometheus para obter informações detalhadas sobre os campos nos alertas do Prometheus.

Exemplo de alerta Prometheus

{
  "alertContext": {
    "interval": "PT1M",
    "expression": "sql_up > 0",
    "expressionValue": "0",
    "for": "PT2M",
    "labels": {
      "Environment": "Prod",
      "cluster": "myCluster1"
    },
    "annotations": {
      "summary": "alert on SQL availability"
    },
    "ruleGroup": "/subscriptions/<subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.AlertsManagement/prometheusRuleGroups/myRuleGroup"
  }
}

Campos de propriedades personalizadas

Se a regra de alerta que gerou o alerta contiver grupos de ações, as propriedades personalizadas poderão conter informações adicionais sobre o alerta. A seção de propriedades personalizadas contém objetos "chave: valor" que são adicionados às notificações do webhook.

Se as propriedades personalizadas não estiverem definidas na regra de alerta, o campo será nulo.

Habilitar o esquema de alerta comum

Use grupos de ações no portal do Azure ou use a API REST para habilitar o esquema de alerta comum. Os esquemas são definidos no nível da ação. Por exemplo, você deve habilitar separadamente o esquema para uma ação de email e uma ação de webhook.

Habilitar o esquema comum no portal do Azure

Captura de ecrã que mostra a opção de adesão ao esquema de alerta comum.

  1. Abra qualquer ação existente ou uma nova ação em um grupo de ações.
  2. Selecione Sim para ativar o esquema de alerta comum.

Habilite o esquema comum usando a API REST

Você também pode usar a API de Grupos de Ação para aceitar o esquema de alerta comum. Na chamada de criação ou atualização da API REST:

  • Para habilitar o esquema comum, defina o sinalizador "useCommonAlertSchema" para true
  • Defina o sinalizador "useCommonAlertSchema" para false para usar o esquema não comum para ações de email, webhook, Logic Apps, Funções do Azure ou Runbook de Automação.

Exemplo de chamada da API REST para usar o esquema comum

A seguinte solicitação de API REST de criação ou atualização :

  • Habilita o esquema de alerta comum para a ação de e-mail "Email de John Doe".
  • Desativa o esquema de alerta comum para a ação de email "Email de Jane Smith".
  • Habilita o esquema de alerta comum para a ação de webhook "Exemplo de webhook".
{
  "properties": {
    "groupShortName": "sample",
    "enabled": true,
    "emailReceivers": [
      {
        "name": "John Doe's email",
        "emailAddress": "johndoe@contoso.com",
        "useCommonAlertSchema": true
      },
      {
        "name": "Jane Smith's email",
        "emailAddress": "janesmith@contoso.com",
        "useCommonAlertSchema": false
      }
    ],
    "smsReceivers": [
      {
        "name": "John Doe's mobile",
        "countryCode": "1",
        "phoneNumber": "1234567890"
      },
      {
        "name": "Jane Smith's mobile",
        "countryCode": "1",
        "phoneNumber": "0987654321"
      }
    ],
    "webhookReceivers": [
      {
        "name": "Sample webhook",
        "serviceUri": "http://www.example.com/webhook",
        "useCommonAlertSchema": true
      }
    ]
  },
  "location": "Global",
  "tags": {}
}

Próximos passos