Log Analytics 작업 영역, Event Hubs 또는 Azure Storage에 Azure 리소스 로그 보내기

Azure 리소스 로그는 Azure 리소스에서 수행되는 작업에 대한 인사이트를 제공하는 플랫폼 로그 입니다. 리소스 로그의 내용은 리소스 종류마다 다릅니다. 리소스 로그는 기본적으로 수집되지 않습니다. 리소스 로그를 수집하려면 진단 설정을 사용하도록 설정하고 구성하거나 데이터 수집 규칙을 사용해야 합니다. 데이터 수집 규칙에 대한 자세한 내용은 Azure Monitor의 데이터 수집 규칙을 참조하세요. 이 문서에서는 각 Azure 리소스가 Log Analytics 작업 영역, Event Hubs 또는 Azure Storage에 리소스 로그를 보내는 데 필요한 진단 설정을 설명합니다.

Log Analytics 작업 영역으로 보내기

리소스 로그를 Log Analytics 작업 영역으로 보내 Azure Monitor 로그의 기능을 사용하도록 설정하면 다음을 수행할 수 있습니다.

  • Azure Monitor에서 수집한 다른 모니터링 데이터와 리소스 로그 데이터의 상관관계를 파악합니다.
  • 여러 Azure 리소스, 구독, 테넌트의 로그 항목을 분석을 위해 한곳에 취합합니다.
  • 로그 쿼리를 사용하여 복잡한 분석을 수행하고 로그 데이터에 대한 심층적인 인사이트를 확보합니다.
  • 복잡한 경고 논리가 포함된 로그 검색 경고를 사용합니다.

리소스 로그를 Log Analytics 작업 영역으로 전송하는 진단 설정을 만듭니다. 이 데이터는 Azure Monitor Logs의 구조에 설명된 대로 테이블에 저장됩니다. 리소스 로그에서 사용되는 테이블은 리소스 종류와 리소스가 사용하는 컬렉션 유형에 따라 달라집니다. 리소스 로그에는 두 가지 유형의 컬렉션 모드가 있습니다.

  • Azure Diagnostics: 모든 데이터가 AzureDiagnostics 테이블에 기록됩니다.
  • 리소스 관련: 데이터가 리소스의 각 범주에 대한 개별 테이블에 작성됩니다.

특정 리소스

리소스별 모드를 사용하는 로그의 경우 선택한 작업 영역의 개별 테이블이 진단 설정에서 선택한 각 로그 범주에 대해 만들어집니다. 리소스별 로그는 Azure 진단 로그에 비해 다음과 같은 이점이 있습니다.

  • 로그 쿼리의 데이터 작업을 더 쉽게 만듭니다.
  • 스키마 및 해당 구조의 더 나은 검색 가능성을 제공합니다.
  • 수집 대기 시간 및 쿼리 시간 전반에 걸쳐 성능을 개선합니다.
  • 특정 테이블에 대한 Azure 역할 기반 액세스 제어 권한을 부여하는 기능을 제공합니다.

리소스별 로그 및 테이블에 대한 설명은 Azure Monitor에 대해 지원되는 리소스 로그 범주를 참조 하세요.

Azure 진단 모드

Azure 진단 모드에서는 모든 진단 설정의 모든 데이터가 AzureDiagnostics 테이블에서 수집됩니다 . 이 레거시 메서드는 현재 소수의 Azure 서비스에서 사용됩니다. 여러 리소스 종류가 동일한 테이블에 데이터를 전송하므로 해당 스키마는 수집되는 다른 모든 데이터 형식 스키마의 상위 세트입니다. 이 테이블의 구조와 잠재적으로 많은 수의 열에서 작동하는 원리에 대한 자세한 내용은 AzureDiagnostics 참조를 참조하세요.

AzureDiagnostics 테이블에는 로그를 생성한 리소스의 resourceId, 로그의 범주 및 로그가 생성된 시간 및 리소스별 속성이 포함됩니다.

Log Analytics 작업 영역의 AzureDiagnostics 테이블을 보여 주는 스크린샷

컬렉션 모드 선택

대부분의 Azure 리소스는 사용자에게 선택권 없이 Azure Diagnostics 또는 리소스별 모드로 작업 영역에 데이터를 씁니다. 자세한 내용은 Azure 리소스 로그에 대한 공통 및 서비스별 스키마를 참조하세요.

모든 Azure 서비스는 결국 resource-specific 모드를 사용합니다. 이러한 전환의 일부로, 일부 리소스는 진단 설정에서 모드를 선택할 수 있습니다. 이 모드를 사용하면 데이터를 더 쉽게 관리할 수 있으므로 새 진단 설정에 대해 리소스별 모드를 지정합니다. 또한 나중에 복잡한 마이그레이션을 방지하는 데 도움이 될 수 있습니다.

진단 설정 모드 선택기를 보여 주는 스크린샷

참고 항목

Azure Resource Manager 템플릿을 사용하여 컬렉션 모드를 설정하는 예는 Azure Monitor의 진단 설정을 위한 Resource Manager 템플릿 샘플을 참조하세요.

기존 진단 설정을 리소스 관련 모드로 변경할 수 있습니다. 이 경우 이미 수집된 데이터는 작업 영역에 대한 보존 설정에 따라 제거될 때까지 AzureDiagnostics 테이블에 남아 있습니다. 새 데이터가 전용 테이블에 수집됩니다. 합집합 연산자를 사용하여 두 테이블에서 데이터를 쿼리합니다.

리소스별 모드를 지원하는 Azure 서비스에 대한 공지를 보려면 Azure 업데이트 블로그를 계속 시청하세요.

Azure Event Hubs로 전송

리소스 로그를 이벤트 허브로 보내 Azure 외부로 보냅니다. 예를 들어 리소스 로그는 타사 SIEM 또는 기타 로그 분석 솔루션으로 전송될 수 있습니다. 이벤트 허브의 리소스 로그는 각 페이로드의 레코드가 포함된 records 요소와 함께 JSON 형식으로 사용됩니다. 이 스키마는 Azure 리소스 로그에 대한 공통 및 서비스 관련 스키마에 설명된 대로 리소스 종류에 따라 달라집니다.

다음 샘플 출력 데이터는 리소스 로그에 대한 Azure Event Hubs에서 가져온 것입니다.

{
    "records": [
        {
            "time": "2019-07-15T18:00:22.6235064Z",
            "workflowId": "/SUBSCRIPTIONS/AAAA0A0A-BB1B-CC2C-DD3D-EEEEEE4E4E4E/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA",
            "resourceId": "/SUBSCRIPTIONS/AAAA0A0A-BB1B-CC2C-DD3D-EEEEEE4E4E4E/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": "AAAA0A0A-BB1B-CC2C-DD3D-EEEEEE4E4E4E",
                    "resourceGroupName": "JohnKemTest",
                    "workflowId": "2222cccc-33dd-eeee-ff44-aaaaaa555555",
                    "workflowName": "JohnKemTestLA",
                    "runId": "08587330013509921957",
                    "location": "westus",
                    "actionName": "Send_email"
                },
                "correlation": {
                    "actionTrackingId": "3333dddd-44ee-ffff-aa55-bbbbbbbb6666",
                    "clientTrackingId": "08587330013509921958"
                }
            }
        },
        {
            "time": "2019-07-15T18:01:15.7532989Z",
            "workflowId": "/SUBSCRIPTIONS/AAAA0A0A-BB1B-CC2C-DD3D-EEEEEE4E4E4E/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA",
            "resourceId": "/SUBSCRIPTIONS/AAAA0A0A-BB1B-CC2C-DD3D-EEEEEE4E4E4E/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": "AAAA0A0A-BB1B-CC2C-DD3D-EEEEEE4E4E4E",
                    "resourceGroupName": "JohnKemTest",
                    "workflowId": "dddd3333-ee44-5555-66ff-777777aaaaaa",
                    "workflowName": "JohnKemTestLA",
                    "runId": "08587330012106702630",
                    "location": "westus",
                    "actionName": "Send_email"
                },
                "correlation": {
                    "actionTrackingId": "ffff5555-aa66-7777-88bb-999999cccccc",
                    "clientTrackingId": "08587330012106702632"
                }
            }
        }
    ]
}

Azure Storage에 보내기

리소스 로그를 보관하기 위해 Azure Storage로 보내 보존합니다. 진단 설정을 만든 후에는 사용 가능한 로그 범주 중 하나에서 이벤트가 발생하는 즉시 스토리지 계정에 스토리지 컨테이너가 만들어집니다.

참고 항목

보관의 대안은 저비용 장기 보존을 통해 Log Analytics 작업 영역의 테이블에 리소스 로그를 보내는 것입니다.

컨테이너 내의 Blob은 다음과 같은 명명 규칙을 사용합니다.

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

네트워크 보안 그룹의 Blob은 다음 예와 유사한 이름을 가질 수 있습니다.

insights-logs-networksecuritygrouprulecounter/resourceId=/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/TESTRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUP/TESTNSG/y=2016/m=08/d=22/h=18/m=00/PT1H.json

각 PT1H.json Blob에는 Blob URL에 지정된 시간 동안 수신된 로그 파일의 이벤트와 함께 JSON 개체가 포함됩니다. 현재 시간 동안 이벤트는 생성된 시기에 관계없이 수신될 때 PT1H.json 파일에 추가됩니다. Blob이 시간당 기준으로 생성되므로 URL m=00의 분 값은 항상 00입니다.

PT1H.json 파일 내에서 각 이벤트는 다음 형식으로 저장됩니다. 일반적인 최상위 스키마를 사용하지만 리소스 로그 스키마에 설명된 대로 각 Azure 서비스에 대해 고유합니다.

참고 항목

로그는 생성된 시간에 관계없이 로그가 수신된 시간에 따라 Blob에 기록됩니다. 즉, 지정된 Blob은 Blob의 URL에 지정된 시간을 벗어나는 로그 데이터를 포함할 수 있습니다. 이 경우 Application Insights와 같은 데이터 원본이 Blob에서 이전 48시간 동안의 데이터를 포함할 수 있는 부실 원격 분석 업로드를 지원합니다.
새로운 1시간이 시작될 때 새 로그가 새 시간의 Blob에 기록되는 동안 기존 로그는 여전히 이전 시간의 Blob에 기록될 수 있습니다.

{"time": "2016-07-01T00:00:37.2040000Z","systemId": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1","category": "NetworkSecurityGroupRuleCounter","resourceId": "/SUBSCRIPTIONS/AAAA0A0A-BB1B-CC2C-DD3D-EEEEEE4E4E4E/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testresourcegroup/providers/Microsoft.Network/networkSecurityGroups/testnsg/securityRules/default-allow-rdp","direction": "In","type": "allow","matchedConnections": 1988}}

Azure Monitor 파트너 통합

리소스 로그를 Azure에 완전히 통합된 파트너 솔루션으로 보낼 수도 있습니다. 이러한 솔루션 목록과 구성 방법에 대한 자세한 내용은 Azure Monitor 파트너 통합을 참조하세요.

다음 단계