Logs 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 que incluem:

  • 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 log com uma 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.
  • Os dados específicos do recurso são gravados em uma tabela individual 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. Esse método é recomendado porque ele facilita o trabalho com os dados nas consultas de logs, fornece melhor capacidade de descoberta de esquemas e da estrutura deles, melhora o desempenho de tempos de consulta e latência de ingestão e a capacidade de conceder direitos de Azure RBAC em uma tabela específica. Todos os serviços do Azure, eventualmente, migrarão o modo Específico de recursos.

O exemplo acima resultaria na criação de três tabelas:

  • Tabela Service1AuditLogs da seguinte maneira:

    Provedor de recursos Categoria Um B C
    Service1 AuditLogs x1 y1 z1
    Service1 AuditLogs x5 y5 z5
    ...
  • Tabela Service1ErrorLogs da seguinte maneira:

    Provedor de recursos Categoria D E F
    Service1 ErrorLogs q1 w1 e1
    Service1 ErrorLogs q2 w2 e2
    ...
  • Tabela Service2AuditLogs da seguinte maneira:

    Provedor de recursos Categoria G H I
    Service2 AuditLogs j1 k1 l1
    Service2 AuditLogs j3 k3 l3
    ...

Modo de diagnóstico do Azure

Nesse modo, todos os dados de qualquer configuração de diagnóstico serão coletados na tabela AzureDiagnostics. Esse é o método herdado usado hoje 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. Confira Referência de AzureDiagnostics para obter detalhes sobre a estrutura desta tabela e como ela funciona com esse número potencialmente grande de colunas.

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

  • Logs de auditoria do serviço 1 (tendo um esquema que consiste nas colunas A, B e C)
  • Logs de erros do serviço 1 (tendo um esquema que consiste nas colunas D, E e F)
  • Logs de auditoria do serviço 2 (tendo um esquema que consiste nas colunas G, H e I)

A tabela do AzureDiagnostics terá a seguinte aparência:

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 gravará dados no workspace no modo de Diagnóstico do Azure ou Específico do recurso sem dar uma opção. Confira a documentação de cada serviço para obter detalhes sobre qual modo ele usa. Todos os serviços do Azure usarão, eventualmente, o modo Específico de recursos. Como parte dessa transição, alguns recursos permitirão que você selecione um modo na configuração de diagnóstico. Especifique o modo específico do recurso para as novas configurações de diagnóstico, pois isso torna os dados mais fáceis de gerenciar e pode ajudar você a evitar migrações complexas em uma data posterior.

Diagnostic Settings mode selector

Observação

Para obter um exemplo de como definir o modo de coleta usando um modelo do gerenciador de recursos, confira Exemplos de modelo do Gerenciador de Recursos 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 permanecerão na tabela AzureDiagnostics até que sejam removidos de acordo com sua configuração de retenção para o workspace. Os novos dados serã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 dão suporte ao modo Específico de recursos.

Enviar Hubs de Eventos do Azure

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

Veja a seguir exemplos de dados de saída de Hubs de Eventos 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 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

Por exemplo, o blob de um grupo de segurança de rede pode ter um nome semelhante a este:

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 blob JSON de eventos que ocorreram dentro de uma hora especificada na URL do blob (por exemplo, h=12). Durante a hora presente, os eventos são acrescentados ao arquivo PT1H.json conforme eles ocorrem. O valor de minuto (m=00) é sempre 00, pois os eventos de log de recursos são divididos em blobs individuais por hora.

No arquivo PT1H.json, cada evento é armazenado com este formato: Isso usará um esquema comum de nível superior, mas será exclusivo para cada serviço do Azure, conforme descrito em Esquema de logs de recursos.

Observação

Os logs são gravados no blob relevante com relação à hora de geração do log, não à hora do recebimento dele. Isso significa que, na virada da hora, os blobs de hora anterior e de hora atual podem estar recebendo novas gravações.

{"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. Confira Integrações de parceiros do Azure Monitor para ver uma lista dessas soluções e detalhes sobre como configurá-las.

Próximas etapas