Azure 리소스 로그는 Azure 리소스에서 수행되는 작업에 대한 인사이트를 제공합니다. 리소스 로그의 내용은 리소스 종류마다 다릅니다. 리소스에서 수행된 작업, 해당 작업의 상태 및 리소스의 상태 및 성능을 이해하는 데 도움이 되는 기타 세부 정보에 대한 정보를 포함할 수 있습니다.
진단 설정을 만들 때 다음 대상 중 하나 이상으로 리소스 로그를 보내도록 선택할 수 있습니다. 선택한 대상은 분석, 보존 및 다른 시스템과의 통합에 대한 요구 사항을 기반으로 합니다.
다음 섹션에서는 각 대상에 대한 리소스 로그의 세부 정보를 설명합니다.
다음 기능을 위해 리소스 로그를 Log Analytics 작업 영역 으로 보냅니다.
- 로그 쿼리를 사용하여 리소스 로그를 다른 로그 데이터와 상호 연결합니다.
- 리소스 로그 항목에서 로그 경고를 만듭니다.
- Power BI를 사용하여 리소스 로그 데이터에 액세스합니다.
컬렉션 모드
리소스 로그에서 사용하는 Log Analytics 작업 영역의 테이블은 리소스 종류 및 리소스가 사용하는 컬렉션 유형에 따라 달라집니다. 리소스 로그에는 두 가지 유형의 컬렉션 모드가 있습니다.
- Azure Diagnostics: 모든 데이터가 AzureDiagnostics 테이블에 기록됩니다.
- 리소스 관련: 데이터가 리소스의 각 범주에 대한 개별 테이블에 작성됩니다.
리소스 관련(Resource-Specific)
리소스별 모드를 사용하는 로그의 경우 선택한 작업 영역의 개별 테이블이 진단 설정에서 선택한 각 로그 범주에 대해 만들어집니다.
리소스별 로그는 Azure 진단 로그에 비해 다음과 같은 이점이 있습니다.
- 로그 쿼리의 데이터 작업을 더 쉽게 만듭니다.
- 스키마 및 해당 구조의 더 나은 검색 가능성을 제공합니다.
- 수집 대기 시간 및 쿼리 시간 전반에 걸쳐 성능을 개선합니다.
- 특정 테이블에 대한 Azure 역할 기반 액세스 제어 권한을 부여하는 기능을 제공합니다.
리소스별 로그 및 테이블에 대한 설명은 Azure Monitor에 대해 지원되는 리소스 로그 범주를 참조하세요.
Azure 진단 모드
Azure 진단 모드에서는 모든 진단 설정의 모든 데이터가 AzureDiagnostics 테이블에서 수집됩니다. 이 레거시 메서드는 현재 소수의 Azure 서비스에서 사용됩니다. 여러 리소스 종류가 동일한 테이블에 데이터를 전송하므로 해당 스키마는 수집되는 다른 모든 데이터 형식 스키마의 상위 세트입니다. 이 테이블의 구조와 잠재적으로 많은 수의 열에서 작동하는 원리에 대한 자세한 내용은 AzureDiagnostics 참조를 참조하세요.
AzureDiagnostics 테이블에는 로그를 생성한 리소스의 resourceId, 로그의 범주 및 로그가 생성된 시간 및 리소스별 속성이 포함됩니다.
컬렉션 모드 선택
대부분의 Azure 리소스는 사용자에게 선택권 없이 Azure Diagnostics 또는 리소스별 모드로 작업 영역에 데이터를 씁니다. 자세한 내용은 Azure 리소스 로그에 대한 공통 및 서비스별 스키마를 참조하세요.
모든 Azure 서비스는 결국 resource-specific 모드를 사용합니다. 이러한 전환의 일부로, 일부 리소스는 진단 설정에서 모드를 선택할 수 있습니다. 이 모드를 사용하면 데이터를 더 쉽게 관리할 수 있으므로 새 진단 설정에 대해 리소스별 모드를 지정합니다. 또한 나중에 복잡한 마이그레이션을 방지하는 데 도움이 될 수 있습니다.
기존 진단 설정을 리소스 관련 모드로 변경할 수 있습니다. 이 경우 이미 수집된 데이터는 작업 영역에 대한 보존 설정에 따라 제거될 때까지 AzureDiagnostics
테이블에 남아 있습니다. 새 데이터가 전용 테이블에 수집됩니다. 합집합 연산자를 사용하여 두 테이블에서 데이터를 쿼리합니다.
리소스별 모드를 지원하는 Azure 서비스에 대한 공지를 보려면 Azure 업데이트 블로그를 계속 시청하세요.
리소스 로그를 이벤트 허브로 보내 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로 보내 보존합니다. 진단 설정을 만든 후에는 사용 가능한 로그 범주 중 하나에서 이벤트가 발생하는 즉시 스토리지 계정에 스토리지 컨테이너가 만들어집니다.
비고
보관의 대안은 저비용 장기 보존을 통해 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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시간 동안의 데이터가 포함될 수 있습니다.
새 시간이 시작될 때 새 로그가 새 시간의 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": "{aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e}","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에 완전히 통합된 파트너 솔루션으로 보낼 수 있습니다. 이러한 솔루션 목록과 구성 방법에 대한 자세한 내용은 Azure Monitor 파트너 통합을 참조하세요.