Azure Monitor 활동 로그

Azure Monitor 활동 로그는 구독 수준 이벤트에 대한 정보를 제공하는 Azure의 플랫폼 로그입니다. 활동 로그에는 리소스가 수정되거나 가상 머신이 시작될 때와 같은 정보가 포함됩니다. Azure Portal에서 활동 로그를 보거나 PowerShell 및 Azure CLI를 사용하여 항목을 검색할 수 있습니다. 이 문서에서는 활동 로그를 보고 다른 대상으로 보내는 방법에 대한 정보를 제공합니다.

더 많은 기능을 사용하려면 다음과 같은 이유로 활동 로그를 이러한 위치 중 하나 이상으로 보내는 진단 설정을 만듭니다.

  • 더 복잡한 쿼리 및 경고를 위해 Azure Monitor 로그로 전송하고 최대 2년 동안 더 오래 보관할 수 있습니다.
  • Azure 외부로 전달하기 위해 Azure Event Hubs로 보냅니다.
  • 더 저렴하고 장기적인 보관을 위해 Azure Storage로 보냅니다.

진단 설정을 만드는 방법에 대한 자세한 내용은 플랫폼 로그 및 메트릭을 다른 대상으로 전송하는 진단 설정 만들기를 참조하세요.

참고

활동 로그의 항목은 시스템에서 생성되며 변경하거나 삭제할 수 없습니다.

보존 기간

활동 로그 이벤트는 90일 동안 Azure에 보관된 후 삭제됩니다. 볼륨에 관계없이 이 시간 동안 항목에 대한 요금이 부과되지 않습니다. 더 긴 보존과 같은 더 많은 기능을 사용하려면 진단 설정을 만들고 필요에 따라 항목을 다른 위치로 라우팅합니다. 이전 섹션의 기준을 참조하세요.

활동 로그 보기

Azure Portal의 대부분의 메뉴에서 활동 로그에 액세스할 수 있습니다. 활동 로그를 여는 메뉴에서 해당 초기 필터가 결정됩니다. 모니터 메뉴에서 열면 구독에 대한 유일한 필터입니다. 리소스 메뉴에서 열면 필터가 해당 리소스로 설정됩니다. 언제든지 필터를 변경하여 다른 모든 항목을 볼 수 있습니다. 필터 추가를 선택하여 필터에 속성을 추가합니다.

작업 로그를 보여 주는 스크린샷.

활동 로그 범주에 대한 설명은 Azure 활동 로그 이벤트 스키마를 참조하세요.

활동 로그 다운로드

CSV로 다운로드를 선택하여 현재 보기에 이벤트를 다운로드합니다.

작업 로그 다운로드를 보여주는 스크린샷.

변경 기록 보기

일부 이벤트의 경우 해당 이벤트 시간에 발생한 변경 기록이 표시된 변경 기록을 볼 수 있습니다. 활동 로그에서 더 자세히 보려는 이벤트를 선택합니다. 변경 기록(미리 보기) 탭을 선택하여 해당 이벤트와 연관된 변경 사항을 봅니다.

이벤트에 대한 변경 기록 목록을 보여주는 스크린샷.

이벤트와 관련된 변경 내용이 있는 경우 선택할 수 있는 변경 내용 목록이 표시됩니다. 변경 내용을 선택하면 변경 내용(미리 보기) 페이지가 열립니다. 이 페이지는 리소스에 대한 변경 내용을 표시합니다. 다음 예에서는 VM의 크기가 변경된 것을 볼 수 있습니다. 페이지에는 변경 전과 변경 후의 VM 크기가 표시됩니다. 변경 기록에 대한 자세한 내용은 리소스 변경 가져오기를 참조하세요.

차이점을 표시하는 변경 기록 페이지를 보여주는 스크린샷.

활동 로그 이벤트를 검색하는 다른 방법

다음 방법을 사용하여 활동 로그 이벤트에 액세스할 수도 있습니다.

Log Analytics 작업 영역으로 보내기

활동 로그를 Log Analytics 작업 영역으로 보내 Azure Monitor 로그 기능을 사용하도록 설정하려면 다음을 수행합니다.

  • Azure Monitor에서 수집한 다른 모니터링 데이터와 활동 로그 데이터의 상관 관계를 지정합니다.
  • 여러 Azure 구독 및 테넌트의 로그 항목을 분석을 위해 한곳에 취합합니다.
  • 로그 쿼리를 사용하여 복잡한 분석을 수행하고 활동 로그 항목에 대한 심층적인 인사이트를 확보합니다.
  • 더 복잡한 경고 논리를 위해 작업 항목과 함께 로그 경고를 사용합니다.
  • 활동 로그 보존 기간보다 더 오래 활동 로그 항목을 저장합니다.
  • Log Analytics 작업 영역에 저장된 활동 로그 데이터에 대한 데이터 수집 또는 보존 요금이 부과되지 않습니다.
  • Log Analytics의 기본 보존 기간은 90일입니다.

활동 로그 내보내기를 선택하여 활동 로그를 Log Analytics 작업 영역으로 보냅니다.

활동 로그 내보내기를 보여 주는 스크린샷.

단일 구독에서 최대 5개의 작업 영역으로 활동 로그를 보낼 수 있습니다.

Log Analytics 작업 영역의 활동 로그 데이터는 Log Analytics에서 로그 쿼리를 사용하여 검색할 수 있는 AzureActivity라는 테이블에 저장됩니다. 이 테이블의 구조는 로그 항목의 범주에 따라 달라집니다. 테이블 속성에 대한 설명은 Azure Monitor 데이터 참조를 참조하세요.

예를 들어 각 범주에 대한 활동 로그 레코드 수를 보려면 다음 쿼리를 사용합니다.

AzureActivity
| summarize count() by CategoryValue

관리 범주에 있는 모든 레코드를 검색하려면 다음 쿼리를 사용합니다.

AzureActivity
| where CategoryValue == "Administrative"

Azure Event Hubs로 전송

타사 SIEM 또는 다른 로그 분석 솔루션과 같은 Azure 외부의 항목을 보내려면 활동 로그를 Azure Event Hubs로 보냅니다. 이벤트 허브의 활동 로그 이벤트는 각 페이로드의 레코드가 포함된 records 요소와 함께 JSON 형식으로 사용됩니다. 스키마는 범주에 따라 다르며 Azure 활동 로그 이벤트 스키마에 설명되어 있습니다.

다음 샘플 출력 데이터는 활동 로그에 대한 이벤트 허브에서 가져온 것입니다.

{
    "records": [
        {
            "time": "2019-01-21T22:14:26.9792776Z",
            "resourceId": "/subscriptions/s1/resourceGroups/MSSupportGroup/providers/microsoft.support/supporttickets/115012112305841",
            "operationName": "microsoft.support/supporttickets/write",
            "category": "Write",
            "resultType": "Success",
            "resultSignature": "Succeeded.Created",
            "durationMs": 2826,
            "callerIpAddress": "111.111.111.11",
            "correlationId": "c776f9f4-36e5-4e0e-809b-c9b3c3fb62a8",
            "identity": {
                "authorization": {
                    "scope": "/subscriptions/s1/resourceGroups/MSSupportGroup/providers/microsoft.support/supporttickets/115012112305841",
                    "action": "microsoft.support/supporttickets/write",
                    "evidence": {
                        "role": "Subscription Admin"
                    }
                },
                "claims": {
                    "aud": "https://management.core.windows.net/",
                    "iss": "https://sts.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47/",
                    "iat": "1421876371",
                    "nbf": "1421876371",
                    "exp": "1421880271",
                    "ver": "1.0",
                    "http://schemas.microsoft.com/identity/claims/tenantid": "00000000-0000-0000-0000-000000000000",
                    "http://schemas.microsoft.com/claims/authnmethodsreferences": "pwd",
                    "http://schemas.microsoft.com/identity/claims/objectidentifier": "2468adf0-8211-44e3-95xq-85137af64708",
                    "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn": "admin@contoso.com",
                    "puid": "20030000801A118C",
                    "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier": "9vckmEGF7zDKk1YzIY8k0t1_EAPaXoeHyPRn6f413zM",
                    "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname": "John",
                    "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname": "Smith",
                    "name": "John Smith",
                    "groups": "cacfe77c-e058-4712-83qw-f9b08849fd60,7f71d11d-4c41-4b23-99d2-d32ce7aa621c,31522864-0578-4ea0-9gdc-e66cc564d18c",
                    "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name": " admin@contoso.com",
                    "appid": "c44b4083-3bq0-49c1-b47d-974e53cbdf3c",
                    "appidacr": "2",
                    "http://schemas.microsoft.com/identity/claims/scope": "user_impersonation",
                    "http://schemas.microsoft.com/claims/authnclassreference": "1"
                }
            },
            "level": "Information",
            "location": "global",
            "properties": {
                "statusCode": "Created",
                "serviceRequestId": "50d5cddb-8ca0-47ad-9b80-6cde2207f97c"
            }
        }
    ]
}

Azure Storage에 보내기

감사, 정적 분석 또는 백업을 위해 90일을 초과하여 로그 데이터를 보존하려면 Azure Storage 계정으로 활동 로그를 보냅니다. 이벤트를 90일 이하로 보존해야 하는 경우 스토리지 계정에 대한 보존을 설정할 필요가 없습니다. 활동 로그 이벤트는 90일 동안 Azure 플랫폼에 보존됩니다.

활동 로그를 Azure로 보내면 이벤트가 발생하는 즉시 스토리지 계정에 스토리지 컨테이너가 만들어집니다. 컨테이너의 Blob은 다음과 같은 명명 규칙을 사용합니다.

insights-activity-logs/resourceId=/SUBSCRIPTIONS/{subscription ID}/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/00000000-0000-0000-0000-000000000000/y=2020/m=06/d=08/h=18/m=00/PT1H.json

각 PT1H.json Blob은 Blob URL에 지정된 시간 내에서 발생한 이벤트의 JSON Blob을 포함합니다(예: h=12). 현재 시간 동안 이벤트는 발생하는 순서대로 PT1H.json 파일에 추가됩니다. 리소스 로그 이벤트가 시간당 개별 Blob으로 분할되기 때문에 분 값(m=00)은 항상 00입니다.

각 이벤트는 다음 형식으로 PT1H.json 파일에 저장됩니다. 이 형식은 공통 최상위 스키마를 사용하지만 활동 로그 스키마에 설명된 대로 범주별로 고유합니다.

{ "time": "2020-06-12T13:07:46.766Z", "resourceId": "/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/MY-RESOURCE-GROUP/PROVIDERS/MICROSOFT.COMPUTE/VIRTUALMACHINES/MV-VM-01", "correlationId": "0f0cb6b4-804b-4129-b893-70aeeb63997e", "operationName": "Microsoft.Resourcehealth/healthevent/Updated/action", "level": "Information", "resultType": "Updated", "category": "ResourceHealth", "properties": {"eventCategory":"ResourceHealth","eventProperties":{"title":"This virtual machine is starting as requested by an authorized user or process. It will be online shortly.","details":"VirtualMachineStartInitiatedByControlPlane","currentHealthStatus":"Unknown","previousHealthStatus":"Unknown","type":"Downtime","cause":"UserInitiated"}}}

레거시 수집 방법

레거시 수집 방법을 사용하여 활동 로그를 수집하는 경우 다음과 같이 활동 로그를 Log Analytics 작업 영역으로 내보내고데이터 원본 - 삭제 API를 사용하여 레거시 수집을 사용하지 않도록 설정하는 것이 좋습니다.

  1. 데이터 원본 - 작업 영역별 나열 API를 사용하여 작업 영역에 연결된 모든 데이터 원본을 나열하고, filter=kind='AzureActivityLog'를 설정하여 활동 로그를 필터링합니다.

    데이터 원본 - 작업 영역별 나열 API의 구성을 보여 주는 스크린샷

  2. API 응답에서 사용하지 않도록 설정하려는 연결의 이름을 복사합니다.

    데이터 원본 - 작업 영역별 나열 API의 출력에서 ​​복사해야 하는 연결 정보를 보여 주는 스크린샷

  3. 데이터 원본 - 삭제 API를 사용하여 특정 리소스에 대한 활동 로그 수집을 중지합니다.

    데이터 원본 - 삭제 API 구성의 스크린샷

레거시 로그 프로필 관리

로그 프로필은 활동 로그를 스토리지 또는 이벤트 허브로 보내는 레거시 방법입니다. 이 방법을 사용하는 경우 리소스 로그에 더 나은 기능 및 일관성을 제공하는 진단 설정으로 전환하는 것이 좋습니다.

로그 프로필이 이미 있는 경우 먼저 기존 로그 프로필을 제거한 다음 새 로그 프로필을 만들어야 합니다.

  1. Get-AzLogProfile를 사용하여 로그 프로필이 있는지 확인합니다. 로그 프로필이 있으면 Name 속성을 기록해 두세요.

  2. Remove-AzLogProfile을 사용하여 Name 속성의 값을 사용하여 로그 프로필을 제거합니다.

    # For example, if the log profile name is 'default'
    Remove-AzLogProfile -Name "default"
    
  3. Add-AzLogProfile를 사용하여 새 로그 프로필을 만듭니다.

    Add-AzLogProfile -Name my_log_profile -StorageAccountId /subscriptions/s1/resourceGroups/myrg1/providers/Microsoft.Storage/storageAccounts/my_storage -serviceBusRuleId /subscriptions/s1/resourceGroups/Default-ServiceBus-EastUS/providers/Microsoft.ServiceBus/namespaces/mytestSB/authorizationrules/RootManageSharedAccessKey -Location global,westus,eastus -RetentionInDays 90 -Category Write,Delete,Action
    
    속성 필수 설명
    이름 로그 프로필의 이름입니다.
    StorageAccountId 활동 로그를 저장할 스토리지 계정의 리소스 ID입니다.
    serviceBusRuleId 이벤트 허브를 만들 Service Bus 네임스페이스의 Service Bus 규칙 ID입니다. 이 문자열의 형식은 {service bus resource ID}/authorizationrules/{key name}입니다.
    위치 활동 로그 이벤트를 수집하려는 지역의 쉼표로 구분된 목록입니다.
    RetentionInDays 이벤트를 스토리지 계정에 보관해야 하는 일 수(1~365)입니다. 0 값은 로그를 무기한 저장합니다.
    범주 수집할 이벤트 범주의 쉼표로 구분된 목록입니다. 가능한 값은 쓰기, 삭제 및 작업입니다.

예제 스크립트

이 샘플 PowerShell 스크립트는 스토리지 계정과 이벤트 허브 모두에 활동 로그를 기록하는 로그 프로필을 만듭니다.

# Settings needed for the new log profile
$logProfileName = "default"
$locations = (Get-AzLocation).Location
$locations += "global"
$subscriptionId = "<your Azure subscription Id>"
$resourceGroupName = "<resource group name your Event Hub belongs to>"
$eventHubNamespace = "<Event Hub namespace>"

# Build the service bus rule Id from the settings above
$serviceBusRuleId = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.EventHub/namespaces/$eventHubNamespace/authorizationrules/RootManageSharedAccessKey"

# Build the Storage Account Id from the settings above
$storageAccountId = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Storage/storageAccounts/$storageAccountName"

Add-AzLogProfile -Name $logProfileName -Location $locations -StorageAccountId  $storageAccountId -ServiceBusRuleId $serviceBusRuleId

데이터 구조 변경

활동 로그 내보내기 환경은 AzureActivity 테이블의 구조를 일부 변경하여 활동 로그를 보내는 데 사용된 레거시 방법과 동일한 데이터를 보냅니다.

다음 표의 열은 업데이트된 스키마에서 더 이상 사용되지 않습니다. AzureActivity에 여전히 존재하지만 데이터가 없습니다. 이러한 열에 대한 대체는 새로운 것은 아니지만 사용되지 않는 열과 동일한 데이터를 포함합니다. 형식이 다르므로 이를 사용하는 로그 쿼리를 수정해야 할 수 있습니다.

활동 로그 JSON Log Analytics 열 이름
(이전 버전은 사용되지 않음)
새 Log Analytics 열 이름 참고
category 범주 CategoryValue
상태

값은 성공, 시작, 수락, 실패임
ActivityStatus

JSON과 동일한 값
ActivityStatusValue

값이 성공, 시작됨, 수락됨, 실패로 변경됨
유효한 값은 다음과 같이 변경됩니다.
subStatus ActivitySubstatus ActivitySubstatusValue
operationName OperationName OperationNameValue REST API는 작업 이름 값을 지역화합니다. Log Analytics UI는 항상 영어를 표시합니다.
resourceProviderName ResourceProvider ResourceProviderValue

중요

경우에 따라 이러한 열의 값이 모두 대문자일 수 있습니다. 이러한 열이 포함된 쿼리가 있는 경우 =~ 연산자를 사용하여 대/소문자를 구분하지 않고 비교합니다.

다음 열이 업데이트된 스키마의 AzureActivity에 추가되었습니다.

  • Authorization_d
  • Claims_d
  • Properties_d

활동 로그 인사이트

활동 로그 인사이트를 사용하면 구독의 리소스 및 리소스 그룹에 대한 변경 내용에 대한 정보를 볼 수 있습니다. 대시보드에는 구독에서 작업을 수행한 사용자 또는 서비스와 작업 상태에 대한 데이터도 표시됩니다. 이 문서에서는 Azure Portal에서 활동 로그 인사이트를 보는 방법을 설명합니다.

활동 로그 인사이트를 사용하기 전에 Log Analytics 작업 영역으로 로그 보내기를 사용하도록 설정해야 합니다.

활동 로그 인사이트는 어떻게 작동하나요?

Log Analytics 작업 영역으로 보내는 활동 로그는 AzureActivity라는 테이블에 저장됩니다.

활동 로그 인사이트는 AzureActivity 테이블의 데이터를 시각화하는 대시보드가 있는 선별된 Log Analytics 통합 문서입니다. 예를 들어 데이터에는 리소스를 삭제, 업데이트 또는 만든 관리자와 작업의 실패 또는 성공 여부가 포함될 수 있습니다.

활동 로그 인사이트 대시보드를 보여주는 스크린샷.

활동 로그 인사이트 보기: 리소스 그룹 또는 구독 수준

리소스 그룹 또는 구독 수준에 대한 활동 로그 인사이트를 보려면 다음을 수행합니다.

  1. Azure Portal에서 모니터>통합 문서를 선택합니다.

  2. 인사이트 섹션에서 활동 로그 인사이트를 선택합니다.

    규모 수준에서 Activity Logs Insights 통합 문서를 찾고 여는 방법을 보여주는 스크린샷.

  3. Activity Logs Insights 페이지 상단에서 다음을 선택합니다.

    1. 구독 드롭다운의 하나 이상의 구독
    2. CurrentResource 드롭다운의 리소스 및 리소스 그룹
    3. TimeRange 드롭다운에서 데이터를 볼 시간 범위입니다.

모든 Azure 리소스에 대한 활동 로그 인사이트 보기

참고

현재 이 통합 문서에는 Application Insights 리소스가 지원되지 않습니다.

리소스 수준에서 활동 로그 인사이트를 보려면:

  1. Azure Portal에서 리소스로 이동하여 통합 문서를 선택합니다.

  2. 활동 로그 인사이트 섹션에서 활동 로그 인사이트를 선택합니다.

    리소스 수준에서 Activity Logs Insights 통합 문서를 찾고 여는 방법을 보여주는 스크린샷.

  3. 활동 로그 인사이트 페이지 상단의 TimeRange 드롭다운에서 데이터를 볼 시간 범위를 선택합니다.

    • Azure 활동 로그 항목은 각 활동 로그 범주의 활동 로그 레코드 수를 보여 줍니다.

      범주 값별로 Azure 활동 로그를 보여 주는 스크린샷.

    • 상태별 활동 로그는 각 상태의 활동 로그 기록 수를 보여 줍니다.

      상태별 Azure 활동 로그를 보여 주는 스크린샷.

    • 구독 및 리소스 그룹 수준에서 리소스별 활동 로그리소스 공급자별 활동 로그는 각 리소스 및 리소스 공급자에 대한 활동 로그 레코드 수를 표시합니다.

      리소스별 Azure 활동 로그를 보여 주는 스크린샷.

다음 단계