Azure Monitor 활동은 Azure 리소스에 대한 관리 작업을 기록합니다. 예를 들어 가상 머신 만들기, 키 자격 증명 모음 액세스 정책 변경 또는 Resource Manager 배포 오류와 같은 작업을 기록합니다. 이러한 관리 작업을 컨트롤 플레 인 작업이라고도 합니다. 활동 로그를 사용하여 이 정보를 검토하거나 감사하거나 이벤트가 발생할 때 사전에 알림을 받을 경고를 만듭니다.
팁 (조언)
배포 작업 오류가 이 문서로 안내하는 경우 일반적인 Azure 배포 오류 문제 해결을 참조하세요.
활동 로그 항목
Azure Monitor는 기본적으로 필수 구성 없이 활동 로그 항목을 수집합니다. 시스템에서 이러한 항목을 생성하며 변경하거나 삭제할 수 없습니다. 일반적으로 항목은 변경(만들기, 업데이트, 삭제 작업) 또는 시작 중인 작업으로 인해 발생합니다. 활동 로그는 일반적으로 읽기 작업을 캡처하지 않습니다. 활동 로그 항목은 일반적으로 이벤트가 발생한 후 3~20분 이내에 분석 및 경고에 사용할 수 있습니다. 활동 로그 범주에 대한 설명은 Azure 활동 로그 이벤트 스키마 참조하세요.
비고
Azure 리소스 로그는 리소스 내에서 수행되는 데이터 평면 작업을 캡처합니다. 예를 들어 이러한 작업에는 키 자격 증명 모음에서 비밀을 가져오거나 데이터베이스에 요청하는 작업이 포함됩니다. 리소스 로그는 기본적으로 수집되지 않으며 진단 설정이 필요합니다.
보존 기간
Azure는 90일 동안 활동 로그 이벤트를 보존한 다음 삭제합니다. 수량에 관계없이 이 시간 동안 항목에 대한 요금이 청구되지 않습니다. 더 긴 보존과 같은 더 많은 기능을 위해 진단 설정을 만들고 필요에 따라 항목을 다른 위치로 라우팅 합니다. 보존 기간을 연장하는 가장 일반적인 이유 중 하나는 활동 로그에서만 사용할 수 있는 리소스 작성자 정보를 보존하기 위한 것입니다.
활동 로그 보기 및 검색
Azure 포털의 대부분의 메뉴에서 활동 로그에 액세스할 수 있습니다. 이 메뉴를 여는 메뉴에 따라 초기 필터가 결정됩니다. 모니터 메뉴에서 열면 구독에 관한 필터만 있습니다. 리소스 메뉴에서 열면 필터가 해당 리소스로 설정됩니다. 언제든지 필터를 변경하여 다른 모든 항목을 볼 수 있습니다. 필터 추가를 선택하여 필터에 속성을 추가합니다.
다음 방법을 사용하여 활동 로그 이벤트에 액세스할 수도 있습니다.
- Get-AzLog cmdlet을 사용하여 PowerShell에서 활동 로그를 검색합니다. Azure Monitor PowerShell 샘플 참조하세요.
- az monitor activity-log를 사용하여 CLI에서 활동 로그를 검색합니다. Azure Monitor CLI 샘플 참조하세요.
- Azure Monitor REST API를 사용하여 REST 클라이언트에서 활동 로그를 검색합니다.
REST API를 사용하여 활동 로그 이벤트 검색
활동 로그 REST API를 사용하여 활동 로그 이벤트를 프로그래밍 방식으로 쿼리합니다. 매개변수 $filter을 포함해야 하며, 적어도 eventTimestamp 시작 값을 포함해야 합니다. 기본적으로 활동 로그는 90일 동안 이벤트를 유지합니다. 더 긴 보존 기간을 구성하지 않는 한 시간 범위의 시작과 끝이 모두 해당 90일 기간 내에 속하는지 확인합니다.
지원되는 $filter 패턴 |
세부 정보 |
|---|---|
| 시간 범위가 있는 기본 구독 | $filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' |
| 리소스 그룹 | $filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' and resourceGroupName eq '{resourceGroupName}' |
| 특정 리소스 | $filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' and resourceUri eq '{resourceURI}' |
| 리소스 공급자 | $filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' and resourceProvider eq '{resourceProviderName}' |
| 상관 관계 ID | $filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' and correlationId eq '{correlationID}' |
$filter 사용하여 리소스 그룹에 대한 활동 로그 이벤트 나열
resourceGroupName을(를) 필터에 추가하여 결과를 특정 리소스 그룹으로 제한합니다.
az rest --method get \
--uri "/subscriptions/{subscriptionId}/providers/Microsoft.Insights/eventtypes/management/values?api-version=2015-04-01&\$filter=eventTimestamp ge '2026-02-01T00:00:00Z' and eventTimestamp le '2026-02-28T23:59:59Z' and resourceGroupName eq '{resourceGroupName}'"
특정 활동 로그 속성 반환
매개 변수를 $select 사용하여 지정된 속성만 반환하여 응답 페이로드 크기를 줄입니다. 값은 속성 이름의 쉼표로 구분된 목록입니다. 자세한 내용은 활동 로그 스키마 속성 설명을 참조하세요.
Azure CLI는 시간 범위를 동적으로 계산할 수 있으므로 이 예제에서는 현재 날짜로부터 30일의 기간을 보여 줍니다.
startDate=$(date -u -d '30 days ago' '+%Y-%m-%dT00:00:00Z')
endDate=$(date -u '+%Y-%m-%dT23:59:59Z')
az rest --method get \
--uri "/subscriptions/{subscriptionId}/providers/Microsoft.Insights/eventtypes/management/values?api-version=2015-04-01&\$filter=eventTimestamp ge '$startDate' and eventTimestamp le '$endDate'&\$select=eventName,operationName,status,eventTimestamp,correlationId,submissionTimestamp,level"
구독에 대한 활동 로그 이벤트 나열
구독 수준 이벤트는 리소스 공급자가 직접 만든 이벤트를 캡처합니다. 테넌트 수준 및 관리 그룹 수준 이벤트는 해당 계층에서 Azure Resource Manager 이벤트만 캡처합니다.
다음 예제에서는 특정 시간 범위 동안 구독에 대한 활동 로그 이벤트를 검색합니다. Azure CLI는 시간 범위를 동적으로 계산할 수 있으므로 이 예제에서는 현재 날짜로부터 14일의 기간을 보여 줍니다.
활동 로그 이벤트를 나열하려면 az rest Azure CLI 명령을 사용하여 Azure Resource Manager REST API를 호출합니다.
startDate=$(date -u -d '14 days ago' '+%Y-%m-%dT00:00:00Z')
endDate=$(date -u '+%Y-%m-%dT23:59:59Z')
az rest --method get \
--uri "/subscriptions/{subscriptionId}/providers/Microsoft.Insights/eventtypes/management/values?api-version=2015-04-01&\$filter=eventTimestamp ge '$startDate' and eventTimestamp le '$endDate'"
테넌트 수준 활동 로그 이벤트 나열
테넌트 수준 활동 로그에는 일반적으로 제한된 항목이 있지만 관리 그룹 또는 구독 만들기와 같은 중요한 이벤트가 포함될 수 있습니다. 이러한 이벤트는 구독 수준 활동 로그와는 별개이지만 중복된 리소스 관리 이벤트를 포함할 수 있습니다. 테넌트 활동 로그 REST API를 사용하여 테넌트 수준 이벤트를 검색합니다.
테넌트 수준 활동 로그 이벤트를 나열하려면 az rest Azure CLI 명령을 사용합니다.
az rest --method get \
--uri "/providers/Microsoft.Insights/eventtypes/management/values?api-version=2015-04-01&\$filter=eventTimestamp ge '2026-01-15T00:00:00Z' and eventTimestamp le '2026-03-29T23:59:59Z'"
관리 그룹 수준 활동 로그 이벤트 나열
관리 그룹 수준 활동 로그는 정책 할당 및 관리 그룹 멤버 자격 변경과 같은 특정 관리 그룹으로 범위가 지정된 이벤트를 캡처합니다.
관리 그룹 수준 활동 로그 이벤트를 나열하려면 az rest Azure CLI 명령을 사용합니다.
az rest --method get \
--uri "/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Insights/eventtypes/management/values?api-version=2017-03-01-preview&\$filter=eventTimestamp ge '2026-03-01T00:00:00Z' and eventTimestamp le '2026-03-29T23:59:59Z'"
다음 표에서는 앞의 예제에서 사용된 매개 변수에 대해 설명합니다.
| 매개 변수 | 설명 |
|---|---|
{subscriptionId} |
Azure 구독의 ID입니다. |
{resourceGroupName} |
리소스 그룹의 이름입니다. |
{managementGroupId} |
관리 그룹의 ID입니다. |
eventTimestamp ge / le |
ISO 8601 형식의 시간 범위의 시작 및 끝입니다. 더 긴 기간 동안 보존을 구성하지 않는 한 시작 날짜는 현재 날짜로부터 90일을 초과할 수 없습니다. |
변경 기록 보기
일부 이벤트의 경우 해당 이벤트 시간에 발생한 변경 기록이 표시된 변경 기록을 볼 수 있습니다. 더 자세히 보려는 활동 로그에서 이벤트를 선택합니다. 변경 기록 탭을 선택하여 작업 시간 전후 최대 30분 전에 리소스의 변경 내용을 확인합니다.
변경 내용이 이벤트와 연결된 경우 포털에 선택 가능한 변경 내용 목록이 표시됩니다. 변경 내용을 선택하면 변경 내용 페이지가 열립니다. 이 페이지는 리소스에 대한 변경 내용을 표시합니다.
다음 예제에서는 VM의 크기가 변경되었음을 보여 줍니다. 페이지에는 변경 전과 변경 후의 VM 크기가 표시됩니다. 변경 기록에 대한 자세한 내용은 리소스 변경 가져오기를 참조하세요.
활동 로그 인사이트
활동 로그 인사이트는 구독의 리소스 및 리소스 그룹에 대한 변경 내용을 모니터링하는 대시보드 집합을 제공하는 통합 문서입니다. 또한 대시보드에는 구독에서 작업을 수행한 사용자 또는 서비스 및 활동 상태에 대한 데이터도 표시됩니다.
활동 로그 인사이트를 사용하도록 설정하려면 활동 로그를 Export 활동 로그 설명된 대로 Log Analytics 작업 영역으로 내보냅니다. 이 프로세스는 활동 로그 인사이트가 AzureActivity 사용하는 테이블로 이벤트를 보냅니다.
구독 또는 리소스 수준에서 활동 로그 인사이트를 열 수 있습니다. 구독하려면 모니터 메뉴의 통합 문서 섹션에서 활동 로그 인사이트를 선택하십시오.
개별 리소스의 경우 리소스 메뉴의 통합 문서 섹션에서 활동 로그 인사이트를 선택합니다.
활동 로그 내보내기
추가 보존 시간 및 기능을 위해 활동 로그 항목을 다른 대상으로 보내는 진단 설정을 만듭니다.
Azure 포털의
다음 섹션에서는 리소스 로그에 대해 구성 가능한 각 대상에 대한 세부 정보를 제공합니다.
비고
활동 로그를 내보내는 레거시 방법은 로그 프로필입니다. 레거시 컬렉션 방법을 참조하세요.
다음 기능을 위해 Log Analytics 작업 영역 활동 로그를 보냅니다.
- 로그 쿼리를 사용하여 활동 로그를 다른 로그 데이터와 상호 연결합니다.
- 활동 로그 경고보다 더 복잡한 논리를 사용할 수 있는 로그 경고를 만듭니다.
- Power BI 사용하여 활동 로그 데이터에 액세스합니다.
- 활동 로그 데이터를 90일 이상 보존합니다.
활동 로그에 대한 데이터 수집 요금은 없습니다. 활동 로그에 대한 보존 요금은 기본 보존 기간인 90일을 초과하여 연장된 기간에만 적용됩니다. 보존 기간을 최대 12년까지 늘릴 수 있습니다.
Log Analytics 작업 영역의 활동 로그 데이터는 AzureActivity 테이블에 저장됩니다. 이 테이블의 구조는 로그 항목의 범주에 따라 달라집니다.
예를 들어 각 범주에 대한 활동 로그 레코드 수를 보려면 다음 쿼리를 사용합니다.
AzureActivity
| summarize count() by CategoryValue
관리 범주에 있는 모든 레코드를 검색하려면 다음 쿼리를 사용합니다.
AzureActivity
| where CategoryValue == "Administrative"
관리 그룹 활동 로그 내보내기
관리 그룹에 대한 진단 설정 로그를 만들 때 계층 구조의 모든 관리 그룹 외에 해당 관리 그룹에 대한 모든 이벤트를 내보냅니다. 계층 구조의 여러 관리 그룹에 진단 설정이 있는 경우 중복 이벤트를 수신합니다. 계층 구조에 대한 모든 이벤트를 캡처하려면 최상위 수준 관리 그룹에 대한 진단 설정만 있으면 됩니다.
또한 관리 그룹은 그 아래의 모든 구독과 동일한 이벤트들을 많이 수집합니다. 구독 및 관리 그룹에 진단 설정이 있는 경우 중복 이벤트를 수신합니다. Azure Resource Manager는 이벤트를 작성할 때 계층 구조 속성을 포함하지만 필수 필드는 아닙니다. Azure Resource Manager 외부의 리소스 공급자는 이를 채우지 않기 때문에 그들의 이벤트가 계층 구조로 전파되지 않습니다. 따라서 중복 이벤트를 가져오는 것이 누락된 이벤트보다 낫습니다.
예를 들어, MG2가 포함된 MG1이 있고, 그 MG2에는 Subscription1이 포함되어 있는 경우, MG1의 진단 설정은 MG1과 MG2의 모든 활동 로그 이벤트를 캡처하며, Subscription1의 진단 설정에 의해 수집된 여러 이벤트도 캡처합니다. 이 경우 중복 이벤트를 수집하기 때문에 MG2에는 진단 설정이 필요하지 않습니다.
중복 이벤트가 있는 경우 모든 필드의 해시를 사용하여 고유한 레코드를 식별하는 쿼리를 사용하여 결합합니다. 다음 예제 Kusto 쿼리는 Log Analytics 작업 영역에서 수집된 로그에 대한 샘플을 보여 줍니다.
AzureActivity
| extend Hash = hash(dynamic_to_json(pack_all()))
| summarize arg_max(TimeGenerated, *) by Hash
CSV로 활동 로그 내보내기
CSV로 다운로드를 선택하여 활동 로그를 Azure Portal의 CSV 파일로 내보냅니다.
중요합니다
많은 수의 로그 항목을 내보내는 데 시간이 오래 걸릴 수 있습니다. 성능을 향상시키려면 내보내기의 시간 범위를 줄입니다. Azure Portal에서 Timespan 설정을 지정합니다.
다음 예제와 같이 PowerShell 또는 Azure CLI를 사용하여 활동 로그를 CSV 파일로 내보낼 수도 있습니다.
az monitor activity-log list --start-time "2024-03-01T00:00:00Z" --end-time "2024-03-15T23:59:59Z" --max-items 1000 > activitylog.json
다음 예제 PowerShell 스크립트는 각각 별도의 파일에 저장된 1시간 간격으로 활동 로그를 CSV 파일로 내보냅니다.
# Parameters
$subscriptionId = "Subscription ID here" # Replace with your subscription ID
$startTime = [datetime]"2025-05-08T00:00:00" # Adjust as needed
$endTime = [datetime]"2025-05-08T12:00:00" # Adjust as needed
$outputFolder = "\Logs" # Change path as needed
# Ensure output folder exists
if (-not (Test-Path $outputFolder)) {
New-Item -Path $outputFolder -ItemType Directory
}
# Set subscription context
Set-AzContext -SubscriptionId $subscriptionId
# Loop through 1-hour intervals
$currentStart = $startTime
while ($currentStart -lt $endTime) {
$currentEnd = $currentStart.AddHours(1)
$timestamp = $currentStart.ToString("yyyyMMdd-HHmm")
$csvFile = Join-Path $outputFolder "ActivityLog_$timestamp.csv"
Write-Host "Fetching logs from $currentStart to $currentEnd..."
Get-AzActivityLog -StartTime $currentStart -EndTime $currentEnd |
Export-Csv -Path $csvFile -NoTypeInformation
$currentStart = $currentEnd
}
Write-Host "Export completed. Files saved to $outputFolder."
리소스 생성 식별
활동 로그를 사용하여 시스템에서 리소스를 만든 시기와 리소스를 만든 사용자를 확인합니다. 활동 로그는 리소스 작성자를 저장하는 유일한 위치입니다. 활동 로그는 기본적으로 90일 동안만 데이터를 보존하므로 Log Analytics 작업 영역과 같이 보존 기간을 연장할 수 있는 위치로 로그를 내보내야 합니다. 그런 다음 테이블을 쿼리하여 리소스 작성자를 찾습니다 AzureActivity . 데이터는 이 테이블의 보존 기간에 지정한 기간 동안 보존됩니다.