Enviar dados do log de recursos do Azure

Os logs de recursos do Azure são logs de plataforma que fornecem informações sobre as operações que foram executadas em um recurso do Azure. O conteúdo de logs de recursos varia de acordo com o tipo de recurso e serviço do Azure. Os logs de recursos não são coletados por padrão. Este artigo descreve a configuração de diagnóstico necessária para que cada recurso do Azure envie seus logs de recursos para destinos diferentes.

Enviar para o workspace do Log Analytics

Envie logs de recursos para um workspace do Log Analytics, para habilitar os recursos de Logs do Azure Monitor, nos quais é possível:

  • Correlacionar dados do log de recursos com outros dados de monitoramento coletados pelo Azure Monitor.
  • Consolidar entradas de log de várias assinaturas e locatários de recursos do Azure em um único local para análise conjunta.
  • Use consultas de log para executar uma análise complexa e obter informações aprofundadas sobre dados de log.
  • Use alertas de pesquisa de log com lógica de alerta complexa.

Crie uma configuração de diagnóstico para enviar os logs de recursos para um workspace do Log Analytics. Esses dados são armazenados em tabelas, conforme descrito na Estrutura de Logs do Azure Monitor. As tabelas usadas pelos logs de recursos dependem do tipo de coleção que o recurso está usando:

  • Diagnóstico do Azure: todos os dados gravados estão na tabela AzureDiagnostics.
  • Específico do recurso: os dados são gravados em tabelas individuais para cada categoria do recurso.

Específico de recursos

Nesse modo, as tabelas individuais no workspace selecionado são criadas para cada categoria selecionada na configuração de diagnóstico. Recomendamos esse método porque:

  • Torna muito mais fácil trabalhar com os dados em consultas de log.
  • Fornece uma melhor detectabilidade de esquemas e a respectiva estrutura.
  • Melhora o desempenho entre a latência de ingestão e os tempos de consulta.
  • Fornece a capacidade de conceder os direitos de controle de acesso baseados em função do Azure em uma tabela específica.

Todos os serviços do Azure, eventualmente, migrarão o modo específico do recurso.

O exemplo abaixo cria três tabelas:

  • Tabela Service1AuditLogs

    Provedor de recursos Categoria Um B C
    Serviço 1 AuditLogs x1 y1 z1
    Serviço 1 AuditLogs x5 y5 z5
    ...
  • Tabela Service1ErrorLogs

    Provedor de recursos Categoria D E F
    Serviço 1 ErrorLogs q1 w1 e1
    Serviço 1 ErrorLogs q2 w2 e2
    ...
  • Tabela Service2AuditLogs

    Provedor de recursos Categoria G H I
    Serviço 2 AuditLogs j1 k1 l1
    Serviço 2 AuditLogs j3 k3 l3
    ...

Modo de diagnóstico do Azure

Nesse modo, todos os dados de qualquer configuração de diagnóstico são coletados na tabela AzureDiagnostics. Esse método herdado é usado atualmente pela maioria dos serviços do Azure. Como vários tipos de recursos enviam dados para a mesma tabela, o esquema dela é o superconjunto dos esquemas de todos os tipos de dados diferentes que estão sendo coletados. Para obter detalhes sobre a estrutura desta tabela e como ela funciona com esse número potencialmente grande de colunas, confira Referência de AzureDiagnostics.

Considere o exemplo em que as configurações de diagnóstico são coletadas no mesmo workspace para os seguintes tipos de dados:

  • Os logs de auditoria do serviço 1 têm um esquema que consiste nas colunas A, B e C
  • Os logs de erro do serviço 1 têm um esquema que consiste nas colunas D, E e F
  • Os logs de auditoria do serviço 2 têm um esquema que consiste nas colunas G, H e I

A tabela AzureDiagnostics é semelhante a este exemplo:

ResourceProvider Categoria Um B C D E F G H I
Microsoft.Service1 AuditLogs x1 y1 z1
Microsoft.Service1 ErrorLogs q1 w1 e1
Microsoft.Service2 AuditLogs j1 k1 l1
Microsoft.Service1 ErrorLogs q2 w2 e2
Microsoft.Service2 AuditLogs j3 k3 l3
Microsoft.Service1 AuditLogs x5 y5 z5
...

Selecione o modo de coleta

A maioria dos recursos do Azure grava dados no workspace no modo de diagnóstico do Azure ou específico do recurso, sem oferecer uma opção. Para obter mais informações, confira Esquemas comuns e específicos do serviço para os logs de recursos do Azure.

Todos os serviços do Azure eventualmente usarão o modo específico do recurso. Como parte dessa transição, alguns recursos permitem que você selecione um modo na configuração de diagnóstico. Especifique o modo específico do recurso para quaisquer novas configurações de diagnóstico porque esse modo facilita o gerenciamento dos dados. Ele também pode ajudar a evitar migrações complexas posteriormente.

Screenshot that shows the Diagnostics settings mode selector.

Observação

Para obter um exemplo que define o modo de coleta usando um modelo do ARM, confira Exemplos de modelo do ARM para configurações de diagnóstico no Azure Monitor.

Você pode modificar uma configuração de diagnóstico existente para o modo específico de recursos. Nesse caso, os dados que já foram coletados permanecem na tabela AzureDiagnostics até que sejam removidos de acordo com sua configuração de retenção para o workspace. Novos dados são coletados na tabela dedicada. Use o operador union para consultar dados em ambas as tabelas.

Continue a assistir ao blog de Atualizações do Azure para obter anúncios sobre os serviços do Azure que são compatíveis com o modo específico do recurso.

Hubs de Eventos do Azure

Envie os logs de recursos para um hub de eventos para enviá-los para fora do Azure. Por exemplo, os logs de recursos podem ser enviados para um SIEM de terceiros ou outras soluções de análise de log. Os logs de recursos de hubs de eventos são consumidos no formato JSON com um elemento records que contém os registros em cada payload. O esquema depende do tipo de recurso, conforme descrito em Esquema comum e específico de serviço para logs de recursos do Azure.

Os dados de saída de exemplo a seguir são dos Hubs de Eventos do Azure para um log de recursos:

{
    "records": [
        {
            "time": "2019-07-15T18:00:22.6235064Z",
            "workflowId": "/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA",
            "resourceId": "/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA/RUNS/08587330013509921957/ACTIONS/SEND_EMAIL",
            "category": "WorkflowRuntime",
            "level": "Error",
            "operationName": "Microsoft.Logic/workflows/workflowActionCompleted",
            "properties": {
                "$schema": "2016-04-01-preview",
                "startTime": "2016-07-15T17:58:55.048482Z",
                "endTime": "2016-07-15T18:00:22.4109204Z",
                "status": "Failed",
                "code": "BadGateway",
                "resource": {
                    "subscriptionId": "00000000-0000-0000-0000-000000000000",
                    "resourceGroupName": "JohnKemTest",
                    "workflowId": "243aac67fe904cf195d4a28297803785",
                    "workflowName": "JohnKemTestLA",
                    "runId": "08587330013509921957",
                    "location": "westus",
                    "actionName": "Send_email"
                },
                "correlation": {
                    "actionTrackingId": "29a9862f-969b-4c70-90c4-dfbdc814e413",
                    "clientTrackingId": "08587330013509921958"
                }
            }
        },
        {
            "time": "2019-07-15T18:01:15.7532989Z",
            "workflowId": "/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA",
            "resourceId": "/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA/RUNS/08587330012106702630/ACTIONS/SEND_EMAIL",
            "category": "WorkflowRuntime",
            "level": "Information",
            "operationName": "Microsoft.Logic/workflows/workflowActionStarted",
            "properties": {
                "$schema": "2016-04-01-preview",
                "startTime": "2016-07-15T18:01:15.5828115Z",
                "status": "Running",
                "resource": {
                    "subscriptionId": "00000000-0000-0000-0000-000000000000",
                    "resourceGroupName": "JohnKemTest",
                    "workflowId": "243aac67fe904cf195d4a28297803785",
                    "workflowName": "JohnKemTestLA",
                    "runId": "08587330012106702630",
                    "location": "westus",
                    "actionName": "Send_email"
                },
                "correlation": {
                    "actionTrackingId": "042fb72c-7bd4-439e-89eb-3cf4409d429e",
                    "clientTrackingId": "08587330012106702632"
                }
            }
        }
    ]
}

Enviar ao Armazenamento do Azure

Envie os logs de recursos para o Armazenamento do Azure para mantê-los para arquivamento. Depois que você criar a configuração de diagnóstico, um contêiner de armazenamento será criado na conta de armazenamento assim que ocorrer um evento em uma das categorias de log habilitadas.

Observação

Uma estratégia alternativa de arquivamento é enviar o log de recursos para um workspace do Log Analytics com uma política de arquivo.

Os blobs no contêiner usam esta convenção de nomenclatura:

insights-logs-{log category name}/resourceId=/SUBSCRIPTIONS/{subscription ID}/RESOURCEGROUPS/{resource group name}/PROVIDERS/{resource provider name}/{resource type}/{resource name}/y={four-digit numeric year}/m={two-digit numeric month}/d={two-digit numeric day}/h={two-digit 24-hour clock hour}/m=00/PT1H.json

O blob de um grupo de segurança de rede pode ter um nome semelhante a este exemplo:

insights-logs-networksecuritygrouprulecounter/resourceId=/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/TESTRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUP/TESTNSG/y=2016/m=08/d=22/h=18/m=00/PT1H.json

Cada blob PT1H.json contém um objeto JSON com eventos de arquivos de log recebidos durante a hora especificada na URL do blob. Durante a hora atual, os eventos são anexados ao arquivo PT1H.json conforme são recebidos, independentemente de quando foram gerados. O valor de minuto na URL, m=00, é sempre 00, pois os blobs são criados por hora.

No arquivo PT1H.json, cada evento é armazenado neste formato. Ele usa um esquema comum de nível superior, mas é exclusivo para cada serviço do Azure, conforme descrito em Esquema de logs de recursos.

Observação

Os logs são gravados em blobs com base na hora em que o log foi recebido, independentemente da hora em que ele foi gerado. Isso significa que um determinado blob pode conter dados de log que estão fora da hora especificada na URL do blob. Quando uma fonte de dados como o Application Insights dá suporte ao upload de telemetria obsoleta, um blob pode conter dados das 48 horas anteriores.
No início de uma nova hora, é possível que os logs existentes ainda estejam sendo gravados no blob da hora anterior enquanto novos logs são gravados no blob da nova hora.

{"time": "2016-07-01T00:00:37.2040000Z","systemId": "46cdbb41-cb9c-4f3d-a5b4-1d458d827ff1","category": "NetworkSecurityGroupRuleCounter","resourceId": "/SUBSCRIPTIONS/s1id1234-5679-0123-4567-890123456789/RESOURCEGROUPS/TESTRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/TESTNSG","operationName": "NetworkSecurityGroupCounters","properties": {"vnetResourceGuid": "{12345678-9012-3456-7890-123456789012}","subnetPrefix": "10.3.0.0/24","macAddress": "000123456789","ruleName": "/subscriptions/ s1id1234-5679-0123-4567-890123456789/resourceGroups/testresourcegroup/providers/Microsoft.Network/networkSecurityGroups/testnsg/securityRules/default-allow-rdp","direction": "In","type": "allow","matchedConnections": 1988}}

Integrações de parceiros do Azure Monitor

Os logs de recursos também podem ser enviados a soluções de parceiro totalmente integradas ao Azure. Para ver uma lista dessas soluções e os detalhes sobre como configurá-las, confira Integrações de parceiros do Azure Monitor.

Próximas etapas